C語言if語句的嵌套 和 提供一些關于if else的小程序
三、if--else if--else結構。
if(表達式1) 語句1; else if(表達式2) 語句2; else if(表達式3) 語句3; . . . else 語句n; 這種結構是從上到下逐個對條件進行判斷,一旦發現條件滿點足就執行與它有關的語句, 并跳過其它剩余階梯;若沒有一個條件滿足,則執行最后一個else 語句n。最后這個else常起著缺省條件的作用。
同樣,如果每一個條件中有多于一條語句要執行時,必須使用{和}把這些語句包括在其中。條件語句可以嵌套,這種情況經常碰到,但條件嵌套語句容易出錯,其原因主要是不知道哪個if對應哪個else。
例如: if(x>20||x<-10) if(y<=100&&y>x) printf(Good); else printf(Bad); 對于上述情況, Turbo C2.0規定: else語句與最近的一個if語句匹配, 上例中的else與if(y<=100&&y>x)相匹配。為了使else與if(x>20||x<-10)相匹配, 必須用花括號。
如下所示: if(x>20||x<-10){ if(y<=100&&y>x) printf(Good); } else printf(Bad); 下面舉幾個例子:1.輸入一個數,如果大于0,輸出plus;如果是負數,輸出negative;如果正好是0,則輸出zero。main(){float num;scanf(%f,&f);if(num>0)printf(plus\n);else if(num<0)printf(negative\n);elseprintf(zero\n); }先定義兩個變量,然后輸入一個數,然后判斷這個數的范圍,輸出對應的字符串。
2.輸入一個數x,輸出y。其中y是x的絕對值。
main(){float x,y;scanf(%f,&x);if(x>=0) y=x;else y=-x;printf(%f\n,y);}程序比較簡單,這兒就不分析了。其實Trubo C 2.0把一些常用的功能都寫好了,我們只需要使用就可。
例如求絕對值的功能在C的庫里面就有。看下面的:#include *(){float x,y;scanf(%f,&x);y=fabs(x); /*求x的絕對值,然后賦值給y*/printf(%f\n,y);} 這個程序和上面的程序完成的功能是一模一樣的,都是求絕對值。
可以看出,用下面這個方法比上面就要好一些。由于fabs()是一個函數,系統自帶的,所以在使用它的時候,我們必須把它所在的庫文件math.h包含都程序中,即程序最前面一行。
類似的還有求開方sqrt(),求指數冪exp()等等,這些與數學方面有關的函數都在math.h里面。具體哪些有哪些沒有,在什么庫里面,可以查看一些手冊。
3.輸入x,輸出y,x和y滿足關系:x<-5 y=x;-5<=x<1 y=2*x+5;1<=x<4 y=x+6;x>=4 y=3*x-2;程序如下:main(){float x,y;scanf(%f,&x);if(x<-5)y=x;else if(-5<=x&&x<1)y=2*x+5;else if(1<=x&&x<4)y=x+6;elsey=3*x-2;printf(%f\n,y);} 這里要說明兩點:(1).-5<=x&&x<1不能寫成-5<=x<1;1<=x&&x<4也不能寫成1<=x<4;在C語言中,不能認識連續不等式。(2).y=2*x+5不能寫成y=2x+5;y=3*x-2也不能寫成y=3x-2;這與我們平時所寫的方法不一樣。
4.輸入三個數x,y,z,然后按從大到小輸出。main(){float x,y,z;scanf(%f%f%f,&x,&y,&z);if(x>=y&&x>=z){printf(%f\t,x);if(y>=z) printf(%f\t%f\n,y,z);else printf(%f\t%f\n,z,y);}else if(y>=x&&y>=z){printf(%f\t,y);if(x>=z) printf(%f\t%f\n,x,z);else printf(%f\t%f\n,z,x);}else{printf(%f\t,z);if(x>=y) printf(%f\t%f\n,x,y);else printf(%f\t%f\n,y,x);}}說明:這是一個典型的if語句嵌套結構,如果不使用括號,那么if和else的對應關系就亂了。
c語言中if可以嵌套哪些語句
學習C語言在初學C語言時,可能會遇到有些問題理解不透,或者表達方式與以往數學學習中不同(如運算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進行學習,待學完后面的章節知識,前面的問題也就迎刃而解了,這一方面我感覺是我們同學最欠缺,大多學不好的就是因為一開始遇到困難就放棄,曾經和好多同學談他的問題,回答是聽不懂、不想聽、放棄這樣三個過程,我反問,這節課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎么說自己聽不懂呢?相應的根本就沒學習,又談何學的好? 學習C語言始終要記住“曙光在前頭”和“千金難買回頭看”,“千金難買回頭看”是學習知識的重要方法,就是說,學習后面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是我們學生最不易做到的,然而卻又是最重要的。
學習C語言就是要經過幾個反復,才能前后貫穿,積累應該掌握的C知識。 那么,我們如何學好《C程序設計》呢? 一.學好C語言的運算符和運算順序 這是學好《C程序設計》的基礎,C語言的運算非常靈活,功能十分豐富,運算種類遠多于其它程序設計語言。
在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。
在學習中,只要我們對此合理進行分類,找出它們與我們在數學中所學到運算之間的不同點之后,記住這些運算也就不困難了,有些運算符在理解后更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。 先要明確運算符按優先級不同分類,《C程序設計》運算符可分為15種優先級,從高到低,優先級為1 ~ 15,除第2、3級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算符的運算順序. 二.學好C語言的四種程序結構 (1)順序結構 順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。
例如;a = 3,b = 5,現交換a,b的值,這個問題就好像交換兩個杯子水,這當然要用到第三個杯子,假如第三個杯子是c,那么正確的程序為: c = a; a = b; b = c; 執行結果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。 順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結構,例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。
不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環結構中的循環體等。 (2) 分支結構 順序結構的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。
對于要先做判斷再選擇的問題就要使用分支結構。分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。
分支結構的程序設計方法的關鍵在于構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。分支結構適合于帶有邏輯或關系比較等條件判斷的計算,設計這類程序時往往都要先繪制其程序流程圖,然后根據程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易于理解。
程序流程圖是根據解題分析所繪制的程序執行流程圖。 學習分支結構不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執行的功能,嵌套結構也就不難了。
嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結構。
①if(條件) { 分支體 } 這種分支結構中的分支體可以是一條語句,此時“”可以省略,也可以是多條語句即復合語句。它有兩條分支路徑可選,一是當條件為真,執行分支體,否則跳過分支體,這時分支體就不會執行。
如:要計算x的絕對值,根據絕對值定義,我們知道,當x>=0時,其絕對值不變,而x=0時,方程有兩個實根,否則(b^2-4ac=0) {x1=(-b+sqrt(d))/2a; x2=(-b-sqrt(d))/2a; printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2); } else {r=-b/(2*a); i =sqrt(-d)/(2*a); printf(“x1=%8.4f+%8.4fi\n”r, i); printf(“x2=%8.4f-%8.4fi\n”r,i) } ③嵌套分支語句:其語句格式為: if(條件1) ; else if(條件2) else if(條件3) …… else if(條件n) else 嵌套分支語句雖可解決多個入口和出口的問題,但超過3重嵌套后,語句結構變得非常復雜,對于程序的閱讀和理解都極為不便,建議嵌套在3重以內,超過3重可以用下面的語句。 ④switch開關語句:該語句也是多分支選擇語句,到底執行哪一塊,取決于開關設置,也就是表達式的值與常量表達式相匹配的那一路,它不同if…else 語句,它的所有分支都是并列的,程序執行時,由第一分支開始查找,如果相匹配,執行其后的塊,接著執行第2分支,第3分支……的塊。
C語言里面if語句的嵌套看不懂~
if/else if語句是一對判斷組合;多個順序if是平行的運行判斷的。
舉例說明:if(我有錢){我就去炒股;}else if(我有時間){我就去旅游;}上面的語句意思如下:如果我有錢(if判斷成立),則我只能去炒股,即使我有時間又有金錢也不能去旅游;而如果我沒有錢(if判斷不成立),則要看我是否有時間,有時間就去旅游(沒錢去旅游就苦了)。if(我有金錢){我就去炒股;}if{我有時間){我就去上網;}if(我有時間和金錢){我就去旅游;}這樣的判斷意思是說:如果我有錢(第一個if成立),我可以炒股,如果我沒有錢但有時間(第二個if成立),我可以上網(辦公室的免費網絡);而如果我有了錢又有時間(第三個if成立),我就可以去旅游了(好爽啊!)不知樓主明白些沒有呢?。
C語言 if嵌套if
printf("請輸入a的值"); scanf("%d",&a); if(a<10)//a=0的時候,明顯符合a<10條件,但是不符合里面嵌套的a>1條件,不做任何操作。
{ if(a>1) t=1; } else t=2; printf("請輸入a的值"); scanf("%d",&a); if(a<10)//a=100,第一步驗證就不符合條件,又沒有else語句對應,也是什么都不做 { if(a>1) t=1; else t=2; } 我還是加上第二題的實戰圖吧: 我初始化t為99999了,防止輸出未初始化的變量。可以看到99999并沒有改變。
也就是說a=100的時候,沒有影響到t。不要看死書了,按自己的邏輯理解吧。
總之看if 的嵌套,else總是與最近的if成對。然后自己加大括號對好格式,用手寫在紙上畫明了一點。
希望能幫到你!。
C語言 if 的多項嵌套
printf("最大值是:%d\n",t); 這一句里的t=?你知道嗎,在C里面如果一個變量如果沒有確定的值是不可以引用的。我寫一段代碼你參考參考:
#include "stdio.h"
void main()
{
int x,y,z,t ;
printf("請輸入3個數:");
scanf ("%d%d%d",&x,&y,&z,);
/*下面這個if語句是把x,y的最大值放到變量t里*/
if(x>y)t=x;
else t=y;
/*下面的IF語句是把剛才x,y中的大值與z比較,如果Z大于T就說明Z最大放到Z*/
/*否則就是X和Y中的較大值為最大值*/
if(z>t)t=z;
printf("The max valule is %d",t);
}
我這是一個比較簡單的代碼,應該能看明白。