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

问题描述 投票:1回答:3

我正在尝试找到测试用例的数字总和。但是问题是在我找到一个和之后,这个和加到了下一个和上,但是我只有那个数字的一​​个特定和。请帮忙。这是我的代码:


#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

c sum-of-digits
3个回答
1
投票

问题:

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

0
投票

在循环开始时,将sum设置为0。这样,在对下一组元素求和之前,它会被初始化为零。

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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.