在c ++中,在for循环中,如何打印一次字符串

时间:2018-03-17 22:15:04

标签: c++ string for-loop int

我正在处理的是一个嵌套的for循环,它找到了完美的数字。找到完美数字的迭代很快就出现了。但是,我需要输出显示一个字符串,表示"找到完美的数字"并且发生过一次。然后在同一行,打印出所有完美的数字。例如,假设我有两个输入,1到30。

这意味着完美的数字是6和28。 输出应该是这样的。

完美数字:6 28.

我感到困惑的是如何在我创建的for循环中打印出一次该字符串。这是我到目前为止所拥有的。

#include <iostream>

int main()
{
    int a, b;
    std::cin >> a >> b;
    int count = 0;

    for (int i = a; i <= b; i++)
    {
        int sum = 0;
        for (int j = 1; j <= i; j++)
        {
            if (i % j == 0)
            {
                sum += j;
            }
        }
        if (i * 2 == sum)
        {
            std::cout << i << " ";
            count++;
        }
    }
    std::cout << "\n";
    std::cout << "number of perfect numbers found: " << count << std::endl;

    return 0;
}

2 个答案:

答案 0 :(得分:0)

为什么“在for循环中”?在进入for循环之前执行此操作。

或者,如果您想确保在自己打印该字符串之前找到至少一个完整的数字,那么在您打印出各个值的行上,而不是:

std::cout << i << " ";

只是说:

std::cout << (count == 0 ? "Perfect numbers: " : "") << i << " ";

答案 1 :(得分:0)

你可以尝试这样的东西,然后用cout添加印刷品

for(i=start; i<=end; i++)
    {
        sum = 0;

        /* Check whether the current number i is Perfect number or not */
        for(j=1; j<i; j++)
        {
            if(i % j == 0)
            {
                sum += j;
            }
        }

        /* If the current number i is Perfect number */
        if(sum == i)
        {
            cout <<i<<" ,";
        }
    }