C++求//求自然数n中各位数字之和(n由用户输入)感谢

#include<iostream>
using namespace std;
int main()
{
int a,b,c,i,sum=0;
do{
a=i/100;
b=(i-a*100)/10;
c=i%10;
sum=sum+a*100+b*10+c;
i++;
}
while(i<=1000);
cout<<"sum= "<<sum<<endl;

return 0;
}
//使用do while语句啊 求高手解答下 ,十分感谢。(也看看我的错误在那里)

题目是不是:输入1个正整数,求各位数字之和,如果是,程序如下:
#include <iostream>using namespace std;
#include<iostream>
using namespace std;
int main()
{
int a,b,c,i,sum=0;

cout << "input a int please" << endl;
cin >> i;

do{
a=i%10;
b= (i-a)/10;
sum=sum+a;
if (b==0) break;
i = b;
}
while(1);

cout<<"sum= "<<sum<<endl;
return 0;
}追问

a=i%10;
b= (i-a)/10;
sum=sum+a;
if (b==0) break;
i = b;
}
while(1);
这每步都是什么意思 解释下好吗? 还有 只有取a,b 为什么我去五为数也可以啊?

追答

a=i%10; -- 取个位数
b= (i-a)/10; -- 减个位数再除以10,这就去掉了最右这位数字。
sum=sum+a; -- 累加 刚取得的 那位数
if (b==0) break; -- 数已取完,退出循环
i = b; 更新 i, 回循环体开始处,做下一次循环。

五为数 -- 1位,2位,3位,4位 ... 只要 int 范围内的数都可以。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-13
i没初始化
你的程序太多冗杂了,也不知道在干什么
i初始化 如i=100;
是各位数字之和吗?那直接用sum = i/100 + i/10%10 + i%10;
如果是所有的100到1000的数的话,再加一句sumAll+=sum;追问

还是不懂 能写下吗?

相似回答