我想在没有998的情况下打印1-1000。此代码打印最多997然后停止。这段代码有什么问题?
#include<stdio.h>
int main() {
int n =1;
while(1){
if(n==998){
continue;
}
printf("%d\n",n);
n++;
if(n>1000){
break;
}
}
return 0;
}
答案 0 :(得分:3)
原因是,一旦我们到达n
998
一种解决方案是将n++;
移到if (n == 998) continue;
之上,反之亦然,即:
#include <stdio.h>
int main()
{
int n = 0;
while (1) {
n++;
if (n == 998)
continue;
if (n > 1000)
break;
printf("%d\n", n);
}
return 0;
}
答案 1 :(得分:2)
问题在于您的情况:
if(n==998){
continue;
}
它不会增加变量“n”。
解决此问题的一种方法是使用以下代码:
if(n==998){
n++;
continue;
}
答案 2 :(得分:2)
您的解决方案停留在998,因为您始终执行继续进入下一次迭代而不增加您的值。这是一个更简单,更紧凑的形式:
#include <stdio.h>
int main() {
for (int i = 1; i <= 1000; i++) {
if (i == 998) {
continue;
}
printf("%d\n", i);
}
return 0;
}
答案 3 :(得分:1)
一旦n
为998,您将跳转到循环的下一次迭代,而不会递增n
。这会导致无限循环,无法输出任何内容。
而不是在continue
为998时使用n
,而是如果不 998则可以打印:
#include<stdio.h>
int main() {
int n =1;
while(1){
if(n!=998){
printf("%d\n",n);
}
n++;
if(n>1000){
break;
}
}
return 0;
}
使用for
循环而不是带有退出条件的无限while
循环可以进一步简化这一点:
#include<stdio.h>
int main() {
int n;
for (n=1; n<=1000; n++) {
if(n!=998){
printf("%d\n",n);
}
}
return 0;
}