首页 > 解决方案 > 为什么没有到达while循环?

问题描述

输入两个数字 n 和 k。找到从 1 开始不能除以 n 的第 k 个数字。问题是我的 while 循环不起作用。这是我的代码:

 #include<iostream>
    using namespace std;
    int main ()
    {
        int k=0,n,l,c=0;
            cin>>n>>l;

     while(k++)
     {
         while(k%n==0)
            c++;

            if (c==l)
                cout<<k;
            else if(c>l)
                break;

     }
     }

标签: c++

解决方案


while(k++)

k的值为 0,因此 的值k++也为 0(因为您使用的是后自增运算符)。在 while 循环中使用时,条件 0 被认为是错误的,因此永远不会进入 while 循环。

我想建议您如何修复此代码,但它似乎相当混乱。我会重新开始。您可以做的一件事是更好地命名变量,因为问题描述说您正在输入一个数字k,因此将该变量命名为l. 我认为这是思维混乱的症状。

从问题描述中也应该清楚,您只需要一个循环。您从 1 开始循环,每次递增 1,直到找到数字。因此,您只需要一个循环。


推荐阅读