gpt4 book ai didi

c - 找出数字的数字总和(在c中)

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:03 25 4
gpt4 key购买 nike

我需要求出一个数字的数字之和。比如1123这个数的各位数字之和就是1+1+2+3 =7

我的想法:

1)用户输入和整数

2)我计算数字中的位数(在上述情况下 - 4 位)

3) 比起使用 for 循环,我将用户数除以 10 的 1,2 次方...直到位数(不包括最后一位),然后对数字求和。

这是我的代码:

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 我知道我的问题存在更有效的解决方案,但我想使用我自己的算法。

最佳答案

这里有几个问题:

  • 当你第一次进入while循环时,result还没有被初始化。试图读取未初始化的变量是 undefined behavior .
  • 做除法时,您并不是在加数字。您添加的是除以 10 的连续幂的数字。对于 1123,您实际上添加的是 112 + 11 + 1。您需要使用模而不是除法来获取数字。

您可以按如下方式在单个循环中添加和计算数字:

sum = 0;
while(number > 0){
sum += number % 10;
number /= 10;
++counter;
}
printf("The number consists of %i digits\n",counter);
printf("%i",sum);

关于c - 找出数字的数字总和(在c中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39230648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com