1

我正在尝试sum使用测试用例查找数字。但问题是在我找到一个之后sum,这sum会添加到下一个,sum但我只有一个特定sum的数字。请帮忙。这是我的代码:


#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

为什么我以前sum的添加到下一个sum?我不理解。

我想要的输出:

3
1234
10
2347
16
8744
23

4

3 回答 3

2

问题:

您的变量在程序开始时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);
}
于 2020-01-04T18:37:36.050 回答
0

在循环开始时设置sum0. 因此,在对下一组元素进行求和之前,它会重新初始化为零。

for(i=0; i<t; i++) 
  { 
    sum = 0;
    scanf("%d", &n);
于 2020-01-04T18:34:54.227 回答
0

您需要将您的设置在循环sum=0;的第一行。for

于 2020-01-04T18:35:48.943 回答