懸掛else問題c語言編譯器
A. c語言else的用法
在C語言中,是使用if和else關鍵字進行判斷。下面我們來看看c語言else的用法:
#include <stdio.h>int main(){ int age; printf("請輸入你的年齡:"); scanf("%d", &age); if(age>=18){ printf("恭喜,你已經成年,可以使用該軟體! "); }else{ printf("抱歉,你還未成年,不宜使用該軟體! "); } return 0;}
可能的運行結果:
請輸入你的年齡:23↙
恭喜,你已經成年,可以使用該軟體!
if else 語句的結構為:
if(表達式){
語句塊1
}else{
語句塊2
}
意思是:如果表達式的值為真,則執行語句塊1,否則執行語句塊2 。其執行過程可表示為下圖:
例如,判斷輸入的字元的類別:
#include <stdio.h>int main(){ char c; printf("Input a character:"); c=getchar(); if(c<32) printf("This is a control character "); else if(c>='0'&&c<='9') printf("This is a digit "); else if(c>='A'&&c<='Z') printf("This is a capital letter "); else if(c>='a'&&c<='z') printf("This is a small letter "); else printf("This is an other character "); return 0;}
運行結果:
Input a character:e
This is a small letter
本例要求判別鍵盤輸入字元的類別。可以根據輸入字元的ASCII碼來判別類型。由ASCII碼表可知ASCII值小於32的為控制字元。在“0”和“9”之間的為數字,在“A”和“Z”之間為大寫字母, 在“a”和“z”之間為小寫字母,其餘則為其它字元。這是一個多分支選擇的問題,用多個 if else 語句編程,判斷輸入字元ASCII碼所在的范圍,分別給出不同的輸出。例如輸入為“e”,輸出顯示它為小寫字元。
在使用if語句時還應注意以下問題:
1) 在三種形式的if語句中,在 if 關鍵字之後均為表達式。 該表達式通常是邏輯表達式或關系表達式,但也可以是其它表達式,如賦值表達式等,甚至也可以是一個變數。例如:
if(a=5) 語句;
if(b) 語句;
都是允許的。只要表達式的值為非0,即為“真”。如在:
if(a=5)…;
中表達式的值永遠為非0,所以其後的語句總是要執行的,當然這種情況在程序中不一定會出現,但在語法上是合法的。
又如,有程序段:
if(a=b) printf("%d",a);else printf("a=0");
本語句的語義是,把b值賦予a,如為非0則輸出該值,否則輸出“a=0”字元串。這種用法在程序中是經常出現的。
2) 在if語句中,條件判斷表達式必須用括弧括起來。
3) 語句塊由{ }包圍,但要注意的是在}之後不要再加分號;。例如:
if(a>b){ a++; b++;}else{ a=0; b=10;}
if語句的嵌套
if 語句也可以嵌套使用,例如:
#include <stdio.h>int main(){ int a,b; printf("Input two numbers:"); scanf("%d %d",&a,&b); if(a!=b){ if(a>b) printf("a>b "); else printf("a<b "); }else{ printf("a=b "); } return 0;}
運行結果:
Input two numbers:12 68
a<b
if 語句嵌套時,要注意 if 和 else 的配對問題。C語言規定,else 總是與它前面最近的 if 配對,例如:
if(a!=b) // ①if(a>b) printf("a>b "); // ②else printf("a<b "); // ③
③和②配對,而不是和①配對。
B. c語言問題
結果是2。
循環i能整除3就結束,反之就將i的值累加到s。
第一次循環,i值2,執行s+=I;
第二次循環,i值3,break;結束循環。
這里while沒有大括弧,所以作用域是下面的if else語句。