版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
項目二分支程序設(shè)計
——傻瓜式四則計算器任務(wù)一細化功能任務(wù)二了解if語句任務(wù)三了解switchcase語句任務(wù)四實例體驗任務(wù)五算法歸納任務(wù)六畫流程圖任務(wù)七項目實現(xiàn)任務(wù)八項目擴展思考與練習(xí)
任務(wù)一細化功能
(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)輸入一個表達式,運算到出現(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(表達式)語句
2)?if(表達式)語句1else語句2
例如,
if(x>y)
printf("%d",x);
else
printf("%d",y);
3)?elseif語句
elseif語句的一般格式為
if(表達式1)
語句1
elseif(表達式2)
語句2
elseif(表達式3)
語句3
elseif(表達式m)
語句m
else
語句n
其流程圖如圖2.1所示。
圖2.1
if…else語句結(jié)構(gòu)流程圖
說明:
(1)三種形式的if語句中,在if后面都有“表達式”,一般為邏輯表達式或關(guān)系表達式,如,
if(a==b&&x==y)
printf("a=b,x=y");
在執(zhí)行if語句時先對表達式求解,若表達式的值為0,則按“假”處理;若表達式的值為非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)注意,不要誤認為上面是兩個語句(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(表達式)
{
case常量表達式1:語句組1;[break;]
case常量表達式2:語句組2;[break;]
case常量表達式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后面“表達式”的值與某個case后面的“常量表達式”的值相同時,就執(zhí)行該case后面的語句(組);當(dāng)執(zhí)行到break語句時,跳出switch語句,轉(zhuǎn)向執(zhí)行switch語句下面的語句(即右花括號下面的第一條語句)。
(2)如果沒有任何一個case后面的“常量表達式”的值與“表達式”的值匹配,則執(zhí)行default后面的語句(組)。然后,再執(zhí)行switch語句下面的語句。
3.switchcase語句相關(guān)說明
(1)
switch后面的“表達式”可以是int、char和枚舉型中的一種。
(2)每個case后面“常量表達式”的值必須各不相同,否則會出現(xiàn)相互矛盾的現(xiàn)象(即對表達式的同一值,有兩種或兩種以上的執(zhí)行方案)。
(3)case后面的常量表達式僅起語句標號作用,并不進行條件判斷。系統(tǒng)一旦找到入口標號,就從此標號開始執(zhí)行,不再進行標號判斷,所以必須加上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后面的條件表達式一般是一個整數(shù)表達式(或字符表達式),與之對應(yīng),case后面應(yīng)是一個整數(shù)或字符,也可以是不含變量與函數(shù)的常數(shù)表達式。
(3)一個switch結(jié)構(gòu)中不可以出現(xiàn)兩個case具有相同的常量表達式值。例如,
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ù)一細化的功能和任務(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)為真,否則為假”的表達式是()。
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是否為小寫字母的正確表達式是()。
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;則表達式(x>=y&&ch<'B'
&&!y)的值是()。
A.0
B.語法錯
C.1
D.假
5.以下哪個表達式為真時,不能表示整數(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時,表達式f=a>b>c的值是
。
2.在C語言中,用
表示邏輯真。
3.C語言提供的3種邏輯符號是
。
4.設(shè)x、y、z都是int型變量,請寫出描述“x、y和z中有兩個為負數(shù)”的表達式
。
5.條件“2<x<3或x<-10”的C語言表達式是
。
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.判斷閏年。
在公歷紀年中,有閏日的年份叫閏年,一般年份為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天。
閏年的計算方法:公元紀年的年數(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ù)輸入的成績分數(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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 連鎖店衛(wèi)生獎懲制度
- 酒店相關(guān)衛(wèi)生制度
- 衛(wèi)生院中藥工作制度
- 手衛(wèi)生設(shè)備管理制度
- 咖啡廳衛(wèi)生標準制度
- 衛(wèi)生院單位內(nèi)部監(jiān)督制度
- 衛(wèi)生院人員招聘制度
- 衛(wèi)生所管理制度
- 砂石廠衛(wèi)生管理制度
- 樓棟內(nèi)環(huán)境衛(wèi)生管理制度
- 2024-2025學(xué)年北京市海淀區(qū)高一上學(xué)期期中考試數(shù)學(xué)試題(解析版)
- 2025至2030中國時空智能服務(wù)(LBS)行業(yè)發(fā)展動態(tài)及發(fā)展趨勢研究報告
- 透析患者營養(yǎng)風(fēng)險評估與干預(yù)
- DB41/T 1354-2016 人民防空工程標識
- 山東省棗莊市薛城區(qū)2024-2025學(xué)年高二上學(xué)期期末數(shù)學(xué)試題
- 部編版道德與法治八年級上冊每課教學(xué)反思
- 電力配網(wǎng)工程各種材料重量表總
- 園林苗木的種實生產(chǎn)
- 【網(wǎng)絡(luò)謠言的治理路徑探析(含問卷)14000字(論文)】
- 2024年新安全生產(chǎn)法培訓(xùn)課件
- 卷閘門合同書
評論
0/150
提交評論