【问题标题】:Sum of digits in C++C ++中的数字总和
【发布时间】:2021-11-14 01:52:01
【问题描述】:

要求的程序是数字的总和:

输入数据格式如下: 第一行包含 N - 要处理的值的数量; 然后 N 行将描述数字总和应由 3 个整数 A B C 计算的值; 对于每种情况,您需要将 A 乘以 B 并添加 C(即 A * B + C) - 然后计算结果的位数之和。

答案应该有N个结果,同样用空格隔开

我的 C++ 代码:

#include <iostream>

using namespace std;

int main ()
{
    int n, a, b, c, t, sum = 0;
    cin >> n;
  
    for (int i = 0; i < n; i++)
    {
        cin >> a >> b >> c;
        t = a * b + c;
    
        while (t % 10 != 0)
        {
            sum = sum + t % 10;
            t = t / 10;
        }

        while (t % 10 == 0)
        {
            sum = sum;
            t = t / 10;
        }
    }
    
    cout << " ";
    cout << sum;
    cout << " ";

    return 0;
}

我很难纠正我的代码。

感谢任何帮助。

我的假设是除了使用 2 个 while 循环之外,应该有更好的编码方式。

PS:我检查了其他主题只是希望有人可以帮助我的代码谢谢。

【问题讨论】:

  • 你的第二个循环在做什么? sum = sum; 看起来很可疑。
  • 提示:你的条件应该是t &gt; 0
  • sum = 0; while (t) { sum += t % 10; t /= 10; } 另外,如果不确定发生了什么,请使用调试器。此外,在for-cycle outside 打印出sum 并没有真正的帮助。
  • 您的问题是什么?如果您希望有人审查您的代码,请使用 CodeReview!

标签: c++ sum-of-digits


【解决方案1】:

您不需要第二个while 循环,第一个应更正为while (t != 0)。之后,您计算总和的程序就可以正常工作了。

Try it online!

#include <iostream>

using namespace std;

int main ()
{
    int n, a, b, c, t, sum = 0;
    cin >> n;
  
    for (int i = 0; i < n; i++)
    {
        cin >> a >> b >> c;
        t = a * b + c;
    
        while (t != 0)
        {
            sum = sum + t % 10;
            t = t / 10;
        }
    }
    
    cout << " ";
    cout << sum;
    cout << " ";

    return 0;
}

输入:

1
123 456 789

输出:

33

刚刚注意到您需要N 单独的输出而不是单个总和(就像您所做的那样),所以您的程序变成这样:

Try it online!

#include <iostream>

using namespace std;

int main ()
{
    int n, a, b, c, t, sum = 0;
    cin >> n;
  
    for (int i = 0; i < n; i++)
    {
        cin >> a >> b >> c;
        t = a * b + c;

        sum = 0;
    
        while (t != 0)
        {
            sum = sum + t % 10;
            t = t / 10;
        }

        cout << sum << " ";
    }
    
    return 0;
}

输入:

2
123 456 789
321 654 987

输出:

33 15 

【讨论】:

    猜你喜欢
    • 2010-10-03
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多