版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
高級語言程序設(shè)計(jì) 選擇程序設(shè)計(jì)(2)高級語言程序設(shè)計(jì) 選擇程序設(shè)計(jì)(2)1復(fù)習(xí)1判斷條件的形式:通常是用關(guān)系表達(dá)式2判斷條件的結(jié)果:邏輯真1、邏輯假03實(shí)際上除了關(guān)系表達(dá)式之外,任何有計(jì)算結(jié)果的表達(dá)式都可以作為判斷條件,計(jì)算結(jié)果不為零的數(shù)均轉(zhuǎn)化為邏輯真,計(jì)算結(jié)果為0即為邏輯假算術(shù)表達(dá)式函數(shù)調(diào)用表達(dá)式4甚至是簡單的變量或常量都可以
復(fù)習(xí)1判斷條件的形式:通常是用關(guān)系表達(dá)式2選擇結(jié)構(gòu)的兩種形式:
if(condition)…
if(condition)…else…選擇結(jié)構(gòu)的兩種形式:if(condition)3注意大括號的使用{}復(fù)合語句塊用{}括起來
if(){….多條語句復(fù)合到一起….}
一條語句的時候省略{}注意大括號的使用{}復(fù)合語句塊用{}括起來4問題3:按成績把學(xué)生分成多組問題描述:教師要把參加某次測驗(yàn)的學(xué)生按成績的分?jǐn)?shù)段(90以上,80到89,70到79,60到69,小于60)分成多組,并統(tǒng)計(jì)出各組的人數(shù)。問題3:按成績把學(xué)生分成多組問題描述:教師要把參加某次測驗(yàn)5分析輸入:學(xué)生成績grade輸出:根據(jù)成績的范圍,輸出不同的結(jié)果A,B,C,D,或者F,和統(tǒng)計(jì)結(jié)果
如何判斷grade所在的范圍?90以上,80到89,70到79,60到69,小于60if(grade>=90)√但是if(89<=grade<90)×分析輸入:學(xué)生成績grade6復(fù)合判斷條件再分析一下選擇結(jié)構(gòu)if(邏輯判斷表達(dá)式)表達(dá)式為真時執(zhí)行的語句;整個稱為單分支選擇結(jié)構(gòu),也可以看成是一個語句
問?if(邏輯判斷表達(dá)式);?復(fù)合判斷條件再分析一下選擇結(jié)構(gòu)?7單分支的嵌套
單分支的嵌套8例如if(grade>=60)
if(grade<70)printf(“youarepassed\n”);if(grade>=60)if(grade<70)printf(“youarepassed\n”);例如if(grade>=60)9if(grade>=60){if(grade<70)printf(“youarepassed\n”);}if(grade>=60){if(grade<70)printf(“youarepassed\n”);}if(grade>=60){10雙分支嵌套
雙分支嵌套11
if(grade>=90)printf(“good!ingroupA\n”);else
if(grade>=80)printf(“better!ingroup\n”);elseprintf(“ok,inCorDorF\n”);if(grade>=90)12更好的寫法if(grade>=90)printf(“good!ingroupA\n”);elseif(grade>=80)printf(“better!ingroup\n”);elseprintf(“ok,inCorDorF\n”);更好的寫法if(grade>=90)13注意:多個if-else嵌套,ifelse的匹配原則是:else與前面最近的沒有被使用的if匹配注意:多個if-else嵌套,ifelse的匹配原則是:14
15算法設(shè)計(jì)(1)1求和變量aNum,bNum,cNum,dNum,fNum初始化為0;2輸入學(xué)生成績;3如果輸入沒有結(jié)束則執(zhí)行(4)否則執(zhí)行(9);4如果成績大于或等于90,輸出分到A組信息,aNum加1,返回到(2);5否則如果成績還大于或等于80,輸出分到B組信息,bNum加1,返回到(2);6否則如果成績還大于或等于70,輸出分到C組信息,cNum加1,返回到(2);7否則如果成績還大于或等于60,輸出分到D組信息,dNum加1,返回到(2);8否則輸出分到F組信息,fNum加1,返回到(2);9輸出統(tǒng)計(jì)結(jié)果算法設(shè)計(jì)(1)1求和變量aNum,bNum,cNum,dN16算法實(shí)現(xiàn)見ifelsenest.c算法實(shí)現(xiàn)見ifelsenest.c17
#include<stdio.h>intmain(void){intaNum=0,bNum=0,cNum=0,dNum=0,fNum=0;intgrade;while(scanf("%d",&grade)!=EOF){
if(grade>=90){printf("Good!youbelongingroupA\n");aNum=aNum+1;}
elseif(grade>=80){printf("Better!youbelongingroupB\n");bNum=bNum+1;}
elseif(grade>=70){printf("Middle!youbelongingroupC\n");cNum=cNum+1;}
elseif(grade>=60){printf("Pass!youbelongingroupD\n");dNum=dNum+1;}
else{printf("Sorry,youarefailed,belongingroupF\n");fNum=fNum+1;}
}printf("aNum=%d\n",aNum);printf("bNum=%d\n",bNum);printf("cNum=%d\n",cNum);printf("dNum=%d\n",dNum);printf("FNum=%d\n",fNum);return0;}#include<stdio.h>18分析一下該算法的執(zhí)行情況你可以運(yùn)行算法1的代碼,看看每個學(xué)生成績要判斷幾次才能找到它適合的位置。如果成績都是90以上會怎樣?如果成績都是60、70分甚至更低會怎么樣?正常情況下學(xué)生的成績處于中游的比較多,即大多數(shù)都在70和80之間,符合客觀實(shí)際的、更好的結(jié)構(gòu)應(yīng)該是什么?分析一下該算法的執(zhí)行情況你可以運(yùn)行算法1的代碼,看看每個學(xué)生19
20算法實(shí)現(xiàn)見ifelsebetter.c算法實(shí)現(xiàn)見ifelsebetter.c21重新分析一下問題如果把成績除以10取整,可以發(fā)現(xiàn),100分對應(yīng)10,90到99分對應(yīng)9,80到89分對應(yīng)8,依此類推,0到9分的對應(yīng)0
依據(jù)整型常量10,9,8,7,6,5,4,3,2,1,0可斷定該同學(xué)應(yīng)該分到哪一組重新分析一下問題如果把成績除以10取整,可以發(fā)現(xiàn),100分對22算法設(shè)計(jì)(2)1求和變量aNum,bNum,cNum,dNum,fNum初始化為0;2輸入學(xué)生成績grade;3如果grade大于100或小于0,輸出錯誤信息,返回到(2);4如果輸入沒有結(jié)束則執(zhí)行(5)否則執(zhí)行(12)5把成績除以10并取整,得到對應(yīng)的整型值number6如果number是10或9,輸出A組信息,aNum加1,返回(2);7如果number是8,輸出B組信息,bNum加1,返回到(2);8如果number是7,輸出C組信息,cNum加1,返回到(2);9如果number是6,輸出D組信息,dNum加1,返回到(2);10如果number是5或4或3或2或1或0,輸出F組信息,fNum加1,返回到(2);11如果number是其它數(shù)字,輸出錯誤信息,返回到(2);12輸出統(tǒng)計(jì)結(jié)果。算法設(shè)計(jì)(2)1求和變量aNum,bNum,cNum,dN23switchcase多分支選擇結(jié)構(gòu)
switch(整型表達(dá)式){
case常量表達(dá)式:要執(zhí)行的語句 [break;]
case常量表達(dá)式:要執(zhí)行的語句[break;]……[default:默認(rèn)的執(zhí)行語句]
}switchcase多分支選擇結(jié)構(gòu)switch(整型24幾個組成部分switch(表達(dá)式)必須是整型值的表達(dá)式switch的主體用一對花括號括起{}多個平行的case常量表達(dá)式:
每個case里的要執(zhí)行的語句可以是多條語句,它們不必使用{}括起來。也可以沒有語句在整個swith主體的最后是一個可選的default:幾個組成部分switch(表達(dá)式)必須是整型值的表達(dá)式25
動作Case1breakCase2Casendefault動作Case1breakCase2Casendef26算法實(shí)現(xiàn)(switchcase)見switchint.c算法實(shí)現(xiàn)(switchcase)275分制成績統(tǒng)計(jì)問題輸入的學(xué)生成績是A/a,B/b,…成績是一個字符怎么輸入字符呢?字符是什么?字符可以看成整數(shù)(ascii碼)如何判斷輸入的是什么字符?5分制成績統(tǒng)計(jì)問題輸入的學(xué)生成績是A/a,B/b,…28高級語言程序設(shè)計(jì)課件名家課件29字符型charcharc1,c2,c3;c1=‘A’;c2=‘b’;c3=‘1’;
字符型char30也可以用整型變量存放字符常量,如 intgrade1,grade2;grade1='A';grade2='B';計(jì)算機(jī)內(nèi)部接受的是‘A’,‘B’的ASCII碼。也可以用整型變量存放字符常量,如31字符比較兩個字符常量或者存放字符常量的變量可以比較大小ascii碼進(jìn)行比較字符比較兩個字符常量或者存放字符常量的變量可以比較大小32字符型數(shù)據(jù)的輸入可以使用scanf和printf函數(shù)對字符型數(shù)據(jù)進(jìn)行輸入和輸出,占位符是%c。字符型數(shù)據(jù)的輸入可以使用scanf和printf函數(shù)對字符型33高級語言程序設(shè)計(jì)課件名家課件34ASCII碼是10的字符是回車符。這說明我們輸入了一個字符‘a(chǎn)’后輸入的回車符被變量a第二次讀到了。這個回車符是沒有用的,因此用一個臨時變量t把從輸入緩沖區(qū)中讀出。下例的scanf(“%d”,&t)就起這個作用。ASCII碼是10的字符是回車符。這說明我們輸入了一個字符‘35高級語言程序設(shè)計(jì)課件名家課件36鍵盤讀一個字符的函數(shù)getchar()
a=getchar();代替scanf(“%c”,&a);
getchar();代替scanf(“%c”,&t);鍵盤讀一個字符的函數(shù)getchar()37輸出一個字符到屏幕的函數(shù)
putchar(a);代替printf(“%c”,a);輸出一個字符到屏幕的函數(shù)putchar38算法設(shè)計(jì)(3)1求和變量aNum,bNum,cNum,dNum,fNum初始化為0;2輸入學(xué)生成績grade;3如果輸入沒有結(jié)束則執(zhí)行(4)否則執(zhí)行(10);4如果grade是‘A’,輸出A組信息,aNum加1,返回到(2);5如果grade是‘B’,輸出B組信息,bNum加1,返回到(2);6如果grade是‘C’,輸出C組信息,cNum加1,返回到(2);7如果grade是‘D’,輸出D組信息,dNum加1,返回到(2);8如果grade是‘F’,輸出F組信息,fNum加1,返回到(2);9如果grade是其它字符,輸出錯誤信息,返回到(2);10輸出統(tǒng)計(jì)結(jié)果。算法設(shè)計(jì)(3)1求和變量aNum,bNum,cNum,39算法實(shí)現(xiàn)見switch5grade.c算法實(shí)現(xiàn)見switch5grade.c40從鍵盤獲得一個字符的另外兩個函數(shù)#include<conio.h>getche(),它能接收鍵盤輸入的任意一個字符,無需回車即可以接受,自動的顯示到屏幕上,稱之為回顯。getch(),它同getche()不同的就是無回顯。這兩個與getchar()比較,getchar()需要按回車鍵,變量才能在輸入緩沖區(qū)中讀到一個字符,無回顯。從鍵盤獲得一個字符的另外兩個函數(shù)#include<conio41演示三種字符輸入函數(shù)觀察它們的區(qū)別演示三種字符輸入函數(shù)42問題4:判斷某年是否為閏年問題分析:判斷某年是不是閏年的條件“某年能被4整除但不能被100整除或者能被4整除又能被400整除”
某年是閏年的條件為(1)“year能被4整除”并且“year不能被100整除”或者(2)“year能被4整除”并且“year也能被400整除”問題4:判斷某年是否為閏年問題分析:43并且關(guān)系的兩個判斷如何表示?intpass=0;intgrade1,grade2;scanf(“%d%d”,&grade1,&grade2);如果grade1>=60且grade2>=60pass=1用嵌套并且關(guān)系的兩個判斷如何表示?intpass=0;44或關(guān)系的兩個判斷如何表示?intnopass=0;intgrade1,grade2;scanf(“%d%d”,&grade1,&grade2);如果grade1<60或者grade2<60則nopass=1順序判斷?或關(guān)系的兩個判斷如何表示?intnopass=0;45
更好的表示方法:邏輯運(yùn)算邏輯運(yùn)算的操作數(shù)是邏輯真或邏輯假邏輯與運(yùn)算&&:1&&1=1;
1&&0=0&&1=0&&0=0;邏輯或運(yùn)算||:
0||1=1||0=1||1=1;0||0=0; 邏輯非運(yùn)算!:
!0=1,!1=0;
更好的表示方法:邏輯運(yùn)算邏輯運(yùn)算的操作數(shù)是邏輯真或邏輯假46邏輯表達(dá)式(grade1>=60)&&(grade2>=60)邏輯與的優(yōu)先級低于關(guān)系運(yùn)算,可以省略()上式等價于grade1>=60&&grade2>=60(grade1<60)||(grade2<60)邏輯或的優(yōu)先級低于關(guān)系運(yùn)算,可以省略();上式等價于grade1<60||grade2<60!(grade>=90)邏輯非是單目運(yùn)算,它的優(yōu)先級高于關(guān)系運(yùn)算,因此不可以省略()邏輯表達(dá)式(grade1>=60)&&(47優(yōu)先級與結(jié)合性算術(shù)運(yùn)算>關(guān)系運(yùn)算>邏輯與運(yùn)算>邏輯或運(yùn)算,它們依次降低,但邏輯非運(yùn)算的優(yōu)先級高于算術(shù)運(yùn)算邏輯運(yùn)算是左結(jié)合的優(yōu)先級與結(jié)合性算術(shù)運(yùn)算>關(guān)系運(yùn)算>邏輯與運(yùn)算>邏輯或運(yùn)算,48邏輯運(yùn)算的短路性邏輯運(yùn)算的操作數(shù)是0和1,0和1的運(yùn)算是有規(guī)律的由“邏輯與”運(yùn)算組成的表達(dá)式,從左至右計(jì)算,遇到0就不用再向右計(jì)算了,因這時邏輯表達(dá)式的值必為假,只有都是真的時候向右計(jì)算才有意義。(i!=0)&&(j/i>0)由“邏輯或”構(gòu)成的邏輯表達(dá)式也是從左向右計(jì)算,如果遇到有一個操作數(shù)的表達(dá)式的值是1就不用再向右計(jì)算了,因這時整個邏輯表達(dá)式的值必為真。(grade1<60)||(grade2<60)邏輯運(yùn)算的短路性邏輯運(yùn)算的操作數(shù)是0和1,0和1的運(yùn)算是有規(guī)49利用短路性某年是閏年的條件為(1)“year能被4整除”并且“year不能被100整除”或者(2)“year能被4整除”并且“year也能被400整除”閏年判斷表達(dá)式為:(year%4==0&&year%100!=0)||year%400==0利用短路性某年是閏年的條件為50算法設(shè)計(jì)1輸入年份2判斷(year%4==0&&year%100!=0)||year%400==0是否為真,如果為真輸出是閏年算法設(shè)計(jì)1輸入年份51實(shí)現(xiàn)(略)實(shí)現(xiàn)(略)52小結(jié)有了算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算可以表達(dá)各種各樣的邏輯判斷條件,使用單分支或雙分支或者多分支結(jié)構(gòu)以及嵌套技術(shù)可以解決各種各樣的邏輯判斷問題小結(jié)有了算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算可以表達(dá)各種各樣的邏輯531、了解面對逆境,遠(yuǎn)比如何接受順境重要得多2022/12/123:14:0703:14:073:14:07AM。12月-2212月-22Monday,December12,20222、一般的偉人總是讓身邊的人感到渺小Monday,December12,20223:14:07AM12/12/20223:14:07AM03:14Dec-22。03:14:0703:14:0703:1412/12/20223:14:07AM3、03:14Dec-2212-Dec-224、昨天是張退票的支票12-Dec-223:14:07AM03:1403:14:0703:14:0703:14Monday,December12,20225、積極人格的完善是本,財(cái)富的確立是末12-12月-22。12月-2212月-2203:14:0703:14:07December12,20226、昨晚多幾分鐘的準(zhǔn)備12/12/20223:14:07AM12十二月20223:14:07上午03:14:0712月-227、每一發(fā)奮努力的背,必有加倍的賞賜3:14:07上午十二月223:14上午12月-2203:14December12,20228、業(yè)余生活要有意義,不要越軌。2022/12/123:14:0703:14:0712December20229、要及時把握夢想,因?yàn)閴粝胍凰?2/12/20223:14:07AM。3:14:07上午3:14上午03:14:0712月-2210、一個人的夢想也許不值錢,但一個人的努力很值錢。12/12/20223:14:07AM03:14:0712-12月-2211、在真實(shí)的生命里,每樁偉業(yè)都由信心開始,并由信心跨出第一步。12/12/20223:14AM12/12/20223:14AM12月-2212月-22謝謝大家1、了解面對逆境,遠(yuǎn)比如何接受順境重要得多2022/12/1541、每一個成功者都有一個開始。勇于開始,才能找到成功的路2022/12/123:14:0703:142、成功源于不懈的努力,人生最大的敵人是自己怯懦。03:14:0703:14:0703:1412/12/20223:14:07AM3、每天只看目標(biāo),別老想障礙Monday,December12,2022。12月-2203:14:0703:14Monday,July19,202112-Dec-224、寧愿辛苦一陣子,不要辛苦一輩子3:14:07上午。03:14:0703:14:0703:14Monday,December12,20225、積極向上的心態(tài),是成功者的最基本要素03:14:07。12月-2212月-2203:14:0703:14:07December12,20226、生活總會給你另一個機(jī)會,12月-223:14:07AM3:14:07上午03:14:0712月-227、人生就像騎單車,想保持平衡就得往前走21:19:4812月-2203:14December12,20228、業(yè)余生活要有意義,不要越軌。2022/12/123:14:0703:14:0712December20229、我們必須在失敗中尋找勝利Monday,December12,202212月-2210、一個人的夢想也許不值錢,但一個人的努力很值錢。12/12/20223:14:07AM03:14:0712-12月-2211、在真實(shí)的生命里,每樁偉業(yè)都由信心開始,并由信心跨出第一步。12/12/20223:14AM12/12/20223:14AM12月-2212月-22謝謝大家1、每一個成功者都有一個開始。勇于開始,才能找到成功的路2055高級語言程序設(shè)計(jì) 選擇程序設(shè)計(jì)(2)高級語言程序設(shè)計(jì) 選擇程序設(shè)計(jì)(2)56復(fù)習(xí)1判斷條件的形式:通常是用關(guān)系表達(dá)式2判斷條件的結(jié)果:邏輯真1、邏輯假03實(shí)際上除了關(guān)系表達(dá)式之外,任何有計(jì)算結(jié)果的表達(dá)式都可以作為判斷條件,計(jì)算結(jié)果不為零的數(shù)均轉(zhuǎn)化為邏輯真,計(jì)算結(jié)果為0即為邏輯假算術(shù)表達(dá)式函數(shù)調(diào)用表達(dá)式4甚至是簡單的變量或常量都可以
復(fù)習(xí)1判斷條件的形式:通常是用關(guān)系表達(dá)式57選擇結(jié)構(gòu)的兩種形式:
if(condition)…
if(condition)…else…選擇結(jié)構(gòu)的兩種形式:if(condition)58注意大括號的使用{}復(fù)合語句塊用{}括起來
if(){….多條語句復(fù)合到一起….}
一條語句的時候省略{}注意大括號的使用{}復(fù)合語句塊用{}括起來59問題3:按成績把學(xué)生分成多組問題描述:教師要把參加某次測驗(yàn)的學(xué)生按成績的分?jǐn)?shù)段(90以上,80到89,70到79,60到69,小于60)分成多組,并統(tǒng)計(jì)出各組的人數(shù)。問題3:按成績把學(xué)生分成多組問題描述:教師要把參加某次測驗(yàn)60分析輸入:學(xué)生成績grade輸出:根據(jù)成績的范圍,輸出不同的結(jié)果A,B,C,D,或者F,和統(tǒng)計(jì)結(jié)果
如何判斷grade所在的范圍?90以上,80到89,70到79,60到69,小于60if(grade>=90)√但是if(89<=grade<90)×分析輸入:學(xué)生成績grade61復(fù)合判斷條件再分析一下選擇結(jié)構(gòu)if(邏輯判斷表達(dá)式)表達(dá)式為真時執(zhí)行的語句;整個稱為單分支選擇結(jié)構(gòu),也可以看成是一個語句
問?if(邏輯判斷表達(dá)式);?復(fù)合判斷條件再分析一下選擇結(jié)構(gòu)?62單分支的嵌套
單分支的嵌套63例如if(grade>=60)
if(grade<70)printf(“youarepassed\n”);if(grade>=60)if(grade<70)printf(“youarepassed\n”);例如if(grade>=60)64if(grade>=60){if(grade<70)printf(“youarepassed\n”);}if(grade>=60){if(grade<70)printf(“youarepassed\n”);}if(grade>=60){65雙分支嵌套
雙分支嵌套66
if(grade>=90)printf(“good!ingroupA\n”);else
if(grade>=80)printf(“better!ingroup\n”);elseprintf(“ok,inCorDorF\n”);if(grade>=90)67更好的寫法if(grade>=90)printf(“good!ingroupA\n”);elseif(grade>=80)printf(“better!ingroup\n”);elseprintf(“ok,inCorDorF\n”);更好的寫法if(grade>=90)68注意:多個if-else嵌套,ifelse的匹配原則是:else與前面最近的沒有被使用的if匹配注意:多個if-else嵌套,ifelse的匹配原則是:69
70算法設(shè)計(jì)(1)1求和變量aNum,bNum,cNum,dNum,fNum初始化為0;2輸入學(xué)生成績;3如果輸入沒有結(jié)束則執(zhí)行(4)否則執(zhí)行(9);4如果成績大于或等于90,輸出分到A組信息,aNum加1,返回到(2);5否則如果成績還大于或等于80,輸出分到B組信息,bNum加1,返回到(2);6否則如果成績還大于或等于70,輸出分到C組信息,cNum加1,返回到(2);7否則如果成績還大于或等于60,輸出分到D組信息,dNum加1,返回到(2);8否則輸出分到F組信息,fNum加1,返回到(2);9輸出統(tǒng)計(jì)結(jié)果算法設(shè)計(jì)(1)1求和變量aNum,bNum,cNum,dN71算法實(shí)現(xiàn)見ifelsenest.c算法實(shí)現(xiàn)見ifelsenest.c72
#include<stdio.h>intmain(void){intaNum=0,bNum=0,cNum=0,dNum=0,fNum=0;intgrade;while(scanf("%d",&grade)!=EOF){
if(grade>=90){printf("Good!youbelongingroupA\n");aNum=aNum+1;}
elseif(grade>=80){printf("Better!youbelongingroupB\n");bNum=bNum+1;}
elseif(grade>=70){printf("Middle!youbelongingroupC\n");cNum=cNum+1;}
elseif(grade>=60){printf("Pass!youbelongingroupD\n");dNum=dNum+1;}
else{printf("Sorry,youarefailed,belongingroupF\n");fNum=fNum+1;}
}printf("aNum=%d\n",aNum);printf("bNum=%d\n",bNum);printf("cNum=%d\n",cNum);printf("dNum=%d\n",dNum);printf("FNum=%d\n",fNum);return0;}#include<stdio.h>73分析一下該算法的執(zhí)行情況你可以運(yùn)行算法1的代碼,看看每個學(xué)生成績要判斷幾次才能找到它適合的位置。如果成績都是90以上會怎樣?如果成績都是60、70分甚至更低會怎么樣?正常情況下學(xué)生的成績處于中游的比較多,即大多數(shù)都在70和80之間,符合客觀實(shí)際的、更好的結(jié)構(gòu)應(yīng)該是什么?分析一下該算法的執(zhí)行情況你可以運(yùn)行算法1的代碼,看看每個學(xué)生74
75算法實(shí)現(xiàn)見ifelsebetter.c算法實(shí)現(xiàn)見ifelsebetter.c76重新分析一下問題如果把成績除以10取整,可以發(fā)現(xiàn),100分對應(yīng)10,90到99分對應(yīng)9,80到89分對應(yīng)8,依此類推,0到9分的對應(yīng)0
依據(jù)整型常量10,9,8,7,6,5,4,3,2,1,0可斷定該同學(xué)應(yīng)該分到哪一組重新分析一下問題如果把成績除以10取整,可以發(fā)現(xiàn),100分對77算法設(shè)計(jì)(2)1求和變量aNum,bNum,cNum,dNum,fNum初始化為0;2輸入學(xué)生成績grade;3如果grade大于100或小于0,輸出錯誤信息,返回到(2);4如果輸入沒有結(jié)束則執(zhí)行(5)否則執(zhí)行(12)5把成績除以10并取整,得到對應(yīng)的整型值number6如果number是10或9,輸出A組信息,aNum加1,返回(2);7如果number是8,輸出B組信息,bNum加1,返回到(2);8如果number是7,輸出C組信息,cNum加1,返回到(2);9如果number是6,輸出D組信息,dNum加1,返回到(2);10如果number是5或4或3或2或1或0,輸出F組信息,fNum加1,返回到(2);11如果number是其它數(shù)字,輸出錯誤信息,返回到(2);12輸出統(tǒng)計(jì)結(jié)果。算法設(shè)計(jì)(2)1求和變量aNum,bNum,cNum,dN78switchcase多分支選擇結(jié)構(gòu)
switch(整型表達(dá)式){
case常量表達(dá)式:要執(zhí)行的語句 [break;]
case常量表達(dá)式:要執(zhí)行的語句[break;]……[default:默認(rèn)的執(zhí)行語句]
}switchcase多分支選擇結(jié)構(gòu)switch(整型79幾個組成部分switch(表達(dá)式)必須是整型值的表達(dá)式switch的主體用一對花括號括起{}多個平行的case常量表達(dá)式:
每個case里的要執(zhí)行的語句可以是多條語句,它們不必使用{}括起來。也可以沒有語句在整個swith主體的最后是一個可選的default:幾個組成部分switch(表達(dá)式)必須是整型值的表達(dá)式80
動作Case1breakCase2Casendefault動作Case1breakCase2Casendef81算法實(shí)現(xiàn)(switchcase)見switchint.c算法實(shí)現(xiàn)(switchcase)825分制成績統(tǒng)計(jì)問題輸入的學(xué)生成績是A/a,B/b,…成績是一個字符怎么輸入字符呢?字符是什么?字符可以看成整數(shù)(ascii碼)如何判斷輸入的是什么字符?5分制成績統(tǒng)計(jì)問題輸入的學(xué)生成績是A/a,B/b,…83高級語言程序設(shè)計(jì)課件名家課件84字符型charcharc1,c2,c3;c1=‘A’;c2=‘b’;c3=‘1’;
字符型char85也可以用整型變量存放字符常量,如 intgrade1,grade2;grade1='A';grade2='B';計(jì)算機(jī)內(nèi)部接受的是‘A’,‘B’的ASCII碼。也可以用整型變量存放字符常量,如86字符比較兩個字符常量或者存放字符常量的變量可以比較大小ascii碼進(jìn)行比較字符比較兩個字符常量或者存放字符常量的變量可以比較大小87字符型數(shù)據(jù)的輸入可以使用scanf和printf函數(shù)對字符型數(shù)據(jù)進(jìn)行輸入和輸出,占位符是%c。字符型數(shù)據(jù)的輸入可以使用scanf和printf函數(shù)對字符型88高級語言程序設(shè)計(jì)課件名家課件89ASCII碼是10的字符是回車符。這說明我們輸入了一個字符‘a(chǎn)’后輸入的回車符被變量a第二次讀到了。這個回車符是沒有用的,因此用一個臨時變量t把從輸入緩沖區(qū)中讀出。下例的scanf(“%d”,&t)就起這個作用。ASCII碼是10的字符是回車符。這說明我們輸入了一個字符‘90高級語言程序設(shè)計(jì)課件名家課件91鍵盤讀一個字符的函數(shù)getchar()
a=getchar();代替scanf(“%c”,&a);
getchar();代替scanf(“%c”,&t);鍵盤讀一個字符的函數(shù)getchar()92輸出一個字符到屏幕的函數(shù)
putchar(a);代替printf(“%c”,a);輸出一個字符到屏幕的函數(shù)putchar93算法設(shè)計(jì)(3)1求和變量aNum,bNum,cNum,dNum,fNum初始化為0;2輸入學(xué)生成績grade;3如果輸入沒有結(jié)束則執(zhí)行(4)否則執(zhí)行(10);4如果grade是‘A’,輸出A組信息,aNum加1,返回到(2);5如果grade是‘B’,輸出B組信息,bNum加1,返回到(2);6如果grade是‘C’,輸出C組信息,cNum加1,返回到(2);7如果grade是‘D’,輸出D組信息,dNum加1,返回到(2);8如果grade是‘F’,輸出F組信息,fNum加1,返回到(2);9如果grade是其它字符,輸出錯誤信息,返回到(2);10輸出統(tǒng)計(jì)結(jié)果。算法設(shè)計(jì)(3)1求和變量aNum,bNum,cNum,94算法實(shí)現(xiàn)見switch5grade.c算法實(shí)現(xiàn)見switch5grade.c95從鍵盤獲得一個字符的另外兩個函數(shù)#include<conio.h>getche(),它能接收鍵盤輸入的任意一個字符,無需回車即可以接受,自動的顯示到屏幕上,稱之為回顯。getch(),它同getche()不同的就是無回顯。這兩個與getchar()比較,getchar()需要按回車鍵,變量才能在輸入緩沖區(qū)中讀到一個字符,無回顯。從鍵盤獲得一個字符的另外兩個函數(shù)#include<conio96演示三種字符輸入函數(shù)觀察它們的區(qū)別演示三種字符輸入函數(shù)97問題4:判斷某年是否為閏年問題分析:判斷某年是不是閏年的條件“某年能被4整除但不能被100整除或者能被4整除又能被400整除”
某年是閏年的條件為(1)“year能被4整除”并且“year不能被100整除”或者(2)“year能被4整除”并且“year也能被400整除”問題4:判斷某年是否為閏年問題分析:98并且關(guān)系的兩個判斷如何表示?intpass=0;intgrade1,grade2;scanf(“%d%d”,&grade1,&grade2);如果grade1>=60且grade2>=60pass=1用嵌套并且關(guān)系的兩個判斷如何表示?intpass=0;99或關(guān)系的兩個判斷如何表示?intnopass=0;intgrade1,grade2;scanf(“%d%d”,&grade1,&grade2);如果grade1<60或者grade2<60則nopass=1順序判斷?或關(guān)系的兩個判斷如何表示?intnopass=0;100
更好的表示方法:邏輯運(yùn)算邏輯運(yùn)算的操作數(shù)是邏輯真或邏輯假邏輯與運(yùn)算&&:1&&1=1;
1&&0=0&&1=0&&0=0;邏輯或運(yùn)算||:
0||1=1||0=1||1=1;0||0=0; 邏輯非運(yùn)算!:
!0=1,!1=0;
更好的表示方法:邏輯運(yùn)算邏輯運(yùn)算的操作數(shù)是邏輯真或邏輯假101邏輯表達(dá)式(grade1>=60)&&(grade2>=60)邏輯與的優(yōu)先級低于關(guān)系運(yùn)算,可以省略()上式等價于grade1>=60&&grade2>=60(grade1<60)||(grade2<60)邏輯或的優(yōu)先級低于關(guān)系運(yùn)算,可以省略();上式等價于grade1<60||grade2<60!(grade>=90)邏輯非是單目運(yùn)算,它的優(yōu)先級高于關(guān)系運(yùn)算,因此不可以省略()邏輯表達(dá)式(grade1>=60)&&(102優(yōu)先級與結(jié)合性算術(shù)運(yùn)算>關(guān)系運(yùn)算>邏輯與運(yùn)算>邏輯或運(yùn)算,它們依次降低,但邏輯非運(yùn)算的優(yōu)先級高于算術(shù)運(yùn)算邏輯運(yùn)算是左結(jié)合的優(yōu)先級與結(jié)合性算術(shù)運(yùn)算>關(guān)系運(yùn)算>邏輯與運(yùn)算>邏輯或運(yùn)算,103邏輯運(yùn)算的短路性邏輯運(yùn)算的操作數(shù)是0和1,0和1的運(yùn)算是有規(guī)律的由“邏輯與”運(yùn)算組成的表達(dá)式,從左至右計(jì)算,遇到0就不用再向右計(jì)算了,因這時邏輯表達(dá)式的值必為假,只有都是真的時候向右計(jì)算才有意義。(i!=0)&&(j/i>0)由“邏輯或”構(gòu)成的邏輯表達(dá)式也是從左向右計(jì)算,如果遇到有一個操作數(shù)的表達(dá)式的值是1就不用再向右計(jì)算了,因這時整個邏輯表達(dá)式的值必為真。(grade1<60)||(grade2<60)邏輯運(yùn)算的短路性邏輯運(yùn)算的操作數(shù)是0和1,0和1的運(yùn)算是有規(guī)104利用短路性某年是閏年的條件為(1)“year能被4整除”并且“year不能被100整除”或者(2)“year能被4整除”并且“year也能被400整除”閏年判斷表達(dá)式為:(year%4==0&&year%100!=0)||year%400==0利用短路性某年是閏年的條件為105算法設(shè)計(jì)1輸入年份2判斷(year%4==0&&year
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南省衡陽市2025-2026學(xué)年八年級上學(xué)期1月期末考試英語試卷(含答案無聽力原文及音頻)
- 貴州省銅仁市松桃民族中學(xué)2025-2026學(xué)年高二上學(xué)期期末模擬測試化學(xué)試卷(含答案)
- 2026年上海市寶山區(qū)初三一模語文試卷(含答案)
- 2025-2026學(xué)年遼寧省丹東五中九年級(上)期末數(shù)學(xué)試卷(含答案)
- 五年級上冊語文期末考試卷及答案
- 衛(wèi)生事業(yè)單位面試真題及答案
- 裝飾工程、防水工程試題答案
- 部編版三年級語文(下冊)期末試卷及答案(今年)
- 雙十一光棍節(jié)酒店策劃
- 22春“財(cái)務(wù)管理”專業(yè)《企業(yè)財(cái)務(wù)管理》在線作業(yè)含答案參考8
- GB/T 20322-2023石油及天然氣工業(yè)往復(fù)壓縮機(jī)
- 提撈采油安全操作規(guī)程
- 中國重汽車輛識別代號(VIN)編制規(guī)則
- DB3211-T 1048-2022 嬰幼兒日間照料托育機(jī)構(gòu)服務(wù)規(guī)范
- YY/T 1846-2022內(nèi)窺鏡手術(shù)器械重復(fù)性使用腹部沖吸器
- GB/T 5237.3-2017鋁合金建筑型材第3部分:電泳涂漆型材
- GB/T 3625-2007換熱器及冷凝器用鈦及鈦合金管
- GB/T 15390-2005工程用焊接結(jié)構(gòu)彎板鏈、附件和鏈輪
- 學(xué)生傷害事故處理辦法及案例分析
- 安全管理人員紅頭任命文件
- 飛機(jī)油箱晃蕩CFD仿真分析FLOW-3D解決方案
評論
0/150
提交評論