《matlab选择结构编程练习.pdf》由会员分享,可在线阅读,更多相关《matlab选择结构编程练习.pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、选择结构编程练习1.身高预测每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。设 faHeight为其父身高,moHeight为其母身高,身高预测公式为男性成人时身高=(fhHeight+moHeight)xO.54cm女性成人时身高=(fhHcightx0.923+moHcight)/2cm此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫生饮食习惯,那么可增加身高1.5%。编程从键盘输入用户的性别(用字符型变量sex存储,输入字符F 表示女性,输
2、入字符M 表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y 表示喜爱,输入字符N 表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y 表示良好,输入字符N 表示不好),利用给定公式和身高预测方法对身高进行预测。syms fm YNfaHeight=inputC请输入父亲的身高:);moHeight=input(,请输入母亲的身高:);x=input(,请输入x 的性别:力sport=input。是否喜欢运动(Y/N):);diet=inpu4饮食是否良好(Y/N
3、):);if x=mchild=(faHeight+moHeight)*0.54;elsechild=(faHeight*0.923+moHeight)/2;endif sport=Ychild=child*1.02;elsechild=child;endif diet=Ychild=child*1.015;elsechild=child;endchild2.简单的计算器用 switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:操作数1运算符o p操作数2计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。m=inputC操作数1运算符o p 操作
4、数2:q=find(m+,|m=*-,|m7,|m=,x,|m=-);a=str2num(m(1:q-1 );b=m(q);c=str2num(m(q+l:end);switch bcasea+ccasea-ccase*a*ccase*xa*ccase 7a/ccasea/cend(1)如果要求程序能进行浮点数的算术运算,程序应该如何修改?如何比较实型变量data2和常数0 是否相等?format longm=input(操作数1运算符o p 操作数2:q=find(m=,+,|rn=,-,|m=,*,|m=7,|m=,adisp(Too highlYou hava,num2str(10-i)
5、,chances!)elsedisp(Too low!You hava,num2str(10-i),chances!)endb=input(请再输入一个整数:)en d1 .猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半另一个,以后每天早晨都吃剩下的一半另一个,到第十天早晨再想吃时,就剩一个桃子。问第一天共摘了多少桃子。要求:分别用三种语句编写程序。(1)fu n c t i o n P ea c hc l cn u m ber=l;x(1 0)=n u m ber;fp r i n t ff计算结果如下:nf);fo r i=9:-l:lx(i)=(x(i+1)4-1)*2;fp r
6、i n t f。第(1天有 d个桃子 n;i,x);en d(2)i=1 0;x=l;w hi l e i li=i-l;x=(x+l)*2;en d;x(3)fu n c t i o n y=Ea t p ea c h(x);y=x-(l/2*x+l);fo r x=l:1 0 0 0 0 0;y=x;fo r i=l:9y=Ea t p ea c h(y);en di fy=lxbr ea ken den d2 .编写程序验证下列结论:任何一个自然数n的立方都等于n个连续奇数之和。例如:I3=1 ;2 3=3+5 ;33=7+9+1 1 o要求:程序对每个输入的自然数计算并输出相应的连续奇
7、数,直到输入的自然数为0时止。n=i n p u t。请输入一个数字:力k=n*n*n;s=0;fo r l:2:k;c=i;A=;s=0;fbr b=i:n;s=c+s;A=c,A;c=c+2;endifs=kAbreak;endend函数编程练习1.给小学生出加法考试题编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列要求以循序渐进的方式编程。程 序 1通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!,r,否则显示“Not correct!Try again!,程序结束。程 序 2通过输入两个加数给学生出一道加法运算题,如果输入答案正
8、确,则显示“Right!”,否则显示Not correct!Try again!,直到做对为止。程 序 3通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示Right!”,否则提示重做,显 示 Not correct!Try again!”,最多给三次机会,如果三次仍未做对,,则显示“Not correct!You have tried three times!Test over!”,程序结束。程序4连续做10道题,通过计算机随机产生两个110之间的加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做
9、完后,按每题10分统计总得分,然后打印出总分和做错的题数。程 序 5通过计算机随机产生10道四则运算题,两个操作数为110之间的随机数,运算类型为随机产生的加、减、乘、整除中的任意一利,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错题数。format shortdisp(小数保留4 位小数,);j=0;for i=l:10;a=fix(l+9*rand(1);b=fix(I+9*rand(1);c=fix(1 +4*rand(1);switch ccase 1d=input(num2st
10、r(a),+,num2str(b),-,s);q=a+b;if d=num2str(q)dispCyou are right!);j=j+l;elsedisp(*Not correct!);endcase 2d=input(num2str(a),-num2str(b),-,s,);q=a-b;if d=num2str(q)disp(,you are right!1);j=j+l;elsedispCNot correct!*);endcase 3d=input(num2str(a),xnum2str(b),-,s,);q=a*b;if d=num2str(q)disp(,you are righ
11、t!1);j=j+l;elsedispCNot correct!1);endcase 4d=input(num2str(a),t-,num2str(b),-);if d=round(a/b)*10A4)/l 0A4disp(,you are right!);Fi+i;elsedispCNot correct!1);endendendscore=10*j【思考题】如果要求将整数之间的四则运算题改为实数之间的四则运算题,那么程序该如何修改呢?请读者修改程序,并上机测试程序运行结果。2.掷骰子游戏编写程序模拟掷骰子游戏.已知掷骰子游戏的游戏规则为:每个骰子有6 面,这些面包含 1、2、3、4、5、6
12、 个点,投两枚骰子之后,计算点数之和。如果第一次投的点数和为7或 1 1,则游戏者获胜;如果第一次投的点数和为2、3 或 1 2,则游戏者输;如果第一次投的点数和为4、5、6、8、9 或 1 0,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到赚到该点数时算是游戏者获胜。如果投掷7 次仍未赚到该点数,则游戏者输。【思考题】将游戏规则改为:计算机想一个数作为一个骰子掷出的点数(在用户输入数据之前不显示该点数),用户从键盘输入一个数作为另一个骰子掷出的点数,再计算两点数之和。其余规则相同,然后请读者重新编写该程序。format shortd=y;while d=,Y,|d=yA=1 +(6
13、 1 )*round(rand(I);%系统随机生成一个dispd如果第一次投的点数和为7 或 1 1,则游戏者获胜;如果第一次投的点数和为2、3或 1 2,则游戏者输;如果第一次投的点数和为4、5、6、8、9 或 1 0,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到赚到该点数时算是游戏者获胜。如果投掷7 次仍未赚到该点数,则游戏者输。口)B=input(请随便输入数字K6:);al=A(l)+B(l);ifa l=3|a l=lldisp(f因 为 第 一 个 骰 子 值=,num2str(A);;第 二 个 的=num2str(B);;两 个 之 和=num2str(al);d
14、isp(你赢了!);elseif al=2|al=7|al=12disp(你输了 口);disp(r 因 为 第 一 个 骰 子 值=,num2str(A);;第 二 个 的=;num2str(B);;两 个 之 和-,num2str(al);elseif a 1 =4|a 1 =5|a 1 =6|a 1 =8|a 1 =9|a 1=10k=al;kl=0;while k0kl=kl+l;disp(1第,num2str(k 1”次 丢 的 结 果:?第一个骰子值=;num2str(A”;第二个的=,num2str(B”;两个之和=,num2str(al);disp(未分出输赢,继续丢,【己丢了
15、;num2str(kl);次】口);A=1 +(6-1 )*round(rand(l);%系统随机生成一个B=input(请随便输入数字16:);al=A(l)+B(l);if al=kdisp(你赢了!*);disp(因 为 第,num2str(kl+l),次 丢 的 结 果 是:?第 一 个 骰 子 值=;mim2stle(A”;第二个的=num2s t i 两个之和=,11111112511(21);break;elseif k 1=7disp(你输了!,);dispd因为你已经花费了所有机会);break;endendendd=input(,Do you want to continue(Y/N or y/n)?;s);end