C语言编程题求解!!!

6、编写一个函数计算任一输入的整数的各位数字之和。主函数包括输入输出和调用该函数。

#include<stdio.h>
int fun(int n)
{int s=0;while(n) {s+=n%10;n=n/10;}
return s;}
main()
{int n;
scanf("%d",&n);
printf("%d\n",fun(n));}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-30
这是C语言里面一个很基本的问题,方法很多啊,给你个思路,先判断输入的是几位数,用求余方法知道吧。然后设置一个数组,先对10求余得最低位数字,然后依次对100,,1000,等等求余,直到你把所有的数字求出来为止,然后相加本回答被网友采纳
第2个回答  2010-12-30
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
#include<LIMITS.H>
int main()
{
long iIn;
printf("Please input a integer number from 0 to 99999999.\n");
scanf("%d",&iIn);
int iSum=0,iTemp[10]={0};
if((iIn-99999999)>0 || iIn<0)
{
printf("The number you input is too big or smaller than 0 !\n");
exit(1);
}
else
{
if(abs(iIn)>=0 && abs(iIn)<10)
{
iIn=abs(iIn);
iSum+=iIn;
}
else if(abs(iIn)>=10 && abs(iIn)<100)
{
iIn=abs(iIn);
iTemp[0]=iIn/10;iTemp[1]=iIn%10;
iSum+=iTemp[0]+iTemp[1];
}
else if(abs(iIn)>=100 && abs(iIn)<1000)
{
iIn=abs(iIn);
iTemp[0]=iIn/100;iTemp[1]=iIn/10%10;iTemp[2]=iIn%10;
iSum+=iTemp[0]+iTemp[1]+iTemp[2];
}
else if(abs(iIn)>=1000 && abs(iIn)<10000)
{
iIn=abs(iIn);
iTemp[0]=iIn/1000;iTemp[1]=iIn/100%10;iTemp[2]=iIn/10%10;
iTemp[3]=iIn%10;
iSum+=iTemp[0]+iTemp[1]+iTemp[2]+iTemp[3];
}
else if(abs(iIn)>=10000 && abs(iIn)<100000)
{
iIn=abs(iIn);
iTemp[0]=iIn/10000;iTemp[1]=iIn/1000%10;iTemp[2]=iIn/100%10;
iTemp[3]=iIn/10%10;iTemp[4]=iIn%10;
iSum+=iTemp[0]+iTemp[1]+iTemp[2]+iTemp[3]+iTemp[4];
}
else if(abs(iIn)>=100000 && abs(iIn)<1000000)
{
iIn=abs(iIn);
iTemp[0]=iIn/100000;iTemp[1]=iIn/10000%10;iTemp[2]=iIn/1000%10;
iTemp[3]=iIn/100%10;iTemp[4]=iIn/10%10;iTemp[5]=iIn%10;
iSum+=iTemp[0]+iTemp[1]+iTemp[2]+iTemp[3]+iTemp[4]+iTemp[5];
}
else if(abs(iIn)>=1000000 && abs(iIn)<10000000)
{
iIn=abs(iIn);
iTemp[0]=iIn/1000000;iTemp[1]=iIn/100000%10;iTemp[2]=iIn/10000%10;
iTemp[3]=iIn/1000%10;iTemp[4]=iIn/100%10;iTemp[5]=iIn/10%10;iTemp[6]=iIn%10;
iSum+=iTemp[0]+iTemp[1]+iTemp[2]+iTemp[3]+iTemp[4]+iTemp[5]+iTemp[6];
}
else if(abs(iIn)>=10000000 && abs(iIn)<100000000)
{
iIn=abs(iIn);
iTemp[0]=iIn/10000000;iTemp[1]=iIn/1000000%10;iTemp[2]=iIn/100000%10;
iTemp[3]=iIn/10000%10;iTemp[4]=iIn/1000%10;iTemp[5]=iIn/100%10;
iTemp[6]=iIn/10%10;iTemp[7]=iIn%10;
iSum+=iTemp[0]+iTemp[1]+iTemp[2]+iTemp[3]+iTemp[4]+iTemp[5]
+iTemp[6]+iTemp[7];
}
else if(abs(iIn)>=100000000 && abs(iIn)<1000000000)
{
iIn=abs(iIn);
iTemp[0]=iIn/100000000;iTemp[1]=iIn/10000000%10;iTemp[2]=iIn/1000000%10;
iTemp[3]=iIn/100000%10;iTemp[4]=iIn/10000%10;iTemp[5]=iIn/1000%10;
iTemp[6]=iIn/100%10;iTemp[7]=iIn/10%10;iTemp[8]=iIn%10;
iSum+=iTemp[0]+iTemp[1]+iTemp[2]+iTemp[3]+iTemp[4]+iTemp[5]
+iTemp[6]+iTemp[7]+iTemp[8];
}
printf("The sum of %ld's every number is :%2d\n",iIn,iSum);
}
getchar();
return 0;
}

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网