




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
選擇結(jié)構(gòu)編程練習(xí)
1.身高預(yù)測
每個做父母的都關(guān)心自己孩子成人后的身高,據(jù)有關(guān)生理衛(wèi)生知識與數(shù)理統(tǒng)計分析表
明,影響小孩成人后的身高的因素包括遺傳、飲食習(xí)慣與體育鍛煉等。小孩成人后的身高與
其父母的身高和自身的性別密切相關(guān)。
設(shè)faHeight為其父身高,moHeight為其母身高,身高預(yù)測公式為
男性成人時身高=(fhHeight+moHeight)xO.54cm
女性成人時身高=(fhHcightx0.923+moHcight)/2cm
此外,如果喜愛體育鍛煉,那么可增加身高2%;如果有良好的衛(wèi)生飲食習(xí)慣,那么可
增加身高1.5%。
編程從鍵盤輸入用戶的性別(用字符型變量sex存儲,輸入字符F表示女性,輸入字符
M表示男性)、父母身高(用實型變量存儲,faHeight為其父身高,moHeight為其母身高)、
是否喜愛體育鍛煉(用字符型變量sports存儲,輸入字符Y表示喜愛,輸入字符N表示不
喜愛)、是否有良好的飲食習(xí)慣等條件(用字符型變量diet存儲,輸入字符Y表示良好,輸
入字符N表示不好),利用給定公式和身高預(yù)測方法對身高進(jìn)行預(yù)測。
symsfmYN
faHeight=inputC請輸入父親的身高:);
moHeight=input(,請輸入母親的身高:);
x=input(,請輸入x的性別:力
sport=input。是否喜歡運動(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.簡單的計算器
用switch語句編程設(shè)計一個簡單的計算器程序,要求根據(jù)用戶從鍵盤輸入的表達(dá)式:
操作數(shù)1運算符op操作數(shù)2
計算表達(dá)式的值,指定的算術(shù)運算符為加(+)、減(-)、乘(*)、除(/)。
m=inputC操作數(shù)1運算符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)行浮點數(shù)的算術(shù)運算,程序應(yīng)該如何修改?如何比較實型變量
data2和常數(shù)0是否相等?
formatlong
m=input(操作數(shù)1運算符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ù)和運算符之間可以加入任意多個空白符,
那么程序如何修改?
formatlong
m=input(操作數(shù)1運算符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ù)運算,每次運算結(jié)束后,程序都給出提示:
Doyouwanttocontinue(Y/Nory/n)?
用戶輸入Y或y時,程序繼續(xù)進(jìn)行其他算術(shù)運算;否則程序退出運行狀態(tài)。那么,程
序如何修改?
symsYNyn
fbnnatlong
a=inpu《請輸入操作數(shù)I:1);
b=inpu4請輸入運算符op,7s');
c=input(,請輸入操作數(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(,請輸入操作數(shù)1:1);
b=input。請輸入運算符op,7s');
c=input(請輸入操作數(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運算符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ù)游戲
在這個實驗中,我們將嘗試編寫一個猜數(shù)游戲程序,這個程序看上去有些難度,但是如
果按下列要求循序漸進(jìn)地編程實現(xiàn),會發(fā)現(xiàn)其實這個程序是很容易實現(xiàn)的。那么,現(xiàn)在就開
始吧,先編寫第1個程序,然后試著在第1個程序的基礎(chǔ)上編寫第2個程序,……
程序1編程先由計算機“想”一個1?100之間的數(shù)請人猜,如果人猜對了,則計算
機給出提示“Right!”,否則提示“Wrong!”,并告訴人所猜的數(shù)是大(Toohigh)還是小(Toolow),
然后結(jié)束游戲。要求每次運行程序時機器所“想”的數(shù)不能都一樣。
程序2編程先由計算機“想”一個1?100之間的數(shù)請人猜,如果人猜對了,則結(jié)束
游戲,并在屏幕上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”的水平;否則計
算機給出提示,告訴人所猜的數(shù)是太大還是太小,直到人猜對為止。
程序3編程先由計算機“想”一個1?100之間的數(shù)請人猜,如果人猜對了,則結(jié)束
游戲,并在屏幕上輸出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”的水平;否則計
算機給出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10次,如果猜了10次仍未猜
中的話,結(jié)束游戲。
程序4編程先由計算機“想”一個1?100之間的數(shù)請人猜,如果人猜對了,在屏幕上輸
出人猜了多少次才猜對此數(shù),以此來反映猜數(shù)者“猜”的水平,則結(jié)束游戲;否則計算機給
出提示,告訴人所猜的數(shù)是太大還是太小,最多可以猜10次,如果猜了10次仍未猜中的話,
則停止本次猜數(shù),然后繼續(xù)猜下一個數(shù)。每次運行程序可以反復(fù)猜多個數(shù),直到操作者想停
止時才結(jié)束。
a=fix((l00+1)*rand(1));
b=input(,請輸入一個大于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(請再輸入一個整數(shù):)
end
1.猴子吃桃問題。猴子第一天摘下若干個桃子,當(dāng)即吃了一半另一個,以后每天早晨都吃剩下
的一半另一個,到第十天早晨再想吃時,就剩一個桃子。問第一天共摘了多少桃子。
要求:分別用三種語句編寫程序。
(1)functionPeach
clc
number=l;
x(10)=number;
fprintff計算結(jié)果如下:\nf);
fori=9:-l:l
x(i)=(x(i+1)4-1)*2;
fprintf。第%(1天有%d個桃子\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.編寫程序驗證下列結(jié)論:任何一個自然數(shù)n的立方都等于n個連續(xù)奇數(shù)之和。例如:I3
=1;23=3+5;33=7+9+11o
要求:程序?qū)γ總€輸入的自然數(shù)計算并輸出相應(yīng)的連續(xù)奇數(shù),直到輸入的自然數(shù)為0時止。
n=input。請輸入一個數(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é)生出加法考試題
編寫一個程序,給學(xué)生出一道加法運算題,然后判斷學(xué)生輸入的答案對錯與否,按下列
要求以循序漸進(jìn)的方式編程。
程序1通過輸入兩個加數(shù)給學(xué)生出一道加法運算題,如果輸入答案正確,則顯示
“Right!,r,否則顯示“Notcorrect!Tryagain!",程序結(jié)束。
程序2通過輸入兩個加數(shù)給學(xué)生出一道加法運算題,如果輸入答案正確,則顯示
“Right!”,否則顯示"Notcorrect!Tryagain!",直到做對為止。
程序3通過輸入兩個加數(shù)給學(xué)生出一道加法運算題,如果輸入答案正確,則顯示
"Right!”,否則提示重做,顯示"Notcorrect!Tryagain!”,最多給三次機會,如果三次仍未做
對,,則顯示“Notcorrect!Youhavetriedthreetimes!Testover!”,程序結(jié)束。
程序4連續(xù)做10道題,通過計算機隨機產(chǎn)生兩個1?10之間的加數(shù)給學(xué)生出一道加
法運算題,如果輸入答案正確,則顯示“Right!”,否則顯示“Notcorrect!”,不給機會重做,
10道題做完后,按每題10分統(tǒng)計總得分,然后打印出總分和做錯的題數(shù)。
程序5通過計算機隨機產(chǎn)生10道四則運算題,兩個操作數(shù)為1?10之間的隨機數(shù),
運算類型為隨機產(chǎn)生的加、減、乘、整除中的任意一利,,如果輸入答案正確,則顯示“Right!”,
否則顯示“Notcorrect!”,不給機會重做,10道題做完后,按每題10分統(tǒng)計總得分,然后
打印出總分和做錯題數(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ù)之間的四則運算題改為實數(shù)之間的四則運算題,那么程序
該如何修改呢?請讀者修改程序,并上機測試程序運行結(jié)果。
2.擲骰子游戲
編寫程序模擬擲骰子游戲.已知擲骰子游戲的游戲規(guī)則為:每個骰子有6面,這些面包
含1、2、3、4、5、6個點,投兩枚骰子之后,計算點數(shù)之和。如果第一次投的點數(shù)和為7
或11,則游戲者獲勝;如果第一次投的點數(shù)和為2、3或12,則游戲者輸;如果第一次投的
點數(shù)和為4、5、6、8、9或10,則將這個和作為游戲者獲勝需要擲出的點數(shù),繼續(xù)投骰子,
直到賺到該點數(shù)時算是游戲者獲勝。如果投擲7次仍未賺到該點數(shù),則游戲者輸。
【思考題】將游戲規(guī)則改為:計算機想一個數(shù)作為一個骰子擲出的點數(shù)(在用戶輸入
數(shù)據(jù)之前不顯示該點數(shù)),用戶從鍵盤輸入一個數(shù)作為另一個骰子擲出的點數(shù),再計算兩點
數(shù)之和。其余規(guī)則相同,然后請讀者重新編寫該程序。
formatshort
d=y;
whiled=,Y,|d==y
A=1+(6?1)*round(rand(I));%系統(tǒng)隨機生成一個
dispd如果第一次投的點數(shù)和為7或11,則游戲者獲勝;如果第一次投的點數(shù)和為2、3
或12,則游戲者輸;如果第一次投的點數(shù)和為4、5、6、8、9或10,則將這個和作為游戲
者獲勝需要擲出的點數(shù),繼續(xù)投骰子,直到賺到該點數(shù)時算是游戲者獲勝。如果投擲7次仍
未賺到該點數(shù),則游戲者輸???
B=input(請隨便輸入數(shù)字K6:');
al=A(l)+B(l);
ifal=3|al=ll
disp([f因為第一個骰子值=',num2str(A);;第二個的=\num2str(B);;兩個之和
=\num2str(al)]);
di
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC 30105-2:2024 EN Information technology - IT Enabled Services-Business Process Outsourcing (ITES-BPO) lifecycle processes - Part 2: Process assessment model (PAM)
- 【正版授權(quán)】 ISO 13315-2:2025 EN Environmental management for concrete and concrete structures - Part 2: System boundary and inventory data
- 2025年度公共設(shè)施裝修工期延誤賠償及質(zhì)量保證協(xié)議
- 2025年度電子商務(wù)交易安全保障合同
- 2025高考作文預(yù)測:正確“出圈”才能出彩
- 個人職業(yè)能力提升計劃
- 未來年的市場拓展計劃
- 提升職業(yè)道德與素養(yǎng)的工作計劃
- 班級網(wǎng)絡(luò)學(xué)習(xí)平臺的搭建與維護(hù)計劃
- 2025年休閑專用車及其零附件項目建議書
- 2024版房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)內(nèi)容解讀
- GB 21258-2024燃煤發(fā)電機組單位產(chǎn)品能源消耗限額
- 工程項目部安全生產(chǎn)治本攻堅三年行動實施方案
- 三年級學(xué)生《成長記錄》模板
- 好書推薦——《三毛流浪記》
- 方菱F2100B中文系統(tǒng)說明書
- 人教版動手動腦學(xué)物理答案 八下
- 九宮格數(shù)獨題目(打印版)
- 內(nèi)燃機基本知識
- 抹灰工程施工合同-
- 2019.2青島版五四制五年級下冊數(shù)學(xué)教學(xué)計劃(附教學(xué)進(jìn)度表)
評論
0/150
提交評論