如何在每1000个值后停止无限循环?

时间:2016-02-25 17:04:08

标签: c loops scanf

/ *我想看看short int的最大值。我想只使用循环来看它。所以我创建了一个无限循环。问题是我想停止循环以查看每1000个值之后的值但是它只在循环达到1000时停止,因为我已经让它停止使用if条件,然后它永远不会停止。我可以这样做,它会在每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();
}

4 个答案:

答案 0 :(得分:4)

您正在使用错误的格式说明符来扫描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>检查范围(如果有)。

答案 1 :(得分:0)

您只需按以下方式检查条件

非常重要的一点是你必须与零进行比较,它才能正常工作。

if( (d%1000 == 0)
  {
  //continuing after pressing a character after 1000                        
  printf("\n press i to continue");
  scanf("%c",&i);
  continue;
  }

希望这有助于

答案 2 :(得分:0)

你需要改变

if(d==1000)

if!(d%1000)

答案 3 :(得分:0)

循环将在每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)。单个字符%cscanf("%d",&i);此声明应为scanf("%c",&i);。条件为if(d%1000 == 0 && d != 0)