版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
選擇結(jié)構(gòu)編程練習(xí)
1.身高預(yù)測(cè)
每個(gè)做父母的都關(guān)心自己孩子成人后的身高,據(jù)有關(guān)生理衛(wèi)生知識(shí)與數(shù)理統(tǒng)計(jì)分析表
明,影響小孩成人后的身高的因素包括遺傳、飲食習(xí)慣與體育鍛煉等。小孩成人后的身高與
其父母的身高和自身的性別密切相關(guān)。
設(shè)faHeight為其父身高,moHeight為其母身高,身高預(yù)測(cè)公式為
男性成人時(shí)身高=(fhHeight+moHeight)xO.54cm
女性成人時(shí)身高=(fhHcightx0.923+moHcight)/2cm
此外,如果喜愛(ài)體育鍛煉,那么可增加身高2%;如果有良好的衛(wèi)生飲食習(xí)慣,那么可
增加身高1.5%。
編程從鍵盤(pán)輸入用戶(hù)的性別(用字符型變量sex存儲(chǔ),輸入字符F表示女性,輸入字符
M表示男性)、父母身高(用實(shí)型變量存儲(chǔ),faHeight為其父身高,moHeight為其母身高)、
是否喜愛(ài)體育鍛煉(用字符型變量sports存儲(chǔ),輸入字符Y表示喜愛(ài),輸入字符N表示不
喜愛(ài))、是否有良好的飲食習(xí)慣等條件(用字符型變量diet存儲(chǔ),輸入字符Y表示良好,輸
入字符N表示不好),利用給定公式和身高預(yù)測(cè)方法對(duì)身高進(jìn)行預(yù)測(cè)。
symsfmYN
faHeight=inputC請(qǐng)輸入父親的身高:);
moHeight=input(,請(qǐng)輸入母親的身高:);
x=input(,請(qǐng)輸入x的性別:力
sport=input。是否喜歡運(yùn)動(dòng)(Y/N):);
diet=inpu4飲食是否良好(Y/N):);
ifx==m
child=(faHeight+moHeight)*0.54;
else
child=(faHeight*0.923+moHeight)/2;
end
ifsport==Y
child=child*1.02;
else
child=child;
end
ifdiet==Y
child=child*1.015;
else
child=child;
end
child
2.簡(jiǎn)單的計(jì)算器
用switch語(yǔ)句編程設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器程序,要求根據(jù)用戶(hù)從鍵盤(pán)輸入的表達(dá)式:
操作數(shù)1運(yùn)算符op操作數(shù)2
計(jì)算表達(dá)式的值,指定的算術(shù)運(yùn)算符為加(+)、減(-)、乘(*)、除(/)。
m=inputC操作數(shù)1運(yùn)算符op操作數(shù)2:
q=find(m—+,|m=*-,|m—7,|m==,x,|m=='-^');
a=str2num(m(1:q-1));
b=m(q);
c=str2num(m(q+l:end));
switchb
case
a+c
case
a-c
case'*'
a*c
case*x'
a*c
case7'
a/c
case
a/c
end
(1)如果要求程序能進(jìn)行浮點(diǎn)數(shù)的算術(shù)運(yùn)算,程序應(yīng)該如何修改?如何比較實(shí)型變量
data2和常數(shù)0是否相等?
formatlong
m=input(操作數(shù)1運(yùn)算符op操作數(shù)2:
q=find(m=,+,|rn==,-,|m=,*,|m===7,|m=,><,|m=--^');
a=str2num(m(1:q-1));
b=m(q);
c=str2num(m(q+l:end));
switchb
case
a+c
case
a-c
case
a*c
case'x,
a*c
case7,
a/c
case中
a/c
end
(2)如果要求輸入的算術(shù)表達(dá)式中的操作數(shù)和運(yùn)算符之間可以加入任意多個(gè)空白符,
那么程序如何修改?
formatlong
m=input(操作數(shù)1運(yùn)算符op操作數(shù)2:M);
m(find(isspace(m)))=[]
q=find(m—+*|m--|m-*||m=7,|m—x'|m=='-);
a=str2num(m(1:q-1));
b=m(q);
c=str2num(m(q+l:end));
switchb
case
a+c
case
a-c
case
a*c
caseX
a*c
case
a/c
case
a/c
end
(3)(選作題)如果要求連續(xù)做多次算術(shù)運(yùn)算,每次運(yùn)算結(jié)束后,程序都給出提示:
Doyouwanttocontinue(Y/Nory/n)?
用戶(hù)輸入Y或y時(shí),程序繼續(xù)進(jìn)行其他算術(shù)運(yùn)算;否則程序退出運(yùn)行狀態(tài)。那么,程
序如何修改?
symsYNyn
fbnnatlong
a=inpu《請(qǐng)輸入操作數(shù)I:1);
b=inpu4請(qǐng)輸入運(yùn)算符op,7s');
c=input(,請(qǐng)輸入操作數(shù)2:);
switchb
case
a+c
case
a-c
case***
a*c
case'x'
a*c
case71
a/c
case
a/c
end
F=input(*Doyouwanttocontinue(Y/Nory/n),);
whileF=Y
formatlong
a=input(,請(qǐng)輸入操作數(shù)1:1);
b=input。請(qǐng)輸入運(yùn)算符op,7s');
c=input(請(qǐng)輸入操作數(shù)2:);
switchb
case
a+c
case
a-c
case
a*c
case*
a*c
case71
a/c
case
a/c
end
F=input(*Doyouwanttocontinue(Y/Nory/n),);
End
(2)formatlong
d=Y;
whiled=='Yr|d=y
m=input(操作數(shù)1運(yùn)算符op操作數(shù)2:7s*);
m(find(isspace(m)))=[]
q=find(m==,+'|m==,-,|m=,*'|m==7,|m==,X'|m=='4-');
a=str2num(m(1:q-1));
b=m(q);
c=str2num(m(q-i-l:end));
switchb
case
a+c
case
a-c
case
a*c
case
a*c
case7,
a/c
case+
a/c
end
d=input(*Doyouwanttocontinue(Y/Nory/n)?7s');
end
循環(huán)結(jié)構(gòu)編程練習(xí)
猜數(shù)游戲
在這個(gè)實(shí)驗(yàn)中,我們將嘗試編寫(xiě)一個(gè)猜數(shù)游戲程序,這個(gè)程序看上去有些難度,但是如
果按下列要求循序漸進(jìn)地編程實(shí)現(xiàn),會(huì)發(fā)現(xiàn)其實(shí)這個(gè)程序是很容易實(shí)現(xiàn)的。那么,現(xiàn)在就開(kāi)
始吧,先編寫(xiě)第1個(gè)程序,然后試著在第1個(gè)程序的基礎(chǔ)上編寫(xiě)第2個(gè)程序,……
程序1編程先由計(jì)算機(jī)“想”一個(gè)1?100之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,則計(jì)算
機(jī)給出提示“Right!”,否則提示“Wrong!”,并告訴人所猜的數(shù)是大(Toohigh)還是小(Toolow),
然后結(jié)束游戲。要求每次運(yùn)行程序時(shí)機(jī)器所“想”的數(shù)不能都一樣。
程序2編程先由計(jì)算機(jī)“想”一個(gè)1?100之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,則結(jié)束
游戲,并在屏幕上輸出人猜了多少次才猜對(duì)此數(shù),以此來(lái)反映猜數(shù)者“猜”的水平;否則計(jì)
算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,直到人猜對(duì)為止。
程序3編程先由計(jì)算機(jī)“想”一個(gè)1?100之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,則結(jié)束
游戲,并在屏幕上輸出人猜了多少次才猜對(duì)此數(shù),以此來(lái)反映猜數(shù)者“猜”的水平;否則計(jì)
算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10次,如果猜了10次仍未猜
中的話,結(jié)束游戲。
程序4編程先由計(jì)算機(jī)“想”一個(gè)1?100之間的數(shù)請(qǐng)人猜,如果人猜對(duì)了,在屏幕上輸
出人猜了多少次才猜對(duì)此數(shù),以此來(lái)反映猜數(shù)者“猜”的水平,則結(jié)束游戲;否則計(jì)算機(jī)給
出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10次,如果猜了10次仍未猜中的話,
則停止本次猜數(shù),然后繼續(xù)猜下一個(gè)數(shù)。每次運(yùn)行程序可以反復(fù)猜多個(gè)數(shù),直到操作者想停
止時(shí)才結(jié)束。
a=fix((l00+1)*rand(1));
b=input(,請(qǐng)輸入一個(gè)大于0小于100的整數(shù):,);
fori=l:10
ifa=b
disp('Youwin!')
disp(['你總共用了',num2str⑴;次])
break;
elseifb>a
disp(['ToohighlYouhava',num2str(10-i),'chances!'])
else
disp(['Toolow!Youhava',num2str(10-i),'chances!'])
end
b=input(請(qǐng)?jiān)佥斎胍粋€(gè)整數(shù):)
end
1.猴子吃桃問(wèn)題。猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半另一個(gè),以后每天早晨都吃剩下
的一半另一個(gè),到第十天早晨再想吃時(shí),就剩一個(gè)桃子。問(wèn)第一天共摘了多少桃子。
要求:分別用三種語(yǔ)句編寫(xiě)程序。
(1)functionPeach
clc
number=l;
x(10)=number;
fprintff計(jì)算結(jié)果如下:\nf);
fori=9:-l:l
x(i)=(x(i+1)4-1)*2;
fprintf。第%(1天有%d個(gè)桃子\n;i,x⑴);
end
(2)
i=10;x=l;
whilei>l
i=i-l;
x=(x+l)*2;
end;x
(3)
functiony=Eatpeach(x);
y=x-(l/2*x+l);
forx=l:100000;
y=x;
fori=l:9
y=Eatpeach(y);
end
ify=l
x
break
end
end
2.編寫(xiě)程序驗(yàn)證下列結(jié)論:任何一個(gè)自然數(shù)n的立方都等于n個(gè)連續(xù)奇數(shù)之和。例如:I3
=1;23=3+5;33=7+9+11o
要求:程序?qū)γ總€(gè)輸入的自然數(shù)計(jì)算并輸出相應(yīng)的連續(xù)奇數(shù),直到輸入的自然數(shù)為0時(shí)止。
n=input。請(qǐng)輸入一個(gè)數(shù)字:力
k=n*n*n;
s=0;
forl:2:k;
c=i;
A=[];
s=0;
fbrb=i:n;
s=c+s;
A=[c,A];
c=c+2;
end
if
s=k
A
break;
end
end
函數(shù)編程練習(xí)
1.給小學(xué)生出加法考試題
編寫(xiě)一個(gè)程序,給學(xué)生出一道加法運(yùn)算題,然后判斷學(xué)生輸入的答案對(duì)錯(cuò)與否,按下列
要求以循序漸進(jìn)的方式編程。
程序1通過(guò)輸入兩個(gè)加數(shù)給學(xué)生出一道加法運(yùn)算題,如果輸入答案正確,則顯示
“Right!,r,否則顯示“Notcorrect!Tryagain!",程序結(jié)束。
程序2通過(guò)輸入兩個(gè)加數(shù)給學(xué)生出一道加法運(yùn)算題,如果輸入答案正確,則顯示
“Right!”,否則顯示"Notcorrect!Tryagain!",直到做對(duì)為止。
程序3通過(guò)輸入兩個(gè)加數(shù)給學(xué)生出一道加法運(yùn)算題,如果輸入答案正確,則顯示
"Right!”,否則提示重做,顯示"Notcorrect!Tryagain!”,最多給三次機(jī)會(huì),如果三次仍未做
對(duì),,則顯示“Notcorrect!Youhavetriedthreetimes!Testover!”,程序結(jié)束。
程序4連續(xù)做10道題,通過(guò)計(jì)算機(jī)隨機(jī)產(chǎn)生兩個(gè)1?10之間的加數(shù)給學(xué)生出一道加
法運(yùn)算題,如果輸入答案正確,則顯示“Right!”,否則顯示“Notcorrect!”,不給機(jī)會(huì)重做,
10道題做完后,按每題10分統(tǒng)計(jì)總得分,然后打印出總分和做錯(cuò)的題數(shù)。
程序5通過(guò)計(jì)算機(jī)隨機(jī)產(chǎn)生10道四則運(yùn)算題,兩個(gè)操作數(shù)為1?10之間的隨機(jī)數(shù),
運(yùn)算類(lèi)型為隨機(jī)產(chǎn)生的加、減、乘、整除中的任意一利,,如果輸入答案正確,則顯示“Right!”,
否則顯示“Notcorrect!”,不給機(jī)會(huì)重做,10道題做完后,按每題10分統(tǒng)計(jì)總得分,然后
打印出總分和做錯(cuò)題數(shù)。
formatshort
disp('小數(shù)保留4位小數(shù),);
j=0;
fori=l:10;
a=fix(l+9*rand(1));
b=fix(I+9*rand(1));
c=fix(1+4*rand(1));
switchc
case1
d=input([num2str(a),'+',num2str(b),-'],'s');
q=a+b;
ifd=num2str(q)
dispCyouareright!');
j=j+l;
else
disp(*Notcorrect!');
end
case2
d=input([num2str(a),,-\num2str(b),-'],,s,);
q=a-b;
ifd=num2str(q)
disp(,youareright!1);
j=j+l;
else
dispCNotcorrect!*);
end
case3
d=input([num2str(a),,x\num2str(b),-,],,s,);
q=a*b;
ifd=num2str(q)
disp(,youareright!1);
j=j+l;
else
dispCNotcorrect!1);
end
case4
d=input([num2str(a),t^-,,num2str(b),'-]);
ifd=round((a/b)*10A4)/l0A4
disp(,youareright!!);
Fi+i;
else
dispCNotcorrect!1);
end
end
end
score=10*j
【思考題】如果要求將整數(shù)之間的四則運(yùn)算題改為實(shí)數(shù)之間的四則運(yùn)算題,那么程序
該如何修改呢?請(qǐng)讀者修改程序,并上機(jī)測(cè)試程序運(yùn)行結(jié)果。
2.擲骰子游戲
編寫(xiě)程序模擬擲骰子游戲.已知擲骰子游戲的游戲規(guī)則為:每個(gè)骰子有6面,這些面包
含1、2、3、4、5、6個(gè)點(diǎn),投兩枚骰子之后,計(jì)算點(diǎn)數(shù)之和。如果第一次投的點(diǎn)數(shù)和為7
或11,則游戲者獲勝;如果第一次投的點(diǎn)數(shù)和為2、3或12,則游戲者輸;如果第一次投的
點(diǎn)數(shù)和為4、5、6、8、9或10,則將這個(gè)和作為游戲者獲勝需要擲出的點(diǎn)數(shù),繼續(xù)投骰子,
直到賺到該點(diǎn)數(shù)時(shí)算是游戲者獲勝。如果投擲7次仍未賺到該點(diǎn)數(shù),則游戲者輸。
【思考題】將游戲規(guī)則改為:計(jì)算機(jī)想一個(gè)數(shù)作為一個(gè)骰子擲出的點(diǎn)數(shù)(在用戶(hù)輸入
數(shù)據(jù)之前不顯示該點(diǎn)數(shù)),用戶(hù)從鍵盤(pán)輸入一個(gè)數(shù)作為另一個(gè)骰子擲出的點(diǎn)數(shù),再計(jì)算兩點(diǎn)
數(shù)之和。其余規(guī)則相同,然后請(qǐng)讀者重新編寫(xiě)該程序。
formatshort
d=y;
whiled=,Y,|d==y
A=1+(6?1)*round(rand(I));%系統(tǒng)隨機(jī)生成一個(gè)
dispd如果第一次投的點(diǎn)數(shù)和為7或11,則游戲者獲勝;如果第一次投的點(diǎn)數(shù)和為2、3
或12,則游戲者輸;如果第一次投的點(diǎn)數(shù)和為4、5、6、8、9或10,則將這個(gè)和作為游戲
者獲勝需要擲出的點(diǎn)數(shù),繼續(xù)投骰子,直到賺到該點(diǎn)數(shù)時(shí)算是游戲者獲勝。如果投擲7次仍
未賺到該點(diǎn)數(shù),則游戲者輸???
B=input(請(qǐng)隨便輸入數(shù)字K6:');
al=A(l)+B(l);
ifal=3|al=ll
disp([f因?yàn)榈谝粋€(gè)骰子值=',num2str(A);;第二個(gè)的=\num2str(B);;兩個(gè)之和
=\num2str(al)]);
di
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酸堿燙傷應(yīng)急處置方案
- 【培訓(xùn)】 氨酚氫可酮產(chǎn)品培訓(xùn)
- 天然氣開(kāi)采業(yè)的市場(chǎng)競(jìng)爭(zhēng)與合作發(fā)展考核試卷
- 搪瓷制品的特殊工藝和技術(shù)考核試卷
- 未來(lái)產(chǎn)業(yè)的重要引擎新材料新技術(shù)的杰出貢獻(xiàn)考核試卷
- 旅行社導(dǎo)游聘用合同細(xì)則
- 武漢市計(jì)劃生育管理殘聯(lián)行業(yè)應(yīng)用
- 農(nóng)業(yè)科技創(chuàng)新策略
- 低碳住宅交易特別約定
- 建筑通風(fēng)機(jī)械施工安全協(xié)議
- 貿(mào)易安全內(nèi)部培訓(xùn)教材
- 手術(shù)室急危重患者的搶救與配合
- 新能源汽車(chē)充電技術(shù) 課件 2-3 認(rèn)知新能源汽車(chē)直流充電系統(tǒng)
- 小米公司介紹課件
- 2021年公務(wù)員國(guó)考《申論》真題(副省級(jí))及參考答案(兩套答案)
- 非ST段抬高型急性冠脈綜合征診斷和治療指南(2024)解讀
- 全國(guó)半導(dǎo)體行業(yè)職業(yè)技能競(jìng)賽(半導(dǎo)體芯片制造工賽項(xiàng))理論考試題及答案
- 代謝組學(xué)完整版本
- 室外石材工程冬季施工方案版干掛石材冬季施工方案
- GB/T 44347-2024鄉(xiāng)村綠化技術(shù)規(guī)程
- 第1課調(diào)查旅游意向(教學(xué)設(shè)計(jì))四年級(jí)下冊(cè)信息技術(shù)粵教版
評(píng)論
0/150
提交評(píng)論