C中带有测试用例的数字总和

Sum of digits with test cases in C

我正在尝试找到带有测试用例的 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

在循环的开头将 sum 设置为 0。因此,在对下一组元素求和之前,它被初始化为零。

for(i=0; i<t; i++) 
  { 
    sum = 0;
    scanf("%d", &n);

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

问题:

您的变量 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);
}