c++ - 为什么没有到达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;
}
}
解决方案
while(k++)
k
的值为 0,因此 的值k++
也为 0(因为您使用的是后自增运算符)。在 while 循环中使用时,条件 0 被认为是错误的,因此永远不会进入 while 循环。
我想建议您如何修复此代码,但它似乎相当混乱。我会重新开始。您可以做的一件事是更好地命名变量,因为问题描述说您正在输入一个数字k
,因此将该变量命名为l
. 我认为这是思维混乱的症状。
从问题描述中也应该清楚,您只需要一个循环。您从 1 开始循环,每次递增 1,直到找到数字。因此,您只需要一个循环。
推荐阅读
- shopware - Shopware 默认产品滑块的附加条件
- unit-testing - 如何在角度测试用例中对 localStorage 和订阅功能项进行代码覆盖
- java - 代码意外停止而不是无限运行
- python - 将没有返回值的 Python Lambda 函数转换为 Pyspark
- javascript - 放大 - 在悬停缩略图库中
- node.js - AWS SQS 套接字挂断间歇性错误
- jquery - 根据元素的位置更改元素类
- jenkins - 如何在 Jenkins 中执行 Liquibase 脚本而不将 liquibase 插件安装为 shell 脚本
- bash - 寻找 ENV 变量的存在
- python - 如何接收 cmd 'quser' 输出?