您好,登錄后才能下訂單哦!
3 C語言 流程控制 循環 跳轉
選擇: if switch
循環 while,do while ,for ,嵌套
跳轉 break goto continue
學習目標
u掌握選擇結構語句
u掌握循環結構語句
前面的章節一直在介紹C語言的基本語法知識,然而僅僅依靠這些語法知識還不能編寫出完整的程序。在程序中,通常需要加入業務邏輯,并對程序的流程進行控制。本章將重點講解C語言中最基本的三種流程控制語句。
3.1 程序的運行流程圖
流程圖是描述問題處理步驟的一種常用圖形工具,它是由一些圖框和流程線組成的。流程圖描述問題的處理步驟,形象直觀,便于閱讀。畫流程圖時必須按照功能選用相應的流程圖符號,常用的流程圖符號如圖3-1所示。
圖3-1 流程圖符號
圖3-1所示的流程圖符號中,列舉了四種圖框和兩種流程線,具體說明如下:
l 起止框用于表示流程的開始或結束;
l 輸入/輸出框用平行四邊形表示,在平行四邊形內可以寫明輸入或輸出的內容;
l 判斷框用菱形表示,它的作用是對條件進行判斷,根據條件是否成立來決定如何執行后續的操作;
l 處理框用矩形表示,它代表程序中的處理功能,如算術運算和賦值等;
l 流程線用實心單向箭頭或直線表示,可以連接不同位置的圖框,流程線的標準流向是從左到右和從上到下,可用直線表示,非標準流向的流程線應使用箭頭指示方向;
l 連接點用圓形表示,用于流程圖的延續。
通過上面的講解,初學者對流程圖符號有了簡單的認識,接下來先來看一個簡單的流程圖,如圖3-2所示。
圖3-2 判斷奇偶數
圖3-2表示的是一個判斷奇偶數的流程圖,下面針對該流程圖中的執行順序進行說明,具體如下:
第1步:程序開始;
第2步:進入處理框,將變量number賦值為1;
第3步:進入判斷框,判斷number是否為偶數,如果是偶數,則進入下面的輸出框,輸出number是偶數;否則進入左面的輸出框,輸出number是奇數;
第4步:輸出完成后,進入結束狀態,程序終止。
3.2 順序結構語句
前面章節講解的程序都有一個共同的特點,即程序中的所有語句都是從上到下逐條執行,這樣的程序結構叫做順序結構。順序結構是程序開發中最常見的一種結構,它可以包含多種語句,如變量的定義語句、輸入輸出語句、賦值語句等。下面來看一個順序結構的簡單例子,通過程序實現按順序輸出“我愛C語言”,如例3-1所示。
例3-1
1 #include <stdio.h> 2 int main() 3 { 4 printf("我\n"); 5 printf("愛\n"); 6 printf("C\n"); 7 printf("語\n"); 8 printf("言\n"); 9 return 0; 10 }
運行結果如圖3-3所示。
圖3-3 運行結果
在例3-1的程序中,使用了5個printf()語句,從上往下依次輸出“我、愛、C、語、言”。從運行結果可以看出,程序是按照語句的先后順序執行的。因此,可以說明該程序是一個順序結構的程序。
3.3 選擇結構語句
在實際生活中經常需要作出一些判斷,比如開車來到一個十字路口,這時需要對紅綠燈進行判斷,如果前面是紅燈,就停車等候,如果是綠燈,就通行。同樣,在C語言中也經常需要對一些條件做出判斷,從而決定執行哪一段代碼,這時就需要使用選擇語句。選擇結構語句分為if條件語句和switch條件語句,接下來本小節將對它們進行詳細地講解。
在C語言中0代表假,非0代表真,
在計算機程序判斷是根據一個條件返回是真還是假來做不同的操作。
一個=號在C語言里面是賦值的,不是比較的,但是很多初學者愛犯一個嚴重的錯誤,就是用=號來比較兩個數是否相等
!=
前四種相同,后兩種相同,前四種高于后兩種優先級
邏輯與
邏輯或
邏輯非
if條件語句分為三種語法格式,每一種格式都有其自身的特點,下面分別進行講解。
1、if語句
if語句是指如果滿足某種條件,就進行相應的處理。例如,小明媽媽跟小明說“如果你考試得了100分,星期天就帶你去游樂場玩”。這句話可以通過下面的一段偽代碼來描述。
如果小明考試得了100分
媽媽星期天帶小明去游樂場
在上面的偽代碼中,“如果”相當于C語言中的關鍵字if,“小明考試得了100分”是判斷條件,需要用()括起來,“媽媽星期天帶小明去游樂場”是執行語句,需要放在{}中。修改后的偽代碼如下:
if (小明考試得了100分) { 媽媽星期天帶小明去游樂場 } 上面的例子就描述了if語句的用法,在C語言中,if語句的具體語法格式如下: if (條件語句) { 代碼塊 }
上述語法格式中,判斷條件是一個布爾值,當判斷條件為true時,{}中的執行語句才會被執行。if語句的執行流程如圖3-4所示。
圖3-4 if語句流程圖
接下來通過一個案例來學習if語句的具體用法,如例3-2所示。
例3-2
1 #include<stdio.h> 2 int main() 3 { 4 //聲明變量x 5 int x = 5; 6 //如果x的值小于10則執行if大括號中的代碼 7 if (x < 10) 8 { 9 x++; 10 } 11 printf("x=%d\n" , x); 12 return 0; 13 }
運行結果如圖3-5所示。
圖3-5 運行結果
例3-2中,定義了一個變量x,其初始值為5。在if語句的判斷條件中判斷x的值是否小于10,很明顯條件成立,因此{}中的語句會被執行,變量x的值將進行自增。從圖3-5的運行結果可以看出,x的值已由原來的5變成了6。
2、if…else語句
if…else語句是指如果滿足某種條件,就進行相應的處理,否則就進行另一種處理。例如,要判斷一個正整數的奇偶,如果該數字能被2整除則是一個偶數,否則該數字就是一個奇數。if…else語句的具體語法格式如下:
if (判斷條件) { 執行語句1 …… } else { 執行語句2 …… }
上述語法格式中,判斷條件是一個布爾值。當判斷條件為true時,if后面{}中的執行語句1會被執行。當判斷條件為false時,else后面{}中的執行語句2會被執行。if…else語句的執行流程如圖3-6所示。
圖3-6 if…else語句流程圖
接下來通過一個實現奇偶數判斷的案例來演示if..else語句的具體用法,如例3-3所示。
例3-3
1 #include<stdio.h> 2 int main() 3 { 4 int num = 19; 5 if (num % 2 == 0) 6 { 7 //判斷條件成立,num被2整除 8 printf("num是一個偶數\n"); 9 } 10 else 11 { 12 printf("num是一個奇數\n"); 13 } 14 return 0; 15 }
運行結果如圖3-7所示。
圖3-7 運行結果
例3-3中,變量num的值為19,模以2的結果為1,不等于0,判斷條件不成立。因此會執行else后面{}中的語句,打印“num是一個奇數”。
3、if…else if…else語句
if…else if…else語句用于對多個條件進行判斷,從而進行多種不同的處理。例如,對一個學生的考試成績進行等級的劃分,如果分數大于等于80分等級為優,如果分數小于80分大于等于70分等級為良,如果分數小于70分大于等于60分等級為中,否則,等級為差。if…else if…else語句的具體語法格式如下:
if (判斷條件1) { 執行語句1 } else if (判斷條件2) { 執行語句2 } …… else if (判斷條件n) { 執行語句n } else { 執行語句n+1 }
上述語法格式中,判斷條件是一個布爾值。當判斷條件1為true時,if后面{}中的執行語句1會執行。當判斷條件1為false時,會繼續執行判斷條件2,如果為true則執行語句2,以此類推,如果所有的判斷條件都為false,則意味著所有條件均未滿足,else后面{}中的執行語句n+1會被執行。if…elseif…else語句的執行流程如圖3-8所示。
圖3-8 if…else if…else語句的流程圖
接下來通過一個對學生考試成績進行等級劃分的案例來演示if…else if…else語句的用法,如例3-4所示。
例3-4
1 #include<stdio.h> 2 int main() 3 { 4 int grade = 75; //定義學生成績 5 if (grade >= 80) 6 { 7 //滿足條件grade >=80 8 printf("該成績的等級為優\n"); 9 } 10 else if (grade >= 70) 11 { 12 //不滿足條件 grade >= 80 ,但滿足條件 grade >= 70 13 printf("該成績的等級為良\n"); 14 } 15 else if (grade >= 60) 16 { 17 //不滿足條件 grade >= 70 ,但滿足條件 grade >= 60 18 printf("該成績的等級為中\n"); 19 } 20 else 21 { 22 //不滿足條件 grade >= 60 23 printf("該成績的等級為差\n"); 24 } 25 return 0; 26 }
運行結果如圖3-9所示。
圖3-9 運行結果
例3-4中,定義了學生成績grade為75。它不滿足第一個判斷條件grade>=80,會執行第二個判斷條件grade>=70,條件成立,因此會打印“該成績的等級為良”。
&多學一招:三元運算符
在C語言中有一種特殊的運算叫做三元運算,它和if…else語句類似,具體語法格式如下:
判斷條件? 表達式1 : 表達式2
三元運算通常用于對某個變量進行賦值,當判斷條件成立時,運算結果為表達式1的值,否則結果為表達式2的值。
例如求兩個數x、y中的較大者,如果用if…else語句來實現,具體代碼如下:
int x = 0; int y = 1; int max; if (x > y) { max = x; } else { max = y; }
上面的代碼運行之后,變量max的值為1。如果if…else語句用三元運算來替換,具體代碼如下:
int x = 0; int y = 1; int max; max = x > y ? x : y;
switch 條件語句也是一種很常用的選擇語句,和if條件語句不同,它只能針對某個表達式的值作出判斷,從而決定程序執行哪一段代碼。例如,在程序中使用數字1~7來表示星期一到星期天,如果想根據某個輸入的數字來輸出對應中文格式的星期值,可以通過下面的一段偽代碼來描述:
用于表示星期的數字
如果等于1,則輸出星期一
如果等于2,則輸出星期二
如果等于3,則輸出星期三
如果等于4,則輸出星期四
如果等于5,則輸出星期五
如果等于6,則輸出星期六
如果等于7,則輸出星期天
如果不是1~7,則輸出此數字為非法數字
對于上面一段偽代碼的描述,大家可能會立刻想到用剛學過的if…else if…else語句來實現,但是由于判斷條件比較多,實現起來代碼過長,不便于閱讀。這時就可以使用C語言中的switch語句來實現這種需求。在switch語句中switch關鍵字后面有一個表達式,case關鍵字后面有目標值,當表達式的值和某個目標值匹配時,會執行對應case下的語句。接下來通過一段偽代碼來描述switch語句的基本語法格式,具體如下:
switch (表達式) { case 目標值1: 執行語句1 break; case 目標值2: 執行語句2 break; …… case 目標值n: 執行語句n break; default: 執行語句n+1 break; }
在上面的語法格式中,switch語句將表達式的值與每個case中的目標值進行匹配,如果找到了匹配的值,就會執行相應case后的語句,否則執行default后的語句。關于switch語句中的break關鍵字將在后面的小節中做具體介紹,此處,初學者只需要知道break的作用是跳出switch語句即可。
接下來通過一個案例來實現根據數字輸出中文格式的星期的功能,如例3-5所示。
例3-5
1 #include<stdio.h> 2 int main() 3 { 4 int week = 5; 5 switch (week) 6 { 7 case 1: 8 printf("星期一"); 9 break; 10 case 2: 11 printf("星期二"); 12 break; 13 case 3: 14 printf("星期三"); 15 break; 16 case 4: 17 printf("星期四"); 18 break; 19 case 5: 20 printf("星期五"); 21 break; 22 case 6: 23 printf("星期六"); 24 break; 25 case 7: 26 printf("星期天"); 27 break; 28 default: 29 printf("輸入的數字不正確..."); 30 break; 31 } 32 return 0; 33 }
運行結果如圖3-10所示。
圖3-10 運行結果
例3-5中,由于變量week的值為5,整個switch語句判斷的結果滿足第19行的條件,因此打印“星期五”。程序中的default語句用于處理和前面的case都不匹配的情況,將第5行代碼替換為int week = 8,再次運行程序,輸出結果如圖3-11所示。
圖3-11 運行結果
在使用switch語句的過程中,如果多個case條件后面的執行語句是一樣的,則該執行語句只需書寫一次即可,這是一種簡寫的方式。例如,使用數字1~7來表示星期一到星期天,當輸入的數字為1、2、3、4、5時視為工作日,否則視為休息日,這時如果需要判斷一周中的某一天是否為工作日,就可以采用switch語句的簡寫方式,具體如例3-6所示。
例3-6
1 #include<stdio.h> 2 int main() 3 { 4 int week = 2; 5 switch (week) 6 { 7 case 1: 8 case 2: 9 case 3: 10 case 4: 11 case 5: 12 //當week 滿足值 1、2、3、4、5 中任意一個時,處理方式相同 13 printf("今天是工作日\n"); 14 break; 15 case 6: 16 case 7: 17 //當week 滿足值 6、7 中任意一個時,處理方式相同 18 printf("今天是休息日\n"); 19 break; 20 } 21 return 0; 22 }
運行結果如圖3-12所示。
圖3-12 運行結果
例3-6中,當變量week的值為1、2、3、4、5中任意一個值時,處理方式相同,都會打印“今天是工作日”。同理,當變量week值為6、7中任意一個值時,打印“今天是休息日”。
3.4 循環結構語句
在實際生活中經常會將同一件事情重復做很多次,比如在走路時,會重復使用左右腳,打乒乓球時,會重復揮拍的動作等。同樣在C語言中,也經常需要重復執行同一代碼塊,這時就需要使用循環語句。循環語句分為while循環語句、do…while循環語句和for循環語句三種。接下來,本小節將針對這三種循環語句分別進行詳細地講解。
while循環語句和3.3小節講到的條件判斷語句有些相似,都是根據條件判斷來決定是否執行大括號內的執行語句。區別在于,while語句會反復地進行條件判斷,只要條件成立,{}內的執行語句就會一直執行,直到條件不成立,while循環結束。while循環語句的具體語法格式如下:
while (循環條件) { 執行語句 ……… }
在上面的語法格式中,{}中的執行語句被稱作循環體,循環體是否執行取決于循環條件。當循環條件為true時,循環體就會被執行。循環體執行完畢時會繼續判斷循環條件,如條件仍為true則會繼續執行,直到循環條件為false時,整個循環過程才會結束。
while循環的執行流程如圖3-13所示。
圖3-13 while循環的流程圖
接下來通過while語句來實現1~4之間自然數的打印,如例3-7所示。
例3-7
1 #include <stdio.h> 2 int main() 3 { 4 int x = 1; //定義變量x,初始值為1 5 while (x <= 4) // 循環條件 6 { 7 printf("x = %d\n", x);// 條件成立,打印x的值 8 x++; // x進行自增 9 } 10 return 0; 11 }
運行結果如圖3-14所示。
圖3-14 while循環
例3-7中,x的初始值為1,在滿足循環條件x <= 4的情況下,循環體會重復執行,打印x的值并讓x進行自增。因此打印結果中x的值分別為1、2、3、4。值得注意的是,例3-7中的第8行代碼用于在每次循環時改變變量x的值,直到循環條件不成立,如果沒有這行代碼,整個循環會進入無限循環的狀態,永遠不會結束。
do…while循環語句和while循環語句功能類似,二者的不同之處在于,while語句需要先判斷循環條件,然后根據判斷結果來決定是否執行大括號中的代碼,而do…while循環語句先要執行一次大括號內的代碼再判斷循環條件,其具體語法格式如下:
do { 執行語句 ……… } while(循環條件);
在上面的語法格式中,關鍵字do后面{}中的執行語句是循環體。do…while循環語句將循環條件放在了循環體的后面。這也就意味著,循環體會無條件執行一次,然后再根據循環條件來決定是否繼續執行。
do…while循環的執行流程如圖3-15所示。
圖3-15 do…while循環的執行流程
接下來使用do…while循環語句將例3-7進行改寫,如例3-8所示。
例3-8
1 #include <stdio.h> 2 int main() 3 { 4 int x = 1; //定義變量x,初始值為1 5 do 6 { 7 printf("x = %d\n", x);// 條件成立,打印x的值 8 x++; // x進行自增 9 } while (x <= 4); // 循環條件 10 return 0; 11 }
運行結果如圖3-16所示。
圖3-16 do while實例
例3-8和例3-7的運行結果一致,這說明do …while循環和while循環能實現同樣的功能。然而在程序運行過程中,這兩種語句還是有差別的。如果循環條件在循環語句開始時就不成立,那么while循環的循環體一次都不會執行,而do…while循環的循環體還是會執行一次。若將例中的循環條件x<=4改為x < 1,例3-8會打印x=1,而例3-7什么也不會打印。
在前面的小節中分別講解了while循環和do…while循環。在程序開發中,還經常會使用另一種循環語句,即for循環,它通常用于循環次數已知的情況,其具體語法格式如下:
for(初始化表達式; 循環條件; 操作表達式) { 執行語句 ……… }
在上面的語法格式中,for關鍵字后面()中包括了初始化表達式、循環條件和操作表達式三部分內容,它們之間用“;”分隔,{}中的執行語句為循環體。
接下來分別用“①”表示初始化表達式、“②”表示循環條件、“③”表示操作表達式、“④”表示循環體,通過序號來具體分析for循環的執行流程。具體如下:
for(① ;② ; ③)
{
④
}
第一步,執行①
第二步,執行②,如果判斷結果為true,執行第三步,如果判斷結果為false,執行第五步
第三步,執行④
第四步,執行③,然后繼續執行第二步
第五步,退出循環
接下來通過一個案例對自然數1~4進行求和,如例3-9所示。
例3-9
1 #include<stdio.h> 2 int main() 3 { 4 int sum = 0; //定義變量sum,用于記住累加的和 5 for (int i = 1; i <= 4; i++) //i的值會在1~4之間變化 6 { 7 sum += i; //實現sum與i的累加 8 } 9 printf("sum = %d \n", sum); //打印累加的和 10 return 0; 11 }
運行結果如圖3-17所示。
圖3-17 運行結果
例3-9中,變量i的初始值為1,在判斷條件i<=4為true的情況下,會執行循環體sum+=i,執行完畢后,會執行操作表達式i++,i的值變為2,然后繼續進行條件判斷,開始下一次循環,直到i=5時,條件i<=4為false,結束循環,執行for循環后面的代碼,打印“sum=10”。
為了讓初學者能熟悉整個for循環的執行過程,現將例3-9運行期間每次循環中變量sum和i的值通過表3-1羅列出來。
表3-1 sum和i循環中的值
循環次數 | sum | i |
第一次 | 1 | 1 |
第二次 | 3 | 2 |
第三次 | 6 | 3 |
第四次 | 10 | 4 |
有時為了解決一個較為復雜的問題,需要在一個循環中再定義一個循環,這樣的方式被稱作循環嵌套。在C語言中,while、do…while、for循環語句都可以進行嵌套,并且它們之間也可以互相嵌套,這當中最常見的就是在for循環中嵌套for循環,具體語法格式如下:
for(初始化表達式; 循環條件; 操作表達式) { ……… for(初始化表達式; 循環條件; 操作表達式) { 執行語句; ……… } ……… }
接下來通過for語句的循環嵌套來實現使用“*”打印直角三角形,如例3-10所示。
例3-10
1 #include<stdio.h> 2 int main() 3 { 4 int i, j; //定義兩個循環變量 5 for (i = 1; i <= 9; i++) //外層循環 6 { 7 for (j = 1; j <= i; j++) //內層循環 8 { 9 printf("*"); //打印* 10 } 11 printf("\n"); //換行 12 } 13 return 0; 14 }
運行結果如圖3-18所示。
圖3-18 運行結果
在例3-10中定義了兩層for循環,分別為外層循環和內層循環,外層循環用于控制打印的行數,內層循環用于打印“*”,每一行的“*”個數逐行增加,最后輸出一個直角三角形。由于嵌套循環程序比較復雜,下面分步驟進行詳細地講解,具體如下:
第一步,在第4行代碼中定義了兩個循環變量i和j,其中i為外層循環變量,j為內層循環變量。
第二步,在第5行代碼中將i初始化為1,條件i <= 9為true,程序將首次進入外層循環的循環體。
第三步,在第7行代碼中將j初始化為1,由于此時i的值為1,條件j <= i為true,程序將首次進入內層循環的循環體,打印一個“*”。
第四步,執行第7行代碼中內層循環的操作表達式j++,將j的值自增為2。
第五步,執行第7行代碼中的判斷條件j<=i,判斷結果為false,內層循環結束。執行后面的代碼,打印換行符。
第六步,執行第5行代碼中外層循環的操作表達式i++,將i的值自增為2。
第七步,執行第5行代碼中的判斷條件i<=9,判斷結果為true,程序將進入外層循環的循環體,繼續執行內層循環。
第八步,由于i的值為2,內層循環會執行兩次,即在第2行打印兩個“*”。在內層循環結束時會打印換行符。
第九步,以此類推,在第3行會打印3個“*”,逐行遞增,直到i的值為10時,外層循環的判斷條件i <= 9結果為false,外層循環結束,整個程序也就結束了。
跳轉語句用于實現循環執行過程中程序流程的跳轉,在C語言中,跳轉語句有break語句、goto語句和continue語句。接下來分別進行詳細地講解。
1、break語句
在switch條件語句和循環語句中都可以使用break語句。當它出現在switch條件語句中時,作用是終止某個case并跳出switch結構。當它出現在循環語句中,作用是跳出當前循環語句,執行后面的代碼。接下來通過一個具體的案例來演示break語句如何跳出當前循環,如例3-11所示。
例3-11
1 #include<stdio.h> 2 int main() 3 { 4 int x = 1; //定義變量x,初始值為1 5 while (x <= 4) //循環條件 6 { 7 printf("x = %d\n", x); //條件成立,打印x的值 8 if (x == 3) 9 { 10 break; 11 } 12 x++; //x進行自增 13 } 14 return 0; 15 }
運行結果如圖3-19所示。
圖3-19 運行結果
例3-11中,通過while循環打印x的值,當x的值為3時使用break語句跳出循環。因此打印結果中并沒有出現“x=4”。
2、goto語句
當break語句出現在嵌套循環中的內層循環時,它只能跳出內層循環,如果想要跳出外層循環則需要對外層循環添加標記,然后使用goto語句。接下來通過一個案例來演示如何使用goto語句,如例3-12所示。
例3-12
1 #include<stdio.h> 2 int main() 3 { 4 5 int i, j; //定義兩個循環變量 6 for (i = 1; i <= 9; i++) //外層循環 7 { 8 for (j = 1; j <= i; j++) //內層循環 9 { 10 if (i > 4) //判斷i的值是否大于4 11 { 12 goto end; //跳至標識為end的語句 13 } 14 printf("*"); //輸出* 15 } 16 printf("\n"); //換行 17 } 18 end: return 0; 19 }
運行結果如圖3-20所示。
圖3-20 運行結果
例3-12中,在return語句前面增加了標記“end”。當i>4時,使用“goto end;”語句跳出外層循環。因此程序只打印了4行“*”。
3、continue語句
在循環語句中,如果希望立即終止本次循環,并執行下一次循環,此時就需要使用continue語句。接下來通過一個1~100之內的奇數求和的案例來演示continue語句的使用,如例3-13所示。
例3-13
1 #include<stdio.h> 2 int main() 3 { 4 int sum = 0; //定義變量sum,用于記住和 5 for (int i = 1; i <= 100; i++) 6 { 7 if (i % 2 == 0) //如果i是一個偶數,執行if語句中的代碼 8 { 9 continue; //結束本次循環 10 } 11 sum += i; //實現sum和i的累加 12 } 13 printf("sum = %d\n", sum); 14 return 0; 15 }
運行結果如圖3-21所示。
圖3-21 運行結果
例3-13使用for循環讓變量i的值在1~100之間循環,在循環過程中,當i的值為偶數時,將執行continue語句結束本次循環,進入下一次循環。當i的值為奇數時,sum和i進行累加,最終得到1~100之間所有奇數的和,打印“sum= 2500”。
3.5 本章小結
本章首先介紹了程序的運行流程圖,然后講解了C語言中最基本的三種流程控制語句,包括順序結構語句、選擇結構語句和循環語句。
通過本章的學習,初學者應該能夠熟練的運用if判斷語句、switch判斷語句、while循環語句、do-while循環語句以及for循環語句。掌握本章的內容就能夠編寫邏輯比較復雜的C語言程序并且有助于后面章節的學習。
3.6 習題
一、填空題
1、通常情況下使用______語句來跳出當前循環。
2、程序中的語句由上往下依次執行的是______結構語句。
3、for關鍵字后面()中包括了三部分內容,分別是初始化表達式、______和操作表達式
4、if條件語句分為三種語法格式,分別是______、______和______。
5、假設int x = 2,三元表達式 x>0?x+1:5 的運算結果是______。
二、判斷題
1、程序的運行流程圖中,處理框用平行四邊形來表示。
2、break語句只用于循環語句中,它的作用是跳出循環。
3、do…while循環語句中的循環體至少會執行一次。
4、while循環中不能再定義另一個循環。
5、switch條件語句中,default語句可用于處理和前面的case都不匹配的值。
三、選擇題
1、以下選項中,哪個不屬于switch語句的關鍵字?
A、break B、case C、for D、default
2、下列語句哪些屬于循環語句?(多選)
A、for語句 B、if語句 C、while語句 D、switch語句
3、以下選項中哪些描述是正確的?(多選)
A、循環語句必須要有中止條件否則不能編譯 B、break關鍵字用于跳出當前循環
C、continue關鍵字用于終止本次循環,執行下一次循環D、switch條件語句中可以使用break
4、以下程序片段運行結束后,輸出結果是?
for (int i = 1; i<7; i++)
{
if (i % 3 == 0)
{
break;
}
printf("%d", i);
}
A、123456 B、1245 C、123 D、12
5、請先閱讀下面的代碼
int x = 1;
int y = 2;
if (x % 2 == 0)
{
y++;
}
else
{
y--;
}
printf("y=%d",y);
上面一段程序運行結束時,變量y的值為下列哪一項?
A、1 B、2 C、3 D、4
四、程序分析題
閱讀下面的程序,分析代碼是否能夠編譯通過,如果能編譯通過,請列出運行的結果。否則請說明編譯失敗的原因。
代碼一:
#include<stdio.h>
int main()
{
int x= 4, j = 0;
switch(x)
{
case 1:
j++;
case 2:
j++;
case 3:
j++;
case 4:
j++;
case 5:
j++;
default:
j++;
}
printf(“%d”,j\n);
return0;
}
代碼二:
#include<stdio.h>
int main()
{
int n = 9;
while (n > 6)
{
printf("%d\n",n);
n--;
}
return 0;
}
五、簡答題
1、請說出你知道的跳轉語句,并分別說明它們之間的區別。
2、請說明while循環與for循環的異同。
六、編程題
1、請編寫程序,實現對奇數和偶數的判斷。
提示:
1) 定義一個int類型變量x,該變量的值為5。
2) 使用if…else語句對x進行判斷,如果是奇數就輸出“x是一個奇數”,否則輸出“x是偶數”。
2、請編寫程序,實現對“1+3+5+7+…+99”的求和功能。
提示:
1) 使用循環語句實現自然數1~99的遍歷。
2) 在遍歷過程中,判斷當前遍歷的數是否為奇數,如果是就累加,否則不加。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。