簡體   English   中英

每1000個值后如何停止無限循環?

[英]How can I stop an infinite loop after every 1000 values?

/ *我想查看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();
}

您使用錯誤的格式說明符來掃描char值。 它調用未定義的行為 你應該改變

 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>檢查范圍(如果有)。

您只需按以下方式檢查條件

非常重要的一點是,您必須將其與零進行比較,然后才能正常工作。

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)

每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();
}

並且您使用了錯誤的格式說明符( 請參閱 )。 %c用於單個字符。 scanf("%d",&i); 該語句應為scanf("%c",&i); 並且條件將是if(d%1000 == 0 && d != 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM