用于循环的C++没有以其他方式输出

C++ for loop no output in other way

本文关键字:其他 方式 输出 循环 C++ 用于      更新时间:2023-10-16

我一直在为我的练习编写一些代码,现在我遇到了麻烦。我需要找到输入数的除数,并将它们输出到文件中
示例:
输入:30
输出:1 2 3 5 6 10 15 30
这工作得很好,但答案是:30 15 10 6 5 3 2 1(从另一边,但我需要从1到…)

#include <fstream>
using namespace std;
int main()
{
    int sk; // number
    ifstream fd ("input.txt");
    ofstream fr ("output.txt");
    fd >> sk;
    for (int i = 1; i < sk++; i++){
        if (sk % i == 0) fr << sk/i << " ";
    }
    fd.close ();
    fr.close ();
}       

我试过了,但没用,怎么了?

#include <fstream>
using namespace std;
int main()
{
    int sk; // number
    ifstream fd ("input.txt");
    ofstream fr ("output.txt");
    fd >> sk;
    for (int i = sk; i < 0; i--){
        if (sk % i == 0) fr << sk/i << " ";
    }
    fd.close ();
    fr.close ();
}

不输出sk/i,只输出i

你的i正在按升序增加。但你正在输出它的对应因子1st。因此,它是按递减顺序输出的。

此外,在第二个循环中,将终止条件更改为i>=1:

for (int i = sk; i >= 1; i--){

您的循环有错误的条件:

  for (int i = sk; i < 0; i--){
        if (sk % i == 0) fr << sk/i << " ";
    }

在条件i<0,它从不进入循环。应该是:

for (int i = sk; i >0 0; i--){
        if (sk % i == 0) fr << sk/i << " ";
    }

如果您需要从1到sk的输出,for循环必须如下所示:

#include <fstream>
using namespace std;
int main()
{
    int sk; // number
    ifstream fd ("input.txt");
    ofstream fr ("output.txt");
    fd >> sk;
    for (int i = 1; i <= sk; i++)
        if (sk % i == 0) fr << i << " ";
    fd.close ();
    fr.close ();
}

这将输出1 2 3 5 6 10 15 30

相关文章: