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