-2

要求的程序是数字总和:

输入数据采用以下格式: 第一行包含 N - 要处理的值的数量;然后 N 行将描述数字总和应由 3 个整数 ABC 计算的值;对于每种情况,您需要将 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:我检查了其他主题只是希望有人可以帮助我的代码谢谢。

4

1 回答 1

1

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

在线尝试!

#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单独的输出而不是单个总和(就像您所做的那样),所以您的程序变成这样:

在线尝试!

#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 
于 2021-11-14T03:48:27.327 回答