正整数的各位数字之和被Tom称为Tom数。求输入数(<2^32)的Tom数!
#include <stdio.h>void main()
{
int num = 0,i = 0,we = 1,res= 0;
scanf("%d",&num);
while(num/10!=0)
{
we++;
num = num /10;
}
for(i=1;i<=we;i++)
{
res = res + num%10;
num = num /10;
}
printf("%d\n",res);
}请高手们看哈哪里错了 ,我觉得是对的 ,为什么输出来的是第一个数,1%10=1对吧?1/10=0是吧?
你的num早在while循环里就变的只有各位数了,能对吗,可以直接在while循环里就能算出结果的,干嘛多此一举 num在while循环里面就已经被改变了(而且你取位数的方法也不对,最高位根本去不下来,(比如说123,取到最高位1时因为1/10==0直接跳出了while循环)),
再到for循环里面是被改变的值(1)进行计算了,所以出来的结果一定是最高位来着。这个代码我小改下就能用的,但我认为这并
不很科学
#include <stdio.h>
void main()
{
int num = 0,i = 0,we = 1,res= 0, t=0;
scanf("%d",&num);
t=num;
while(num/10!=0)
{
we++;
num = num /10;
}
for(i=1;i<=we;i++)
{
res = res + t%10;
t = t /10;
}
printf("%d\n",res);
}
不知道你的所谓Tom数是不是就是个十百千各个位的数值相加,如果是的话你的逻辑有点问题哦,
下面是修改代码:vs2008
#include <stdio.h>
void main()
{
int num = 0,i = 0,we = 1,res= 0;
int nRemainder = 0;
scanf("%d",&num);
while(num/10!=0)
{
// we++;
nRemainder = num%10;
num = num /10;
res +=nRemainder;
}
res += num;
printf("%d\n",res);
getchar();
getchar();
}
奕之璞□烈倪 发表于 2013-3-9 23:37 static/image/common/back.gif
num在while循环里面就已经被改变了(而且你取位数的方法也不对,最高位根本去不下来,(比如说123,取到最高 ...
我知道,我初始化时we=1,就是num在while循环里面就已经被改变了,这里忽略了!!!谢谢你了 你的num早在while循环里就变的只有各位数了,能对吗,可以直接在while循环里就能算出结果的,干嘛多此一举 帮顶
页:
[1]