但是如果我們在上述程序中輸入900、-10等不符合要求的數字,仍然能通過,
你好,請輸入一個數字:900
你輸入的數字是:900
你好,請輸入一個數字:-10
你輸入的數字是:-10
系統沒有提示錯誤。因此,需要修改程序限制玩家輸入數字的范圍
#include
int main(){
int mynum;
printf("你好,請輸入一個數字:");
scanf("%d",&mynum);
if (mynum>500 ||mynum<1){
printf("數字僅限於1-500之間,請重新運行本程序!\n");
}
else{
printf("\n你輸入的數字是:%d\n",mynum);
}
}
運行程序:
dp@dp:~/cquick % gcc guessnum.c -o myguess
dp@dp:~/cquick % ./myguess
你好,請輸入一個數字:200
你輸入的數字是:200
dp@dp:~/cquick % ./myguess
你好,請輸入一個數字:900
數字僅限於1-500之間,請重新運行本程序!
dp@dp:~/cquick %
上面程序使用了C語言的if...else...語句塊,這是一個很多語言都有的機制(包括一些函數語言,比如haskell的if...then...else....),該語句塊分2個部分,第1個部分if語句段,表示如果if後面跟的條件滿足的話,執行if語句段,第2個部分是else語句段,如果if後的條件不滿足執行,什麼是條件滿足與不滿足,C語言可理解為如果條件的返回值非0表示條件滿足,如果是0則表示條件不滿足。
可以將多個條件組合成一個綜合條件做為該語句塊的條件,方式是使用||(表示或者)或&&(表示並且),比如上面程序中的條件:mynum>500 ||mynum<1
但是C語言中有一個關鍵字NULL,在C語言中,條件語句中出現的NULL和0的值是一樣的,但NULL常用於指針和對象,0常用於int等整型數。這意味著,如果出現了下面類似的語句塊,就意味著是對含有指針變量(指針變量通常用於指向其它變量的內存地址,比如下面代碼中的mypoint1和mypoint2)的條件進行判斷了:
if (mypoint1!=NULL){
............
}
if (mypoint2==NULL){
............
}
從運行效果來看,錯誤的數字沒有被接受,但要想重新輸入,必須重新運行一次程序。