C語言,輸入2 10之間的整數,如果輸入不滿足條件則重新輸入

時間 2021-08-30 09:45:15

1樓:匿名使用者

using system;

class program

console.writeline(a);

console.readkey();}}

2樓:直角世界的部落格

這是個很多新手都不清楚的細節!

一定記住,scanf遇到第一個不符合的字元,就會把它放回輸入流去!下次還會讀到這個字元!

那麼下次scanf再讀的時候還會遇到它!還會給judge返回0,放回去!死迴圈!

1. 簡單的解決方法是在printf後面,迴圈裡寫 if(judge==0)getchar();來拿掉那個不符合要求的字元。

2. 法一的問題是,如果你還可能同時輸入多個非數字字元,這樣會輸出好幾遍"please input a number of one of your cards.\n",解決方法是寫個迴圈:

char c;if(judge==0)while((c=getchar())!='\n');

或者用getline,拿一行丟掉,是一樣的。

3. 或者直接改scanf,涉及scanf高階特性:

while(1)

judge = scanf("%d", &card);

加一行

if(judge == 1 && card > 1 && card < 11)

break;

printf("please input a number of one of your cards.\n");

這樣可以獲得,如果你輸入“abc3”,能把這個3輸入進去。如果是“abc15”,15超範圍了,一樣會讓你重新輸入。

看你的需求了。

關於這些,我剛寫了個文章:網頁連結講的更細緻,可以看看。

當然這個也有eof的情況,讀到輸入末尾,windows裡就是按ctrl-z+enter,有時候要按兩次ctrl-z+enter,模擬檔案讀到盡頭的情況,那還要繼續判斷!if(judge==eof) break;不過這個可能也超出考慮範圍了。

scanf裡有非常多這種很危險的小細節!最好看看!或者乾脆只用getline拿進來,用sscanf讀東西!

遇到c語言問題,輸入一個數,for迴圈內if語句,條件不符合重新輸入。

3樓:匿名使用者

break本來就是跳出迴圈用的,換成break自然沒問題。當你輸入小於100時,你讓i= 0,但是你忘記了還要執行i++,所以,i依然會變成1。

4樓:匿名使用者

if裡面加continue結束本次迴圈,開始下一次

5樓:鍾晴董琪

你可以用while來實現迴圈輸入,沒必要用goto,這個語句已經不建議使用了,樓上的正解

如何用c語言實現“判斷使用者輸入一個值為正整數,如果不是提醒使用者重新輸入一個值”?

6樓:

/*判斷是浮點數還是整數*/

#include

int main()

printf("%d是正整數\n", (int)m);

}return 0;}

7樓:

可以讓使用者輸入一個字串,然後檢查每個字元是否是0~9中的任意一個,如果不是,則不是正整數。當然這裡會允許000123這樣的情況出現,即數字可以用0開頭。如要處理,還需另外考慮,如果不考慮這個問題,可以寫成如下的**

#include

main()

pos++;}}}

8樓:匿名使用者

#include

int main()

printf("%d是正整數\n", (int)m);

}return 0;}

9樓:匿名使用者

int main()

while(a <= 0);}

10樓:黑白鍵上的探戈

/*我突然想到,如果能看懂下面的**,基礎知識已經算是掌握的不錯了。

應該能看懂精簡後的**,所以今天把**修改了一下,重新發了上來。

*/#include

#include

#include //我需要使用其中的getch函式使程式暫停

#define n 1000 //巨集定義一個常量n=1000,在下面直接使用

int len;//定義一個全域性變數,用來接收使用者輸入的有效長度

int charlength(char *ptr)//長度測量函式

int zerojudge(char *ptr)//首字元非零判斷函式

return 1;//否則返回1

}int ascjudge(char *ptr)//ascii碼比對函式

return 1;//如果上述for迴圈沒有觸發return,那麼說明所有字元合乎要求,返回1

}int main()//主函式走起~

printf("\n輸入正確,程式判斷其為正整數!按任意鍵退出...\n");

getch();//程式暫停以免一閃而過

return 0;//主函式結束~}

11樓:匿名使用者

//大家的回答貌似都解決不了使用者輸入1a、2b的情況啊

c語言 輸入10個整數,輸出其中不同的數,即如果一個數出現了多次,只輸出一次。 10

12樓:吐槽家無法忍受

#include"stdio.h"

main() }

c語言程式:輸入一個字元,如果是數字字元,把它轉換成相對應的數字並輸出;如果不是,則以十進位制整數形

13樓:

1、新建一個工程和.c檔案 ,輸入標頭檔案和主函式。

2、宣告被呼叫的函式,定義變數型別。

3、輸入整數。

4、用一個if語句去判斷整數是否為負數,若為負數則用putchar函式輸出一個負號。

5、呼叫一個函式。

6、定義函式的返回型別和形參型別。

7、通過if語句判斷該數是否僅剩一位數,若不是則執行else語句。

8、通過再次呼叫子函式一次輸出高位的數。

9、編譯執行。

14樓:

#include

int main(void)

else}

15樓:

#include

int main()

system("pause");

return 0;}

16樓:匿名使用者

#include

void main()}

c語言怎麼寫輸入資料有多組,每組輸入正整數N

你可以先做一個預處理。例如說有一個a陣列,a n 為1表示n是2的冪,否則不是 那麼你在初始化的時候a陣列整個就是全為0的 然後int p 1 for int i 0 i 31 i 這裡根據你要的資料量大小決定,這裡是有符號的 ok,預處理只做了32次賦值和32次位移而已。接下來對於任意輸入的n,你...

c語言 輸入整數,判斷它能否被3,5,7整除

include int main void 光棍誓言 include void main include using namespace std int main 閆孟喬孟孟 if x 3 0 cout能被3整除 n else cout 不能被3整除 n if x 5 0 cout 能被5整除 n ...

c語言題目 輸入正整數a,b,c,輸出a b的小數形式,精確

你沒有必要那樣做的,直接這樣就可以了。如。c 8 double pp a b if pp 1000000000 10 4 判斷小數點後第9位是否大於4,大於4就要進位 pp 0.00000001 printf 結果是 0.8f pp 輸出結果,自動只輸出到小數點後8位。 include includ...