我正在尝试找到测试用例的数字总和。但是问题是在我找到一个和之后,这个和加到了下一个和上,但是我只有那个数字的一个特定和。请帮忙。这是我的代码:
#include <stdio.h>
int main() {
int t, n, i, r, sum=0;
scanf("%d", &t);
for(i=0; i<t; i++) {
scanf("%d", &n);
while(n>0) {
r = n % 10;
sum = sum + r;
n = n / 10;
}
printf("%d\n", sum);
}
return 0;
}
这是我的输出:
3
1234
10
2347
26
8744
49
为什么前一个添加到下一个?我不明白。
我想要的输出:
3
1234
10
2347
16
8744
23
问题:
您的变量sum
在程序启动时设置为0
,并且您将每个测试用例的总和添加到同一变量中,而不会清除前一个测试用例的结果(通过在测试开始之前设置sum = 0
下一个测试用例开始。)
可能的解决方案:
在测试用例开始之前初始化变量sum
。
代码:
for(i=0; i<t; i++)
{
scanf("%d", &n);
sum = 0; //Set sum = 0
//Test Case started in while loop
while(n>0) {
r = n % 10;
sum = sum + r;
n = n / 10;
}
printf("%d\n", sum);
}
在循环开始时,将sum
设置为0
。这样,在对下一组元素求和之前,它会被初始化为零。
for(i=0; i<t; i++)
{
sum = 0;
scanf("%d", &n);
您需要在sum=0;
循环的第一行上设置for
。