C ++ for循环没有其他方式的输出

时间:2013-11-28 17:37:14

标签: c++ for-loop

我一直在为我的练习编写一些代码,现在我遇到了麻烦。 我需要找到输入数字的除数并将它们输出到文件中 例如:
输入: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 ();
}

3 个答案:

答案 0 :(得分:2)

而不是输出sk/i,而只输出i

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

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

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

答案 1 :(得分:0)

你的循环有错误的条件:

  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 << " ";
    }

答案 2 :(得分:0)

如果需要从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