例題字母譯碼輸入一個(gè)小寫(xiě)字母輸出其后的第四個(gè)字符課件_第1頁(yè)
例題字母譯碼輸入一個(gè)小寫(xiě)字母輸出其后的第四個(gè)字符課件_第2頁(yè)
例題字母譯碼輸入一個(gè)小寫(xiě)字母輸出其后的第四個(gè)字符課件_第3頁(yè)
例題字母譯碼輸入一個(gè)小寫(xiě)字母輸出其后的第四個(gè)字符課件_第4頁(yè)
例題字母譯碼輸入一個(gè)小寫(xiě)字母輸出其后的第四個(gè)字符課件_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

例題:字母譯碼:輸入一個(gè)小寫(xiě)字母,輸出其后的第四個(gè)字符。 例如:輸入a ,輸出e; 輸入v,輸出z; 輸入y,輸出c;,程序(lt1.c): #include “stdio.h“ void main() char x,y; scanf(“%c“, ,x+4,如果x+4小于等于z,那么,否則,y=x+4,y=x-22;,x+4小于等于z,y=x+4,y=x-22,輸出y,是,否,if(x+4=z),y=x+4,else,y=x-22;,=,、=、=、!=,if,else,switch,第四章 選擇結(jié)構(gòu)程序設(shè)計(jì),重點(diǎn):1、掌握三種類(lèi)型運(yùn)算符:關(guān)系、邏輯、條件,2、掌握選擇結(jié)構(gòu)的兩種語(yǔ)句:if else switch,3、break語(yǔ)句的用法,流程圖:,條件P,語(yǔ)句A,語(yǔ)句B,Y,N,4.1關(guān)系運(yùn)算符及表達(dá)式,重點(diǎn)掌握幾種運(yùn)算符的書(shū)寫(xiě)、優(yōu)先級(jí)以及運(yùn)算規(guī)則,一、運(yùn)算符, = =,= !=,低,高,比較規(guī)則:,數(shù)值:按數(shù)的大小,字符:按ASCII碼,二、表達(dá)式,1、形式:,例如: (3+5)(5*2),2、表達(dá)式的值,若表達(dá)式成立則為1,若表達(dá)式不成立則為0,算術(shù)運(yùn)算符 * / % + -,賦值運(yùn)算符 = += -= *= /= %=,逗號(hào)運(yùn)算符 ,,低,高,條件運(yùn)算符 = = = !=,3、各運(yùn)算符的優(yōu)先級(jí),4、結(jié)合性:左結(jié)合,例如: int x=1,y=2,z=3; 則表達(dá)式 z y x的值 為,0,例如:66a 結(jié)果為,0,aA 結(jié)果為,1,例題:表示出下列關(guān)系:,1、能被3 整除的數(shù)x,X%3=0,2、所有的非負(fù)數(shù)x,X=0,3、所有的奇數(shù)X,X%2=1或者,X%2!=0,1.基本形式,條件P,真,假,語(yǔ)句1,語(yǔ)句2,形式:if (表達(dá)式) 語(yǔ)句1 else 語(yǔ)句2,注: if后的表達(dá)式一般為關(guān)系表達(dá)式或者邏輯表達(dá)式,也可以為任何合法的表達(dá)式。只要表達(dá)式的值為非0就作為真,否則為假。表達(dá)式一定要用()括起來(lái)。,4.2 if語(yǔ)句,練習(xí):求兩個(gè)數(shù)中比較大的數(shù)。,輸入兩個(gè)整數(shù)給x,y,xy,max=y,max=x,輸出max的值,#include void main() ,int x,y,max;,scanf(“%d,%d”,if(xy),max=x;,else,max=y;,printf(“the max number is %dn”,max);,練習(xí): 1、(lt1.c)做一個(gè)簡(jiǎn)單的加法運(yùn)算練習(xí)小程序,具體要求:由計(jì)算機(jī)隨機(jī)產(chǎn)生一個(gè)100以內(nèi)的加法運(yùn)算式,用戶來(lái)運(yùn)算,如果計(jì)算正確,則提示“right”,否則提示“wrong”。,2、異性朋友匹配小游戲。(friend.c) 游戲規(guī)則:由計(jì)算機(jī)扮演另一方隨機(jī)抽取一種性別。輸入你的性別,如果二者性別相同,則不能做朋友。如果不相同,則由你來(lái)快速猜出對(duì)方的性別,猜對(duì)即可做朋友,否則也不能做朋友!,補(bǔ)充:產(chǎn)生隨機(jī)數(shù)函數(shù): rand ()%N:產(chǎn)生0N)的整數(shù),注:一般在使用random函數(shù)之前先用srand()函數(shù)產(chǎn)生一個(gè)隨機(jī)的種子,一般利用系統(tǒng)的時(shí)鐘。格式為: srand(time(0),使用以上函數(shù)應(yīng)在程序的開(kāi)頭加相應(yīng)的頭文件“stdlib.h” 和”time.h”,例如:產(chǎn)生一個(gè)100以內(nèi)的隨機(jī)數(shù)賦值給變量X,應(yīng)使用的語(yǔ)句為: x=rand()%100;,例題:字母譯碼:輸入一個(gè)字母,輸出其后的第四個(gè)字符。 例如:輸入a ,輸出e; 輸入v,輸出z; 輸入Y,輸出C;,程序(lt2.c): #include “stdio.h“ void main() char x,y; scanf(“%c“, ,a,a,A,A,if(小寫(xiě)字母),y=(x+4- a )%26+a ;,else,y=(x+4- A )%26+A ;,小寫(xiě)字母,錯(cuò)誤,邏輯運(yùn)算符,小寫(xiě)字母的表示:,若有字符變量c,表示c的范圍屬于小寫(xiě)字母,則:,ca,cz,acz,ca & cz,&,|、!,4.2 邏輯運(yùn)算符及表達(dá)式,一、運(yùn)算符:,! & |,二、優(yōu)先級(jí),! & |,高,低,三、運(yùn)算規(guī)則,邏輯運(yùn)算符的運(yùn)算對(duì)象多為邏輯值(即真和假),也可以為任意類(lèi)型的數(shù)據(jù),只要表達(dá)式的值為非0就作為真運(yùn)算,0則作為假運(yùn)算。,例如:(53) & (612),3| (612),(aA)| 0 & b,! (x0),注:& 和|都為雙目運(yùn)算符, 而!為單目運(yùn)算符。,運(yùn)算規(guī)則:假設(shè)用a和b分別表示兩個(gè)表達(dá)式的值,,!a :對(duì)a的值求反,即若a的值為0 則表達(dá)式的值為 1,反之,若a的值為1,則表達(dá)式的值為0。,a & b a和b兩者都為1時(shí)表達(dá)式的值為1,a、b兩 者中有一個(gè)為0則表達(dá)式的值為0。,a | b a和b兩者都為0時(shí)表達(dá)式的值為0,a、b兩 者中有一個(gè)為1則表達(dá)式的值為1。,算術(shù)運(yùn)算符 * / % + -,賦值運(yùn)算符 = += -= *= /= %=,逗號(hào)運(yùn)算符 ,,低,高,條件運(yùn)算符 = = = !=,各運(yùn)算符的優(yōu)先級(jí),非運(yùn)算符 !,邏輯運(yùn)算符 & |,(53) & (612),3| (612),(aA)| 0 & b,! (x0),所以以下的表達(dá)式分別等價(jià)于:,53 & 612,3| 612,aA| 0 & b,! x0,錯(cuò)誤:!的優(yōu)先級(jí)高于關(guān)系運(yùn)算符,四、表達(dá)式:,1、形式:,2、表達(dá)式的值,若表達(dá)式成立則為1,若表達(dá)式不成立則為0,0,1,0,(3) 能夠同時(shí)被3和5整除的數(shù),x%3=0,x%5=0,&,(4) 表示所有的小寫(xiě)字母(某個(gè)變量的范圍為小寫(xiě)字母),c=a & c=z,(5) 表示所有的字母,c=a & c=z,c=A & c=Z,|,( ),( ),程序(lt2.c): #include “stdio.h“ void main() char x,y; scanf(“%c“, ,if(c=a & c=z),作業(yè):課本95頁(yè)第4題,4.3if語(yǔ)句的其他形式,條件P,真,語(yǔ)句,形式:if (表達(dá)式) 語(yǔ)句,其他操作,一、無(wú)else的if語(yǔ)句,/小寫(xiě)字母到大寫(xiě)字母的轉(zhuǎn)換 #include void main() char x,y; printf(“請(qǐng)輸入一個(gè)小寫(xiě)字母”); scanf(“%d”, ,/如果x是小寫(xiě)字母,x=a,x=z,&,if( ),(2)if語(yǔ)句的其他形式 (if語(yǔ)句的嵌套),例題:編寫(xiě)程序完成下列函數(shù)的運(yùn)算:,輸入 x,x0,y=1,X0,是,y=-1,是,y=0,否,否,條件1,語(yǔ)句1,條件2,是,語(yǔ)句2,是,語(yǔ)句3,否,否,形式: if(條件1) 語(yǔ)句1 else if(條件2) 語(yǔ)句2 else 語(yǔ)句3,條件1,語(yǔ)句1,條件2,否,語(yǔ)句2,是,語(yǔ)句3,否,是,形式: if(條件1) if(條件2) 語(yǔ)句1 else 語(yǔ)句2 else 語(yǔ)句3,練習(xí):,#include void main() int x,y; scanf(“%d”, ,if(x0),y=1;,else,if(x0),y=-1;,else,y=0;,main() int x,y; scanf(“%d”, ,if(x=0),if(x=0) if(x0) y=1; else y=0; else y=1;,y=1;,else,if(x0),y=1;,else,y=0;,練習(xí):,main() int a=2,b=-1,c=2; if(ab) if(b0) c=0; else c+=1; printf(“%dn”,c); ,程序的結(jié)果為:2,注: else 不能單獨(dú)使用,必須與if配對(duì)使用,而且與最近一個(gè)沒(méi)有匹配的if匹配,而不論書(shū)寫(xiě)形式如何。為了便于分析,If語(yǔ)句在書(shū)寫(xiě)上采用漸進(jìn)縮進(jìn)的形式。,main() int a=2,b=-1,c=2; if(ab) if(b0) c=0; else c+=1; printf(“%dn”,c); ,內(nèi)容回顧,1、關(guān)系運(yùn)算符、=、=、=、!=,2、邏輯運(yùn)算符 !、&、|,3、ifelse語(yǔ)句,注意: (1)if語(yǔ)句體和else語(yǔ)句體需要用括起來(lái),如果其中只有一條語(yǔ)句,則可以省略。,(2)如果使用if語(yǔ)句的嵌套,在書(shū)寫(xiě)時(shí)盡量采用縮進(jìn)的方式。,例題:編寫(xiě)一個(gè)四則運(yùn)算的運(yùn)算器。具體要求:輸入一個(gè)四則運(yùn)算計(jì)算式,計(jì)算機(jī)給出相應(yīng)的結(jié)果。 (operation.c),#include “stdio.h“ void main() ,int x,y;char c;,printf(“input an arithmatic operation:a+(-,*,/)bn“);,scanf(“%d%c%d“,輸入運(yùn)算式,c=+,輸出x+y,輸出x-y,c=*,c=-,輸出x*y,c=/,輸出x/y,提示“錯(cuò)誤”,if(c=+),printf(“%dn“,a+b);,else,if(c=-),printf(“%dn“,a-b);,else,else,else,if(c=*),if(c=/),printf(“%dn“,a*b);,printf(“%dn“,a/b);,printf(“ 錯(cuò)誤的表達(dá)式n”);,4.4 switch 語(yǔ)句,本節(jié)重點(diǎn):1)if語(yǔ)句與switch語(yǔ)句的關(guān)系。,2)break; 中斷語(yǔ)句的正確使用。,switch (表達(dá)式) case 常量表達(dá)式1:語(yǔ)句1 case 常量表達(dá)式2:語(yǔ)句2 case 常量表達(dá)式n:語(yǔ)句n default : 語(yǔ)句n+1 ,一、switch語(yǔ)句形式:,注:1)switch為關(guān)鍵字,為switch語(yǔ)句體。,2)switch后的表達(dá)式可以為任意類(lèi)型,放于()中。,3)case為關(guān)鍵字,只起到語(yǔ)句標(biāo)號(hào)的作用,不進(jìn)行判斷。常量表達(dá)式的類(lèi)型應(yīng)與switch后表達(dá)式的類(lèi)型一致。,4)case與后面的表達(dá)式必須用空格隔開(kāi)。,5)case后的語(yǔ)句可以為一條語(yǔ)句,也可有多條或者沒(méi)有。,6)default為關(guān)鍵字。代表所有case標(biāo)號(hào)之外的所有情況,可出現(xiàn)在語(yǔ)句體中的任何位置,也可以沒(méi)有。,switch (表達(dá)式) case 常量表達(dá)式1:語(yǔ)句1 case 常量表達(dá)式2:語(yǔ)句2 case 常量表達(dá)式n:語(yǔ)句n default : 語(yǔ)句n+1 ,二、執(zhí)行過(guò)程,計(jì)算switch后面表達(dá)式的值,有無(wú)對(duì)應(yīng)的case標(biāo)號(hào),無(wú),有無(wú)default,有,有,由此向下執(zhí)行,由此向下執(zhí)行,Switch語(yǔ)句體后面的語(yǔ)句,無(wú),將上述的if語(yǔ)句用switch語(yǔ)句來(lái)表示:,switch ( 表達(dá)式 ) case 常量表達(dá)式1:語(yǔ)句1 case 常量表達(dá)式2:語(yǔ)句2 case 常量表達(dá)式n:語(yǔ)句n default : 語(yǔ)句n+1 ,if(c=+)printf(“%dn“,a+b); else if(c=-)printf(“%dn“,a-b); else if(c= *)printf(“%dn“,a*b); else if(c=/)printf(“%dn“,a/b); else printf(“錯(cuò)誤的表達(dá)式!n“);,c,+:,-:,printf(“%dn“,a+b);,printf(“%dn“,a-b);,case *:,printf(“%dn“,a*b);,case /:,printf(“%dn“,a/b);,default :,printf(“錯(cuò)誤的表達(dá)式n”);,例如在程序運(yùn)行時(shí)輸入6+3 程序輸出:,注:switch語(yǔ)句常常與break語(yǔ)句一起使用,才能起到真正的分支作用。,switch(c) case +:printf(“%dn“,a+b); case -:printf(“%dn“,a-b); case *:printf(“%dn“,a*b); case /:printf(“%dn“,a/b); default:printf(“錯(cuò)誤的表達(dá)式n”); ,由此可見(jiàn),并沒(méi)有起到真正的分支作用。,break;,break;,break;,break;,break;,三、break語(yǔ)句,中斷語(yǔ)句,執(zhí)行到break語(yǔ)句后,立即跳出switch語(yǔ)句體。,練習(xí):把下列的if語(yǔ)句改寫(xiě)成switch語(yǔ)句,if(x=1) n1+; else if(x=2) n2+; else if(x=3) n3+; else n4+;,switch(x) case 1: n1+;break; case 2: n2+;break; case 3: n3+;break; default: n4+;,練習(xí):輸入一個(gè)不多于5位的正整數(shù),分解出其中每位上的數(shù)字,然后將從高位向低位輸出。(integer.c),引申思考:輸入一個(gè)任意位數(shù)的正整數(shù),分解出其中的每位上的數(shù)字。(從低位向高位輸出) (chp5integer.c),練習(xí):編程序完成以下功能:輸入兩個(gè)整數(shù),通過(guò)菜單選擇對(duì)這兩個(gè)數(shù)進(jìn)行加、減、乘、除不同操作,并將運(yùn)行結(jié)果輸出。(operation.c),引申思考:進(jìn)行多個(gè)數(shù)學(xué)式的運(yùn)算,直到不想計(jì)算為止(以輸入字符n作為結(jié)束標(biāo)志)。(chp5operation.c),例:能正確表示邏輯關(guān)系:“a=1或a0”的C語(yǔ)言表達(dá)式是( ) A) a=1 or a=1 | a=1 & a=1 | a=0,課程回顧,1、關(guān)系運(yùn)算符和邏輯運(yùn)算符。,例題:設(shè)int x=3,y=0; (x0) 執(zhí)行該語(yǔ)句后y的值為:,1,(x0),(2)& 和 |運(yùn)算符的運(yùn)算規(guī)則。,D,注意:(1)會(huì)表示簡(jiǎn)單或者復(fù)雜的條件,在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。(參見(jiàn)課本77頁(yè)說(shuō)明),練習(xí):輸入一個(gè)不多于5位的正整數(shù),求出它是幾位數(shù)?,題解: #include void main() int x,n; printf(“請(qǐng)輸入一個(gè)不多于5位的正整數(shù)(0-99999):“); ,scanf(“%d“,if(x=10000) n=5;,else if(x=1000) n=4;,else if(x=100) n=3;,else if(x=10) n=2;,else n=1;,printf(“%dn“,n);,(x=10000)& (n=5),(x=1000)& (n=4),(x=100)& (n=3),(x=10)& (n=2),(n=1),|,|,|,|,(x=10000)& (n=5)| (x=1000)& (n=4) |(x=100)& (n=3) |(x=10)& (n=2)| (n=1),(x/10000),2、實(shí)現(xiàn)分支的兩種語(yǔ)句:ifelse 和switch,注意: (1)else 與if的匹配原則。 (2)如果if或者else的語(yǔ)句體有多條語(yǔ)句,必須用大括號(hào)括起來(lái)。,(3)switch一般要與break連用才能起到多分支的作用。,練習(xí): 下述關(guān)于break語(yǔ)句的描述中,錯(cuò)誤的是( ) A . break語(yǔ)句可用于if語(yǔ)句語(yǔ)句中,它將退出if語(yǔ)句 B . break語(yǔ)句可用于switch語(yǔ)句中,它將退出switch語(yǔ)句 C . break語(yǔ)句可用于循環(huán)體內(nèi),它將退出該重循環(huán) D . break語(yǔ)句在一個(gè)循環(huán)體內(nèi)可以出現(xiàn)多次,A,練習(xí): main( ) int x=1,a=0,b=0; switch(x) case 0: b+; case 1: a+; case 2: a+;b+; printf(“a=%d,b=%dn”,a,B) ; 該程序的輸出結(jié)果是( ) A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2,A,練習(xí):輸入一個(gè)不多于5位的正整數(shù),求出它是幾位數(shù),然后由高位到低位輸出每一位上的數(shù)字。,題解: #include void main() int x,n; printf(“請(qǐng)輸入一個(gè)不多于5位的正整數(shù)(0-99999):“); scanf(“%d“, ,ten_thou=x/10000; thou=x%10000/1000; hun=x%1000/100; ten=x%100/10; id=x%10;,if(n=5)printf(“%d,%d,%d,%d,%dn“,ten_thou,thou,hun,ten,id); else if(n=4)printf(“%d,%d,%d,%dn“,thou,hun,ten,id); else if(n=3) printf(“%d,%d,%dn“,hun,ten,id); else if(n=2) printf(“%d,%dn“,ten,id); else printf(“%dn“,id);,switch(n) case 5:printf(“%d,%d,%d,%d,%dn“,ten_thou,thou,hun,ten,id); break; case 4:printf(“

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論