如何在每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后给出
+0

这就是为什么你应该检查scanf函数的返回值... –

+3

尝试使用模运算符, '%',如'如果((d%1000)== 0)'。 –

+0

你仍然应该设置一个输入来检查它是否跳出循环来结束它。 – sabbahillel

循环将每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,

  1. void main()int main(void),至少,以共成的标准。
  2. 有符号整型溢出再次是UB。你不应该依赖那个。使用<limits.h>来检查范围,如果有的话。
+0

如果((d%1000)== 1000)..如何是它甚至有可能..?这对任何数字都会失败。也许,你的意思是,如果((d%1000)== 0) – user2407394

+0

@ 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)