2016-02-25 101 views
1

/*我想查看短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

回答

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)。 %c單個字符。 scanf("%d",&i);此聲明應爲scanf("%c",&i);。條件將是if(d%1000 == 0 && d != 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>來檢查範圍,如果有的話。
+0

如果((d%1000)== 1000)..如何是它甚至有可能..?這對任何數字都會失敗。也許,你的意思是,如果((d%1000)== 0) – user2407394

+0

@ user2407394對不起,複製粘貼效果... –

0

你只是檢查條件如下

很重要的一點是你必須有0-3比較,它會正常工作。

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

希望這有助於

0

您需要更改

if(d==1000) 

if!(d%1000)