我在C中有一个非常简单的问题。我正在尝试编写一个简单的程序,在10
和10
之间输出100
的倍数(即:在封闭的时间间隔内) [10,100]
}跳过30
和70
并垂直输出值。
这是我的代码:
#include<stdio.h>
main()
{
int i=10;
do {
if(i==30||i==70)
continue;
printf("\n %d",i);
i++;
} while(i<100);
return 0;
}
程序在29
跳过30
时停止并继续进入永无止境的循环。有什么问题?
答案 0 :(得分:3)
问题在于,当您点击if
语句时,您现在正在跳过i
的增量。所以你永远不会达到100!
#include<stdio.h>
main()
{
int i=10;
do {
if(i==30||i==70)
continue; //!!!! This will skip the i increment
printf("\n %d",i);
i++;
} while(i<100);
return 0;
}
我建议使用for
循环:
main()
{
for (i = 10; i < 100; i++) {
if(i==30||i==70)
continue; // The for loop will do the i++ on the "continue"
printf("\n %d",i);
}
return 0;
}
答案 1 :(得分:2)
mbratch正确地指出了你的问题,但你可能想要考虑这种事情的for
循环。它会阻止这个特殊问题,因为增量是自动的。
我不会为你做整件事,因为你显然是想学习,但这应该让你开始:
for (i=0; i<100; i+= 1)
你必须更改该行中的一些数字,但希望你能理解它们在更改时的含义。
答案 2 :(得分:1)
当i
达到30时,continue语句将返回循环的开头。
因此,循环会无休止地继续,因为i
不会从此点开始增加。
答案 3 :(得分:1)
你的代码正在完成它的编写工作。 continue
跳过增量指令,因此值达到30并卡在那里。将增量移动到循环体的开头,或者更好的是,使用for
而不是while
。
答案 4 :(得分:0)
它永远循环,因为你continue
但不增加i。
if(i==30||i==70) {
i++;
continue;
}
或者您可以像这样使用for循环,
#include<stdio.h>
int main()
{
int i=10;
for (; i < 100; i++)
{
if(i==30 || i==70) {
continue;
}
printf("\n %d",i);
}
return 0;
}
答案 5 :(得分:0)
原因是i
在do..while的主体内部之后永远不会增加。你需要增加它。
if (i == 30 || i == 70){
i++;
continue;
}
答案 6 :(得分:0)
请勿使用continue
。而是只要!=
到30
和70
打印出值。同时按10
而不是1
进行迭代,以输出倍数10
。
#include<stdio.h>
main()
{
int i = 10;
do
{
if (i != 30 && i != 70)
printf("\n %d", i);
i += 10;
}
while (i <= 100); // if you want to print 100
return 0;
}
输出:
10
20
40
50
60
80
90
100
如果您还需要打印while (i <= 100);
,请使用100
。