全國計算機等級考試二級c語言_第1頁
全國計算機等級考試二級c語言_第2頁
全國計算機等級考試二級c語言_第3頁
全國計算機等級考試二級c語言_第4頁
全國計算機等級考試二級c語言_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第五章選擇結(jié)構(gòu)本章要點什么是分支結(jié)構(gòu)?它的作用是什么?

if語句和switch語句實現(xiàn)分支結(jié)構(gòu)有何異同?switch語句中的break起什么作用?邏輯運算和關(guān)系運算的相同之處是什么?它們之間又有什么不同?任務(wù)程序1.兩分段的數(shù)學函數(shù)計算2.分段計算水費3.機票實際價格的計算4.查詢自動售貨機中商品的價格5.1兩分段的數(shù)學函數(shù)計算例5-1兩分段的數(shù)學函數(shù)計算。

程序解析關(guān)系運算if-else語句邏輯運算1程序解析#include<stdio.h>#include<math.h>voidmain(){floatx,y;

printf(“Enterx:”);

scanf(“%f”,&x);

if(x==0.0) y=1;else y=sin(x)/x;

printf(“x=%5.2f,y=%5.2f”,x,y);}關(guān)系表達式選擇結(jié)構(gòu)2關(guān)系運算x<=15比較x和15的大小比較的結(jié)果:真假當x取值9.5時,x<=15的結(jié)果是:?當x取值21.3時,x<=15的結(jié)果是:?關(guān)系運算—比較運算,比較兩個操作數(shù)關(guān)系運算符x<yx<=yx==yx>yx>=yx!=y關(guān)系表達式:用關(guān)系運算符將2個表達式連接起來的式子。如:x<=1區(qū)分=和==運用關(guān)系表達式表示比較的數(shù)學式C關(guān)系表達式x≤10x≥10x≠10x=10x<=10x>=10x!=10x==10用關(guān)系表達式描述條件判斷x是否為負數(shù)x<0判斷x是否不為零x!=03if-else語句if(表達式)

語句1else

語句2語句1表達式語句2真假

if(x==0.0) y=1;else y=sin(x)/x;軟件測試的基本思想軟件測試精心設(shè)計一批測試用例[輸入數(shù)據(jù),預期輸出結(jié)果]

,然后分別用這些測試用例運行程序,看程序的實際運行結(jié)果與預期輸出結(jié)果是否一致。inputx:2.5f(2.50)=0.4inputx:0f(0.00)=0.0if(x!=0)y=1/x;elsey=0;計算二分段函數(shù)if(表達式)

語句1else

語句2if(x<=10&&x>=1)y=4*x/3;else

y=0;4邏輯運算(ch>='a'&&

ch<='z')||(ch>='A'&&

ch<='Z')ch>='0'&&

ch<='9'x<=1關(guān)系運算-1<=x<=10-11 x

x>=-1并且

x<=1x>=-1&&x<=13種邏輯運算符邏輯與

&&

邏輯或

||邏輯非

!XX&&

YYXYX||

YX!

X邏輯與

&&

邏輯或||邏輯非!(x>1)&&(y>1)(x>1)||(y>1)(x>1) !(x>1)即x<=1邏輯運算符的含義邏輯運算符的功能邏輯與

&&

邏輯或||邏輯非!

aba&&b

a||b!a假

假假假真假真假真真真假假真假真真真真假邏輯表達式邏輯表達式:用邏輯運算符將邏輯運算對象連接起來的式子。(ch>='a')&&(ch<='z')

判斷ch

是否為小寫英文字母或:ch>='a'&&ch<='z'(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')

判斷ch

是否為英文字母條件的表示寫出滿足下列條件的C表達式。ch

是空格或者回車。ch==''||ch=='\n'number是偶數(shù)。number%2==0year是閏年,即year能被4整除但不能被100整除,或year能被400整除。

(year%4==0&&year%100!=0)||(year%400==0)在表示邏輯運算值時,以“1”代表“真”,“0”代表“假”。在判斷一個量是為“真”還是為“假”時,以“0”代表“假”,以非“0”的數(shù)值作為“真”。5.2分段計算水費源程序-分段計算水費#include<stdio.h>int

main(void){doublex,y;

printf("Enterx:");

scanf("%lf",&x);

if(x<0){y=0;}elseif(x<=15){y=4*x/3;}else{y=2.5*x-10.5;}printf("f(%.2f)=%.2f\n",x,y);return0;}Enterx:-0.5f(-0.50)=0.00Enterx:9.5f(9.50)=12.67Enterx:21.3f(21.30)=42.75Enterx:?

if(表達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3……elseif(表達式m)語句melse語句n流程圖if語句的三種結(jié)構(gòu)條件執(zhí)行二分支多分支表達式語句真(非0)假(0)

條件

語句1

語句2YN條件執(zhí)行輸入大寫字母輸出相應(yīng)小寫字母#include<stdio.h>voidmain()

{charch;

scanf(“%c”,&ch);if(ch>=‘A’&&ch<=‘Z’)

ch=ch+32;

printf(“ch=%c\n”,ch);}

變量定義變量賦值變成小寫輸出結(jié)果是大寫字母嗎?YN變量使用二分支結(jié)構(gòu)#include<stdio.h>#include<math.h>voidmain(){floatx,y;

printf(“Enterx:”);

scanf(“%f”,&x);

if(x==0.0) y=1;else y=sin(x)/x;

printf(“x=%5.2f,y=%5.2f”,x,y);}關(guān)系表達式選擇結(jié)構(gòu)課堂練習題目:評價學生的成績,輸入一個百分制分數(shù)score,輸出對應(yīng)的成績等級score≥90 優(yōu)秀score≥80 良好score≥70 中score≥60 及格score<60 不及格#include<stdio.h>voidmain(){ intscore;

printf("inputascore:");

scanf("%d",&score); if(score>=90) printf("優(yōu)秀\n"); elseif(score>=80) printf("良好\n"); elseif(score>=70) printf("中\(zhòng)n"); elseif(score>=60) printf("及格\n"); elseprintf("不及格\n");}課堂練習(程序)5.3機票實際價格的計算例5-3機票預定:輸出實際機票價格原價為4000元5-10月為旺季,頭等艙打9折,經(jīng)濟艙打7.5折其他時間為淡季,頭等艙打6折,經(jīng)濟艙打3折程序解析if語句的嵌套1程序解析#include<stdio.h>voidmain(){

intprice=4000;//機票的原價

intmonth;//出行的月份

inttype;//頭等艙為1,經(jīng)濟艙為2

printf("請輸入您出行的月份:1-12");scanf(“%d”,&month);

printf("請問您選擇頭等艙還是經(jīng)濟艙?頭等艙輸入1,經(jīng)濟艙輸入2");scanf(“%d”,&type);

if(month>=5&&month<=10)//旺季

{

if(type==1)//頭等艙

printf("您的機票價格為:%d",price*0.9);elseif(type==2)//經(jīng)濟艙

printf("您的機票價格為:%d",price*0.75);

}

else//淡季

{

if(type==1)//頭等艙

printf("您的機票價格為:%d",price*0.6);elseif(type==2)//經(jīng)濟艙

printf("您的機票價格為:%d",price*0.3);

}}2嵌套的if語句多分支結(jié)構(gòu)有多種形式實現(xiàn)方法:嵌套的

if語句

else–if語句嵌套的if-else語句switch語句嵌套的if語句if(表達式)

語句1else

語句2

if語句

if語句

else–if語句嵌套的if-else語句if(表達式1)語句1elseif(表達式2)語句2……elseif(表達式n-1)語句n-1else語句n假表達式1表達式2語句1語句2語句n-1語句n真

表達式n-1假真

假假真

else–if語句n個分支需要n-1次比較嵌套的if–else語句if(表達式1)if(表達式2)語句1else語句2elseif(表達式3)語句3else語句4表達式1表達式3語句4真假表達式2語句3語句1語句2真真假假if(x<1)y=x+1;elseif(x<2)y=x+2;elsey=x+3;if(x<2)if(x<1)y=x+1;elsey=x+2;elsey=x+3;

x<2x<1y=x+1y=x+2真

假真

y=x+3假假x<1x<2y=x+1y=x+2真

假真

y=x+32種嵌套if語句的比較else和if的匹配if(表達式1)if(表達式2)語句1else語句2elseif(表達式3)語句3else語句4if(表達式1)if(表達式2)語句1

elseif(表達式3)語句3else語句4else與最靠近它的、沒有與別的else匹配過的if匹配if(表達式1)if(表達式2)語句1elseif(表達式3)語句3else語句4改變else和if的配對例3-10改寫下列if語句,使else和第1個if配對。if(x<2)if(x<1)y=x+1;elsey=x+2;if(x<2){if(x<1)y=x+1;}elsey=x+2;if(x<2)if(x<1)y=x+1;else;elsey=x+2;每條語句的執(zhí)行條件?

5.4查詢自動售貨機中商品的價格例5-4

查詢自動售貨機中商品的價格程序解析switch語句1程序解析假設(shè)自動售貨機出售4種商品,薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可樂(cola),售價分別是每份3.0、2.5、4.0和3.5元。在屏幕上顯示以下菜單,用戶可以連續(xù)查詢商品的價格,當查詢次數(shù)超過5次時,自動退出查詢;不到5次時,用戶可以選擇退出。當用戶輸入編號1~4,顯示相應(yīng)商品的價格;輸入0,退出查詢;輸入其他編號,顯示價格為0。[1]Selectcrisps[2]Selectpopcorn

[3]Selectchocolate[4]Selectcola

[0]Exit#include<stdio.h>Int

main(void){intchoice,i;doubleprice;

for(i=1;i<=5;i++){printf("[1]Selectcrisps\n");printf("[2]Selectpopcorn\n");printf("[3]Selectchocolate\n");printf("[4]Selectcola\n");printf("[0]exit\n");

printf("Enterchoice:");

scanf("%d",&choice);

if(choice==0)break;

switch(choice){case1:price=3.0;break;case2:price=2.5;break;case3:price=4.0;break;case4:price=3.5;break;default:price=0.0;break;}

printf("price=%0.1f\n",price);

}

printf("Thanks\n");}[1]Selectcrisps[2]Selectpopcorn

[3]Selectchocolate[4]Selectcola

[0]ExitEnterchoice:1price=3.0[1]Selectcrisps[2]Selectpopcorn

[3]Selectchocolate[4]Selectcola

[0]ExitEnterchoice:7price=0.0

[1]Selectcrisps[2]Selectpopcorn

[3]Selectchocolate[4]Selectcola

[0]ExitEnterchoice:0Thanks2switch語句處理多分支選擇問題,3種情況1)在switch語句的每個語句段中都使用break語句switch(表達式){case常量表達式1:語句段1;break;case常量表達式2:語句段2;break;....…case常量表達式n:語句段n;break;default:語句段n+1;break;}switch(表達式){case常量表達式1:語句段1;break;case常量表達式2:語句段2;break;....…case常量表達式n:語句段n;break;default:語句段n+1;break;}表達式的值=常量表達式2的值表達式語句段1語句段2語句段n語句段n+1表達式的值=常量表達式1的值表達式的值=常量表達式n的值其他breakbreakbreakbreakswitch(choice){case1:price=3.0;break;case2:price=2.5;break;case3:price=4.0;break;case4:price=3.5;break;default:price=0.0;break;}用else-if如何實現(xiàn)?求解簡單表達式例5-5輸入一個形式如“操作數(shù)運算符操作數(shù)”的四則運算表達式,輸出運算結(jié)果。例如:輸入:3.1+4.8

輸出:7.9源程序#include<stdio.h>int

main(void){charoperator;doublevalue1,value2;

printf("Typeinanexpression:");

scanf("%lf%c%lf",&value1,&operator,&value2);

switch(operator){case'+':

printf("=%.2f\n",value1+value2);

break;case'-':

printf("=%.2f\n",value1-value2);break;case'*':

printf("=%.2f\n",value1*value2);break;case'/':

printf("=%.2f\n",value1/value2);break;default:

printf("Unknownoperator\n");break;}return0;}Typeinanexpression:3.1+4.8

=7.9如果除數(shù)為0?2)在switch中不使用breakswitch(表達式){case常量表達式1:語句段1;case常量表達式2:語句段2;....…case常量表達式n:語句段n;default:語句段n+1;}switch(表達式){case常量表達式1:語句段1;case常量表達式2:語句段2;....…case常量表達式n:語句段n;default:語句段n+1;}switch(choice){case1:price=3.0;case2:price=2.5;case3:price=4.0;case4:price=3.5;default:price=0.0;}表達式的值=常量表達式2的值表達式語句段1語句段2語句段n語句段n+1表達式的值=常量表達式1的值表達式的值=常量表達式n的值其他price=?3)在switch的某些語句段中使用break例6輸入10個字符,分別統(tǒng)計出其中空格或回車、數(shù)字和其他字符的個數(shù)。int

main(void){intblank,digit,i,other;charch;blank=digit=other=0;

printf("Enter10characters:");

for(i=1;i<=10;i++){

ch=getchar();

switch(ch){case'':case'\n':blank++;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論