我应该如何解决除数程序 C++ 中的计数问题

问题描述

大家好,我最近开始学习 C++,今天我在这个程序中遇到了计算除数的问题 我希望我的程序准确计算除数的数量,但输出显示奇怪的数字:/

#include <iostream>
using namespace std;
int main(void)
{
    int Lowest;
    int Highest;
    int count = 0;

    cout << "Enter The Lowest Number Of Series: ";
    cin >> Lowest;
    cout << "Enter The Highest Number Of Series: ";
    cin >> Highest;

    cout << "\n Number -> Divisors ((count)) \n";

    for (int i = Lowest; i <= Highest; i++)
    {
        cout << " " << i << " ->";
        for (int j = 1; j <= i; j++)
        {
            if (i % j == 0)
            {
                count++;                                                              // WTF 
                cout << " " << j;
            }
        }
        cout << " (( count:" << count << " )) " << endl;
    }
    return 0;
}

例如,Lower=1 到 Highest=10 的输出是这样的:

Enter The Lowest Number Of Series: 1
Enter The Highest Number Of Series: 10

Number -> Divisors ((count))
 1 -> 1 (( count:1 ))
 2 -> 1 2 (( count:3 ))
 3 -> 1 3 (( count:5 ))
 4 -> 1 2 4 (( count:8 ))
 5 -> 1 5 (( count:10 ))
 6 -> 1 2 3 6 (( count:14 ))
 7 -> 1 7 (( count:16 ))
 8 -> 1 2 4 8 (( count:20 ))
 9 -> 1 3 9 (( count:23 ))
 10 -> 1 2 5 10 (( count:27 ))

你们知道哪里出了问题吗?

解决方法

正如@cigien 的评论所指出的,您的 count 变量永远不会被重置为零,因此它只是不断地计数。在外循环的每次迭代之间重置它。更好的是,将声明移动到最近使用它的地方:

#include <iostream>
using std::cin;
using std::cout;  // only using what you need

int main()
{
    int Lowest;
    int Highest;

    cout << "Enter The Lowest Number Of Series: ";
    cin >> Lowest;
    cout << "Enter The Highest Number Of Series: ";
    cin >> Highest;

    cout << "\n Number -> Divisors ((count)) \n";

    for (int i = Lowest; i <= Highest; i++)
    {
        int count = 0;  // <-- initialize to zero on every pass
        cout << " " << i << " ->";
        for (int j = 1; j <= i; j++)
        {
            if (i % j == 0)
            {
                count++;
                cout << " " << j;
            }
        }
        cout << " (( count:" << count << " )) \n";
    }
    return 0;
}