【问题标题】:Sum of digits with test cases in CC中测试用例的数字总和
【发布时间】:2020-04-22 21:47:39
【问题描述】:

我正在尝试使用测试用例查找数字的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

【问题讨论】:

  • 另外使r = 0
  • 在每次接受新用户输入的迭代中重置 sum 的值

标签: c sum-of-digits


【解决方案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);
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-03
        • 1970-01-01
        • 2022-01-09
        • 1970-01-01
        • 2019-03-24
        • 1970-01-01
        相关资源
        最近更新 更多