如何在每1000个值之后停止无限循环?
/*我想查看短int的最大值。我想仅使用循环查看它。所以我创建了一个无限循环。问题是我想停止循环以查看每1000个值后面的值。但它停止,只有当循环达到1000,因为我已经给它停止使用,如果条件的话,就永远stops.What我可以这样做,它停止以下*/如何在每1000个值之后停止无限循环?
#include<stdio.h>
#include<conio.h>
void main()
{
//Short int is declared intentionally
short int d=0;
char i;
//Infinite loop is created intentionally
for(d=0; ;d++)
{
//printing value
printf("\n%d",d);
//stopping a loop when value reaches 1000
if(d==1000)
{
//continuing after pressing a character after 1000
printf("\n press i to continue");
scanf("%d",&i);
continue;
}
}
//see the output
getch();
}
每1000 values.Program后给出
循环将每1000个值后停止。
#include<stdio.h>
#include<conio.h>
void main()
{
//Short int is declared intentionally
short int d=0;
char i;
//Infinite loop is created intentionally
for(d=0; ;d++)
{
//printing value
printf("\n%d",d);
//stopping a loop when value reaches 1000
if(d%1000 == 0 && d != 0)
{
//continuing after pressing a character after 1000
printf("\n press any key to continue...");
scanf("%c",&i);
continue;
}
}
//see the output
getch();
}
而且您正在使用错误的格式说明符(See)。 %c
单个字符。 scanf("%d",&i);
此声明应为scanf("%c",&i);
。条件将是if(d%1000 == 0 && d != 0)
。
您正在使用错误的格式说明符来扫描char
值。它调用undefined behavior。你应该改变
scanf("%d",&i);
到
scanf(" %c",&i);
也就是说,停止对每 1000迭代,你需要改变if(d==1000)
到if((d % 1000) == 0)
。
FWIW,
-
void main()
应int main(void)
,至少,以共成的标准。 - 有符号整型溢出再次是UB。你不应该依赖那个。使用
<limits.h>
来检查范围,如果有的话。
如果((d%1000)== 1000)..如何是它甚至有可能..?这对任何数字都会失败。也许,你的意思是,如果((d%1000)== 0) – user2407394
@ user2407394对不起,复制粘贴效果... –
你只是检查条件如下
很重要的一点是你必须有0-3比较,它会正常工作。
if((d%1000 == 0)
{
//continuing after pressing a character after 1000
printf("\n press i to continue");
scanf("%c",&i);
continue;
}
希望这有助于
您需要更改
if(d==1000)
到
if!(d%1000)
这就是为什么你应该检查scanf函数的返回值... –
尝试使用模运算符, '%',如'如果((d%1000)== 0)'。 –
你仍然应该设置一个输入来检查它是否跳出循环来结束它。 – sabbahillel