c语言函数求和公式,c语言输入任意个整数求和

1,c语言输入任意个整数求和void Calcu(int Num)int sum=0;intbitNum=0;int temp=Num;while(temp>0)sum+=temp%10;//取得个位bitNum+=1;//位数temp/=10;//去掉个位.}printf("位数:%d,各位和:%d",bitNum,sum);}【c语言函数求和公式,c语言输入任意个整数求和】
2 , 求和值C语言#include<stdio.h>int main() int i; int n,a,s,temp; scanf("%d%d",&n,&a); s = a; temp = a; for( i = 2 ; i <= n ; i++)temp = temp*10 + a; //每次乘以10加a,就又原来的a变成aa一直变到aaaaa..... s += temp; } printf("s=%d",s); return 0;}
3 , c语言数列求和其实这个题目根本不用求出S,也不用担心它会超出int范围 。因为是数列,所以就要从数列规律上去找结果 。比如a=1,n=5,s=3.列竖式111111111111111 ------12345 后3位是345. 个位是5,它是怎么计算出来的?a*n 十位是4,怎么算出来的?a*(n-1)+个的进位(如果有) 百位是3,怎么算出来的?a*(n-2)+低位的进位(如果有) 照这个规律,根本不用计算S 。定义一个数组int sm[10].sm[0]保存个位,sm[1]保存十位数字就行了,。。。我没有写出完整的程序,只是给你一个思路 。自己理解一下,很好写出代码 。遇到问题请教是好事 。
4 , c语言2数求和只输入一个数的,因为和scanf要求的"%d+%d"的格式不符,导致scanf读取数据错误,b没被赋值,仍保留声明时编译器给它赋的随机值.#include<stdio.h>#include<malloc.h>int n,sn;//数的个数,求和的数的个数int *set;int *a;int r[3];bool *f;void init() scanf("%d",&n); set=(int *)malloc(n*sizeof(int)); f=(bool *)malloc(n*sizeof(bool)); a=(int *)malloc(n*sizeof(int)); for(int i=0;i<n;i++) scanf("%d",&set[i]); f[i]=false; a[i]=-1; } scanf("%d",&sn);}void push(int i) for(int j=0;j<n;j++) if(a[j]==-1)}}void backtrace(int l) if(l>=3) printf("%d+%d+%d=%d\n",r[0],r[1],r[2],r[0]+r[1]+r[2]); return; } for(int i=0;i<n;i++) if(!f[i])r[l]=set[i]; f[i]=true; backtrace(l+1); f[i]=false; } }}int main() init(); backtrace(0); return 0;}5,C语言求和2int put_int_sum(int a, int b) if(a == 0 && b == 0) return 0; } printf("%d\n", a+b); return 1;}第一题答案:/* note:your choice is c ide */#include "stdio.h"/*值传递方法,结果通过return语句返回*/int fun1(int m,int n) int i,j,s=0; for(i=1;i<=m;i++) for(j=1;j<=n;j++) s=s+(2*i-j); } } return s;}/*地值传递方法 , 结果通过指针p返回*/void fun2(int m,int n,int *p) int i,j,s=0; for(i=1;i<=m;i++) for(j=1;j<=n;j++) s=s+(2*i-j); } } *p=s;}/*主函数*/void main()int m=4,n=2,sum;sum=fun1(m,n);printf("\n值传递方法所求的和为:%d\n",sum);sum=0;fun2(m,n,&sum);printf("\n地址传递方法所求的和为:%d\n",sum);}运行结果:第二题答案:/* note:your choice is c ide */#include "stdio.h"/*值传递方法,结果通过return语句返回*/int fun1(int m,int n) int i,j,s=0; for(i=1;i<=m;i++) for(j=1;j<=n;j++) s=s+i*j; } } return s;}/*地值传递方法 , 结果通过指针p返回*/void fun2(int m,int n,int *p) int i,j,s=0; for(i=1;i<=m;i++) for(j=1;j<=n;j++) s=s+i*j; } } *p=s;}/*主函数*/void main()int m=4,n=3,sum;sum=fun1(m,n);printf("\n值传递方法所求的和为:%d\n",sum);sum=0;fun2(m,n,&sum);printf("\n地址传递方法所求的和为:%d\n",sum);}运行结果:

    推荐阅读