这段代码没有打印任何内容我尝试过不同的编译器


#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;

    int sock = n;
    int count = 0;

   while (sock > 0) {
        count+=1;

        if (sock % m == 0) {
            sock++;
        }
            sock--;
    }

    cout << count << endl;

    return 0;
}

我尝试过的:

实际上我正在使用 while 循环,但是我的代码中有一些问题没有打印任何内容我已经用不同的方法检查了它但没有解决方案

解决方案1

我认为问题就在这里:

C++
if (sock % m == 0) {
    sock++;
}
    sock--; // If you add 1 to sock and then subtract 1 it will go on for ever

但我不确定这些代码行应该做什么。

解决方案2

立刻 sock 可以整除 m,它会递增并立即再次递减 – 因此下一个循环迭代具有相同的值 sock 并且循环永远不会退出。
由于循环永远不会退出,因此代码永远不会到达 cout 并且你永远看不到任何输出。

老实说,使用调试器 2 分钟就可以让您亲自了解这一点:习惯在调试器中测试您的代码,因为它是您最好的开发朋友!

コメント

タイトルとURLをコピーしました