我需要找到一个数字的数字的总和。例如,的数量1123的位数之和为1 + 1 + 2 + 3 = 7找到一个数字的数字总和(在c)
我的主意:
1)用户输入和整数
2)I计算的数数字中的数字(在上述情况下为-4位)
3)比使用for循环我将用户数除以10的幂数...直到数字位数(不包括最后一个)并将这些数字相加。
这里是我的代码:
int main (void)
{
int result,sum,n;
int div = 10,counter = 0,number;
printf("Enter the integer:");
scanf("%i",&number);
while(result >0){
result = number/div;
div *= 10;
++counter;
}
printf("The number consists of %i digits\n",counter);
sum = 0;
for(n=1;n<counter;++n){
sum += number/pow(10,n);
}
printf("%i",sum);
return 0;
}
第一部分(while循环)单独工作正确。但是与第二部分(for循环)一起,它给了我不正确的结果(while循环中的0位数和总和也为零)。你能解释为什么会发生? 我该如何纠正我的解决方案?
P.S我知道存在我的问题的更有效的解决方案,但我想用我自己的算法。
不直接输入到一个int。输入为一个字符串。这使得长度计算变得微不足道,然后你将字符串视为字符aarray并循环单个数字,将它们转换为int并将其相加 –
通过除以10的幂数,您将不会获得数字。你需要和它一起使用模数'10'。 –
'div * = 10;'溢出后会出现问题。 – chux