一道c语言数组编程题 编写程序求一个整数各位数字之和。 要求: 1) 输入一个整数。 2) 把这个整数各位数字

如题所述

这道题的关键在于分离数字,分离方法可以用这种方法,比如,用119来实现分离,根据题目要求结果为1+1+9=11对吧,我们通过这样来分离,(1)用119%10,就是119除以10的余数是9对吧?聪明的你现在就应该发现9被分离出来了吧(2)接着分离十位数,119/10的结果只能为整数是11对吧,再用11%10,11除以10的余数为1对吧?是不是又把1分离出来了(3)最后就是百位数了,11/10的结果为1对吧,百位数也分离出来了(4)最后我们只需要吧他们相加不就完了。
里面还有个地方就是分离的结束条件,就是什么时候分离结束,当分离整除出来那个数小于10的时候就结束了
在分离过程中我们可以使用数组来存储分离出来的数。
具体代码如下:
/*方法一为递归方法解答,本人觉得此方法更简单,能理解最好*/
#include <stdio.h>
int show(int num)
{
if(num<10)
return num;/*递归出口*/
else
return num%10+show(num/10);
}
void main()
{
int num,sum;
printf("请输入一个整数:");
scanf("%d",&num);
sum=show(num);
printf("各位数之和的结果为:%d\n",sum);
}
/*方法二用数组做的,做法可能过于复杂,不要建议,有好的方法大家分享*/
#include <stdio.h>
void main()
{
int value[10];
int num;
printf("请输入一个整数:");
scanf("%d",&num);
while(num<0||num>=10000)
{
printf("此代码暂时只支持10000以下的4位数的计算,输入整数无效!请重新输入:");
scanf("%d",&num);
}
if(num>=0&&num<10)
printf("结果为:%d\n",num);
else if(num>=10&&num<100)
{
value[0]=num%10;
value[1]=num/10;
printf("结果为:%d\n",value[0]+value[1]);
}
else if(num>=100&&num<1000)
{
value[0]=num%10; /*分离个位数*/
value[1]=num/10; /*得出新的待分离数*/
value[2]=value[1]%10; /*分离出十位数*/
value[3]=value[1]/10; /*得到百位数*/
printf("结果为:%d\n",value[0]+value[2]+value[3]);
}
else
{
value[0]=num%10; /*分离个位数*/
value[1]=num/10; /*得出新的待分离数*/
value[2]=value[1]%10; /*分离出十位数*/
value[3]=value[1]/10; /*得出新的待分离数*/
value[4]=value[3]%10; /*得出百位数*/
value[5]=value[3]/10; /*得出千位数*/
printf("结果为:%d\n",value[0]+value[2]+value[4]+value[5]);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-02
#include"stdio.h"
#include"stdlib.h"
int main()
{
int x,sum=0,num[100];
int i=0;
printf("请输入整数:");
scanf("%d",&x);
while(x>9)
{
i++;
num[i]=x%10;//求出最后的一个位数值并进行保存,例如123,这里先保存3,在保存2,最
/后是1
sum+=x%10;//各个数位相加,从后向前加
x=x/10;//去掉最后一位
}
i++;
sum+=x;//加上第一位
for(int j=i;j>0;j++)
printf("第%d位数字是:%d\n",i-j+1,num[j]);//打印各个位数的值
printf("sum=%d\n",sum);//打印出各个位数之和
system("pause");//暂停
return 0;
}
第2个回答  2011-05-02
#include <stdio.h>
int main()
{
char a[100];
int sum;
int i;

printf("input a number:\n");
gets(a);

i = 0;
while(a[i])
{
i++;
}
i--;

sum = 0;
while(i>-1)
{
sum = sum + a[i] - '0';
i--;
}

printf("sum is %d\n",sum);
return 0;
}

运行效果:
C:\Documents and Settings\Owner\桌面>test.exe
input a number:
486135
sum is 27

C:\Documents and Settings\Owner\桌面>
第3个回答  2011-05-02
#include<stdio.h>
void main()
{
int x,sum=0;
printf("请输入整数:");
scanf("%d",&x);
while(x!=0)
{
sum+=x%10;
x=x/10;
}
printf("sum=%d\n",sum);
}
第4个回答  2011-05-03
#include "stdio.h"
#include "stdlib.h"
int getCharCount(char *sz,char ch,int len)
{
int i = 0;
int icount =0;
for(i=0;i<len,i++)
{
if(*sz == ch)
icount = icount +1;
sz++;

}
return icount;
}
void main()
{

char sz[10]=;
int iCnt=0;
iCnt = getCharCount(sz,'a',10);

printf("a 的个数为 %d",iCnt);

getche();

}
相似回答