天语kis3w刷机包:c ,编程。输入一个小于1000的正整数,计算它各位上的数字之和。例,输入234,输出结果为9。

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 07:09:08

#include<stdio.h>
main()
{
int i;
while(scanf("%d",&i)==1)
{
if((i<=0)||(i>=1000))
printf("error\n");
else
printf("%d\n",i/100+(i%100)/10+i%10);
}
getch();
}

main()
{
int sum = 0,num =-1;
for(;num < 0 || num > 1000;)
{
scanf("%d",&num);
}
for(;num > 0;num /= 10)
{
sum += (num %10);
}
printf("%d",sum);
}

#include<iostream.h>
void main()
{
int i,s=0,n;
cout<<"请输入一个在1000之内的正整数"<<endl;
wihle(i>=10)
{n=i%10;
i=i/10;
s=s+n;}
s=s+i;
cout<<s<<endl;
}

}

2楼的方法太麻烦.
3~5楼的方法其实是一个思想的不同实现形式:
===============
若数字大于10,说明不是个位数,将余数累加后反复将数字除以10,比较,累加余数.这样可以从低位开始往前得到每一位的数字.当数字小于10,说明只剩最高一位了,直接累加即可.
===============
这种思想可以用于任意位的数字.
--------------
如输入12345,
第一次除以10,取余得到5,累加5,1234>10,继续;
第二次除以10,余4,累加4,123>10,继续;
第三次除以10,余3,累加3,12>10,继续;
第四次除以10,余2,累加2,1<10,累加1,结束.

最后结果为5+4+3+2+1=15
--------------
按照这种思想,几位的数都不是问题.

把正整数直接除以100,得到百位的数字
正整数除以100的余数再除以10,得到十位的数字。
正整数除以10的余数就是个位数字。

int a;
cin>>a;

int total=0;
while(1)
{
total+=a%10;
a=a/10;
if(a==0)
break;
}