查找最大除数的程序返回0

Program to find greatest divisors returns 0

本文关键字:程序 返回 查找      更新时间:2023-10-16

我最近才想尝试学习如何编码。我在网上找到了一些基本的练习,但是我坐了大约40分钟,还是想不出来。所以,即使这对你们大多数人来说似乎是基本的,我还是要寻求一些帮助:)

任务是这样的:

指定的整数范围为[m, n]。写一个程序求除数最大的数

输入/输出:

Initial data |   Result
10 40        |        36
代码:

#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
    int m, n, s, sd = 0, ats;
    double a = 0;
    ifstream fd("Duomenys.txt");
    fd >> m >> n;
    for(int i = m; i<=n; i++){
        s = 0;
        for(int j = 1; j<=i; ++j){
            a = 0;
            a = i % j;
            if(a = 0) s= s + 1; 
        }
    if(s > sd) {
        i = ats;
        s = sd;
        }
    }
    cout << ats;
        system("PAUSE");
    return EXIT_SUCCESS;
}

现在我只使用cout << ats来测试它,但是如果我运行它,它会得到一个0作为答案。

如果要测试a是否等于0,则必须使用等于运算符,即==

对于if (a = 0),您实际上将0赋值给a,然后测试此操作的结果,该结果始终为0。这就是为什么if的指令,这里的s = s + 1;将永远不会被执行。

代码中的其他问题:

  • 您使用变量ats,但从未初始化它,所以它的值是不确定的
  • 我不明白为什么adouble而不是int

我建议你打开所有的编译器警告,并从一本关于c++的好书或教程开始