版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
項目二分支程序設(shè)計
——傻瓜式四則計算器任務(wù)一細(xì)化功能任務(wù)二了解if語句任務(wù)三了解switchcase語句任務(wù)四實例體驗任務(wù)五算法歸納任務(wù)六畫流程圖任務(wù)七項目實現(xiàn)任務(wù)八項目擴展思考與練習(xí)
任務(wù)一細(xì)化功能
(1)能夠進行加減乘除運算。這是本項目最基本最核心的功能,也是大家在使用計算器時最常用的功能。該功能與真實的計算器有一定的區(qū)別,目的是減小項目的難度。真實的計算器應(yīng)該還可以進行平方、開方、求絕對值、求正弦余弦等多種多樣的運算。
(2)運算數(shù)和結(jié)果都是整數(shù)。
這是本項目的要求。
真實的運算器還可以進行浮點數(shù)的運算,這個功能將在項目擴展里進行討論。
(3)四種運算符的優(yōu)先級相同,按從左到右的順序計算。
這是本項目的假設(shè),與真實的計算器有一定的區(qū)別,目的是減小項目的難度。
真實的計算器應(yīng)該是:先做乘除,后做加減;有小括號時要先做小括號里的運算。要實現(xiàn)這樣的功能需要用到數(shù)據(jù)結(jié)構(gòu)中的堆棧,因此本項目暫不實現(xiàn)。
(4)輸入一個表達(dá)式,運算到出現(xiàn)“=”即輸出結(jié)果,程序結(jié)束。
這是本項目的要求,與真實的計算器有一定的區(qū)別。
真實的計算器應(yīng)該是:可以重新開始新的運算,一直到用戶想要停止,關(guān)掉運算器為止。要想實現(xiàn)這樣的功能,需要用到項目三講到的循環(huán),因此本項目暫不實現(xiàn)。
(5)最少進行2個數(shù),最多進行4個數(shù)的運算。
這是本項目的要求,目的是減小項目的難度,與真實的計算器有一定的區(qū)別。真實的計算器可以隨意進行較多數(shù)據(jù)的運算。
任務(wù)二了解if語句
常用的分支語句有兩類:if語句和switchcase語句,前者用于兩路分支,即有兩種可能的執(zhí)行情況;后者用于多路分支,即有多種可能的執(zhí)行情況。if語句是用來判定所給定的條件是否滿足,并根據(jù)判定的結(jié)果(真或假)來決定執(zhí)行所給出的兩種操作之一。
C語言提供了三種形式的if語句。
1)
if(表達(dá)式)語句
2)?if(表達(dá)式)語句1else語句2
例如,
if(x>y)
printf("%d",x);
else
printf("%d",y);
3)?elseif語句
elseif語句的一般格式為
if(表達(dá)式1)
語句1
elseif(表達(dá)式2)
語句2
elseif(表達(dá)式3)
語句3
elseif(表達(dá)式m)
語句m
else
語句n
其流程圖如圖2.1所示。
圖2.1
if…else語句結(jié)構(gòu)流程圖
說明:
(1)三種形式的if語句中,在if后面都有“表達(dá)式”,一般為邏輯表達(dá)式或關(guān)系表達(dá)式,如,
if(a==b&&x==y)
printf("a=b,x=y");
在執(zhí)行if語句時先對表達(dá)式求解,若表達(dá)式的值為0,則按“假”處理;若表達(dá)式的值為非0,則按“真”處理,之后執(zhí)行指定的語句。例如有以下if語句:
if(3)
printf("O.K.");
語句為真,應(yīng)執(zhí)行輸出“O.K.”的操作。
(2)第2、第3種形式的if語句中,在每個else前面有一分號,整個語句結(jié)束處有一分號。例如,
if(x>0)
printf("%f",x);
else
printf("%f",-x);
這是由于分號是C語句中不可缺少的部分,這個分號是if語句中的內(nèi)嵌語句所要求的。如果無此分號,則出現(xiàn)語法錯誤。但應(yīng)注意,不要誤認(rèn)為上面是兩個語句(if?語句和else?語句),它們都屬于同一個if語句。else子句不能作為語句單獨使用,它必須是if語句的一部分,與if配對使用。
任務(wù)三了解switchcase語句
switch結(jié)構(gòu)與if…else結(jié)構(gòu)是多分支選擇的兩種形式。它們的應(yīng)用環(huán)境不同:if…else用于對多條件并列測試,從中取一的情形;switch結(jié)構(gòu)為單條件測試,用于從多種結(jié)果中取一種的情形。
1.switch語句的一般格式
switch語句的一般格式為
switch(表達(dá)式)
{
case常量表達(dá)式1:語句組1;[break;]
case常量表達(dá)式2:語句組2;[break;]
case常量表達(dá)式n:語句組n;[break;]
[default:語句組;[break;]]/*default子句是可選的*/
}
例如,下面的程序段用于判斷學(xué)生某門課程的成績等級。等級規(guī)定為:90~100分為“優(yōu)秀”,80~89分為“良好”,70~79分為“中等”,60~69分為“及格”,60分以下為“不及格”。
2.switch語句的執(zhí)行過程
(1)當(dāng)switch后面“表達(dá)式”的值與某個case后面的“常量表達(dá)式”的值相同時,就執(zhí)行該case后面的語句(組);當(dāng)執(zhí)行到break語句時,跳出switch語句,轉(zhuǎn)向執(zhí)行switch語句下面的語句(即右花括號下面的第一條語句)。
(2)如果沒有任何一個case后面的“常量表達(dá)式”的值與“表達(dá)式”的值匹配,則執(zhí)行default后面的語句(組)。然后,再執(zhí)行switch語句下面的語句。
3.switchcase語句相關(guān)說明
(1)
switch后面的“表達(dá)式”可以是int、char和枚舉型中的一種。
(2)每個case后面“常量表達(dá)式”的值必須各不相同,否則會出現(xiàn)相互矛盾的現(xiàn)象(即對表達(dá)式的同一值,有兩種或兩種以上的執(zhí)行方案)。
(3)case后面的常量表達(dá)式僅起語句標(biāo)號作用,并不進行條件判斷。系統(tǒng)一旦找到入口標(biāo)號,就從此標(biāo)號開始執(zhí)行,不再進行標(biāo)號判斷,所以必須加上break語句,以便結(jié)束switch語句。
(4)各case及default子句的先后次序不影響程序執(zhí)行結(jié)果。
(5)多個case子句可共用同一語句(組)。
(6)用switch語句實現(xiàn)的多分支結(jié)構(gòu)程序,完全可以用if語句和if語句的嵌套來實現(xiàn)。
4.需要注意的問題
(1)
switch結(jié)構(gòu)的執(zhí)行部分是一個由一些case子結(jié)構(gòu)與一個可缺省的default子結(jié)構(gòu)組成的復(fù)合語句。(要特別注意寫一對花括號。)
(2)
switch后面的條件表達(dá)式一般是一個整數(shù)表達(dá)式(或字符表達(dá)式),與之對應(yīng),case后面應(yīng)是一個整數(shù)或字符,也可以是不含變量與函數(shù)的常數(shù)表達(dá)式。
(3)一個switch結(jié)構(gòu)中不可以出現(xiàn)兩個case具有相同的常量表達(dá)式值。例如,
case3+2:
case8-3:
是不允許的。
(4)
switch結(jié)構(gòu)允許嵌套。
任務(wù)四實例體驗
在設(shè)計完整的項目之前,我們先演示一個具體的例子,從這個例子大家可以體會本項目的處理過程。這種思想可以應(yīng)用到更多的問題和應(yīng)用上,總結(jié)起來,就是“數(shù)據(jù)驅(qū)動,手腦并用,步步模擬,豁然貫通”。比如1*2+3-4=,用我們的運算器進行運算,其步驟如下。
任務(wù)五算法歸納
根據(jù)任務(wù)一細(xì)化的功能和任務(wù)四中的實例,我們可以設(shè)計以下幾步實現(xiàn)功能,這些步驟即可稱為算法。
任務(wù)六畫流程圖
用流程圖的方式表示上述算法,如圖2.2所示。圖2.2流程圖
任務(wù)七項目實現(xiàn)
程序?qū)崿F(xiàn)1:
程序分析如下:
(1)結(jié)構(gòu)分析:
定義變量:2~3行。
輸入數(shù)據(jù):4~6行。
核心處理:7~15行。
輸出結(jié)果:16~17行。
(2)語句類型分析:
定義變量:2~3行。
賦值語句:x行。
分支語句:y行,這是本章出現(xiàn)的新語句。
循環(huán)語句:本項目沒有用到循環(huán)。
(3)運行結(jié)果:
運行結(jié)果如圖2.3所示。
圖2.3運行結(jié)果
程序?qū)崿F(xiàn)2:
任務(wù)八項目擴展
商店賣西瓜,20斤以上的每斤0.85元;重于15斤輕于等于20斤的,每斤0.90元;重于10斤輕于等于15斤的,每斤0.95元;重于5斤輕于等于10斤的,每斤1.00元;輕于或等于5斤的,每斤1.05元。輸入西瓜的重量,輸出應(yīng)付的貨款。
1.嵌套if結(jié)構(gòu)
要處理這種多重條件判斷的情況,除了用前面介紹的switch結(jié)構(gòu)和if…else結(jié)構(gòu)外,還可以用嵌套if結(jié)構(gòu)。嵌套if結(jié)構(gòu)就是將整個if語句塊插入到另一個if語句塊中,其一般形式可表示如下:
在嵌套內(nèi)的if語句可能又是if…else型的,這將會出現(xiàn)多個if和多個else重疊的情況,這時要特別注意if和else的配對問題。例如,
C語言規(guī)定,else總是與它前面最近的if配對,因此對上述例子的else應(yīng)與if(y>1)配對。為了增加程序的可讀性,提倡使用大括號括起來以避免看起來有二義性。
2.實例體驗
先演示一個具體的例子,通過這個例子來體會這個項目的處理過程。例如,計算8斤西瓜應(yīng)付的貨款。
3.算法歸納
根據(jù)實例體驗,我們可以設(shè)計以下幾步實現(xiàn)功能,即算法如下。
4.流程圖
該任務(wù)的流程圖如圖2.4所示。
圖2.4流程圖
5.項目實現(xiàn)
思?考?與?練?習(xí)
一、選擇題
1.邏輯運算符兩側(cè)運算對象的數(shù)據(jù)類型是()。
A.只能是0或1
B.只能是0或非0整數(shù)
C.只能是整型或字符型數(shù)據(jù)
D.可以是任何類型的數(shù)據(jù)
2.能正確表示“當(dāng)x的取值在[5,20]和[100,120]范圍內(nèi)為真,否則為假”的表達(dá)式是()。
A.(x>=5)&&(x<=20)&&(x>=100)&&(x<=120)
B.(x>=5)&&(x<=20)||(x>=100)&&(x<=120)
C.(x>=5)||(x<=20)&&(x>=100)||(x<=120)
D.(x>=5)||(x<=20)&&(x>=100)||(x<=120)
3.判斷字符型變量ch是否為小寫字母的正確表達(dá)式是()。
A.'a'<=ch<='z' B.(ch>='a')&(ch<='z')
C.(ch>='a')&&(ch<='z')D.('a'<=ch)AND('z'>=ch)
4.已知x=43,ch='A',y=0;則表達(dá)式(x>=y&&ch<'B'
&&!y)的值是()。
A.0
B.語法錯
C.1
D.假
5.以下哪個表達(dá)式為真時,不能表示整數(shù)i為奇數(shù)?()
A.i%2==0
B.!(i%2==0)
C.!(i%2)
D.i%2
6.若有:inta=1,b=2,c=3,d=4,m=2,n=2A;執(zhí)行(m=a>b)&&(n=c>d)后n的值是多少?()
A.1 B.2 C.3 D.4
7.以下不正確的if語句形式是()。
A.if(x>y&&x!=y);
B.if(x==y)x+=y;
C.if(x!=y)scanf("%d",&x)elsescanf("%d",&y);
D.if(x<y){x++;y++;}
8.已知intx=10,y=20,z=30;以下語句執(zhí)行后x,y,z的值是多少?()
if(x>y)
z=x;x=y;y=z;
A.x=10,y=20,z=30 B.x=20,y=30,z=30
C.x=20,y=30,z=10 D.x=20,y=30,z=20
9.以下if語句語法正確的是()。
10.請閱讀以下程序,并作出判斷。()
main()
{
inta=5,b=0,c=0;
if(a=b+c)printf("***\n");
elseprintf("$$$\n");
}
A.有語法錯誤,不能通過編譯
B.可以通過編譯但不能通過連接
C.輸出***
D.輸出$$$
11.執(zhí)行以下代碼,其輸出結(jié)果是什么?()
12.執(zhí)行下面代碼,其輸出結(jié)果是什么?()
二、填空題
1.當(dāng)a=3,b=2,c=1時,表達(dá)式f=a>b>c的值是
。
2.在C語言中,用
表示邏輯真。
3.C語言提供的3種邏輯符號是
。
4.設(shè)x、y、z都是int型變量,請寫出描述“x、y和z中有兩個為負(fù)數(shù)”的表達(dá)式
。
5.條件“2<x<3或x<-10”的C語言表達(dá)式是
。
6.以下程序的運行結(jié)果是
。
7.請閱讀以下程序,若運行時輸入:1605<回車>時,程序的運行結(jié)果是________。
8.以下程序?qū)崿F(xiàn)輸出x、y、z三個數(shù)中的最大者,請在橫線處填入正確內(nèi)容。
9.輸入一個字符,如果它是一個大寫字母,則把它變成小寫字母;如果它是一個小寫字母,則把它變成大寫字母;其他字母不變。請?zhí)羁铡?/p>
10.當(dāng)a=1,b=3,c=5,c=4時,執(zhí)行完下面一段程序后x的值是______________。請嘗試調(diào)整下面代碼的格式,使其容易理解。
11.當(dāng)x=10,y=20;執(zhí)行完下面一行程序后max的值是______________。
max=(x>y)?x:y;
12.為了避免在嵌套的條件語句if…else中產(chǎn)生二義性,C語言規(guī)定:else子句總是與
配對。
三、編程題
1.從鍵盤輸入一個整數(shù),求其絕對值并輸出。
2.編程實現(xiàn)求分段函數(shù)的值。
要求如下:
(1)用if語句實現(xiàn)分支。自變量x與函數(shù)值均采用雙精度類型。
(2)自變量x值從鍵盤輸入,且輸入前要有提示信息。
(3)分別以-3.0,-1.0,0,0.5,5.5,-8.5,15.5作為自變量的值,運行該程序,記錄并分析運行結(jié)果。
3.輸入3個整數(shù)x、y、z,請把這3個數(shù)由小到大輸出。
4.判斷閏年。
在公歷紀(jì)年中,有閏日的年份叫閏年,一般年份為365天,閏年為366天。由于地球繞太陽運行周期為365天5小時48分46秒(合365.24219天)即一回歸年,公歷把一年定為365天。所余下的時間約為四年累計一天,加在2月里,所以平常年份每年365天,2月為28天;閏年為366天,2月為29天。但這樣一算,每4年又多算了44分56秒,每400年就要多算3天2小時53分20秒,所以就規(guī)定了公歷年份是整百數(shù)的必須是400的倍數(shù)才是閏年。因此,每400年中有97個閏年,閏年在2月末增加一天,閏年366天。
閏年的計算方法:公元紀(jì)年的年數(shù)可以被4整除,即為閏年;被100整除而不能被400整除為平年;被100整除也可被400整除的為閏年。如2000年是閏年,而1900年不是。
要求:從鍵盤輸入一個年份,編程判斷其是否為閏年,并輸出結(jié)果。
步驟:
①從鍵盤輸入一個正整數(shù),作為年份,且輸入前要有提示信息;
②判斷閏年,按照上面所述計算方法進行判斷;
③輸出結(jié)果。
例如,輸入2000,輸出結(jié)果“2000年是閏年”。
5.從鍵盤輸入一個整數(shù),判斷該整數(shù)是否為素數(shù)。是素數(shù)則輸出“yes”,否則輸出“no”。
6.從鍵盤輸入一個年份值和一個月份值,判斷該月的天數(shù)。(說明:一年有12個月,大月的天數(shù)是31,小月的天數(shù)是30。2月的天數(shù)比較特殊,遇到閏年是29天,否則為28天。)
7.根據(jù)輸入的成績分?jǐn)?shù)score,輸出相應(yīng)的等級。其對應(yīng)關(guān)系如下:
score≥90分的同學(xué)用A表示;
score<90,且score≥80分的同學(xué)用B表示;
score<80,且score≥70分的同學(xué)用C表示;
score<70,且score≥60分的同學(xué)用D表示
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024秋三年級語文上冊 第一單元 第2課 花的學(xué)校說課稿 新人教版
- 2024年春九年級歷史上冊 第22課 科學(xué)和思想的力量說課稿 新人教版
- 6梯形的面積 說課稿-2024-2025學(xué)年人教版數(shù)學(xué)五年級上冊
- 2024-2025學(xué)年高中化學(xué) 第一章 物質(zhì)結(jié)構(gòu)元素周期律 第一節(jié) 元素周期表第1課時說課稿1 新人教版必修2
- 2024年秋八年級語文上冊 第五單元 名著導(dǎo)讀《昆蟲記》說課稿 新人教版001
- 2024年春七年級地理下冊 第6章 第2節(jié) 自然環(huán)境說課稿2 (新版)新人教版
- 9 烏鴉喝水(說課稿)2024-2025學(xué)年統(tǒng)編版語文一年級上冊001
- 1《植物》科學(xué)閱讀《我們離不開植物》(說課稿)2023-2024學(xué)年一年級上冊科學(xué)教科版001
- 2025個人購房合同樣本(合同版本)
- Unit2 Bridging Cultures Learning About Language Structures 說課稿-2024-2025學(xué)年高中英語人教版(2019)選擇性必修第二冊
- 三對三籃球賽記錄表
- 礦山電工知識點講解
- 物業(yè)公司服務(wù)質(zhì)量檢查流程
- 中國心胸外科的歷史和現(xiàn)狀
- 人教版9年級全一冊英語單詞表
- 三門峽水利工程案例分析工程倫理
- 中國旅游地理區(qū)劃-京津冀旅游區(qū)
- “1+X”證書制度試點職業(yè)技能等級證書全名錄
- 《社會主義市場經(jīng)濟理論(第三版)》第八章社會主義市場經(jīng)濟調(diào)控論
- 交流伺服系統(tǒng)常見故障及處理分解課件
- 水土保持單元工程質(zhì)量評定表
評論
0/150
提交評論