MATLAB编程练习-.pdf

上传人:索**** 文档编号:76239209 上传时间:2023-03-08 格式:PDF 页数:19 大小:111.93KB
返回 下载 相关 举报
MATLAB编程练习-.pdf_第1页
第1页 / 共19页
MATLAB编程练习-.pdf_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《MATLAB编程练习-.pdf》由会员分享,可在线阅读,更多相关《MATLAB编程练习-.pdf(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 编程训练实例1你玩过牌吗?把 13张牌反过来(背面朝上)按一定的顺序排列,先把你已经排好的牌第一张取出放在这叠牌的最底层,拿出第二张放在桌面上,然后将第三张取出又放在最底层,取出第四张放在桌子上,直到游戏结束,你依次取出放在桌子上的牌刚好为K,Q,J,10,9,8,7,6,5,4,3,2,A。问你一开始时这 13张牌的顺序是怎样的?请你用MATLAB 编程解决这个问题?请把程序附上。%调用格式为 chengxufunction chengxua=1,13;k=2;j=1;b=K,Q,J,10,9,8,7,6,5,4,3,2,A;%for c=1:4for i=1:13if mod(i,2)

2、=0 ai=bj;j=j+1;endendfor i=2:2:13if mod(i,4)=0 ai=bj;j=j+1;endendfor i=4:4:13if mod(i,8)=0 ai=bj;j=j+1;endenda8=b13;a或function f=card()a=1:13;i=1;for j=1:13 n=numel(a);%目前的片数;numle 为元数的个数。a(n+1)=a(1);%在多少张里面取第一张。2 a(1)=;%将上面取出的第一张牌所在空格剪掉。b(i)=a(1);%翻出来时桌面上亮出来的牌。i=i+1;a(1)=;%随着 i 自增,取出现的空格为空。(即删除)。en

3、dc=K,Q,J,10,9,8,7,6,5,4,3,2,A;%因为 10占两位,故用单元d=cell(1,13);%由 BC 对应的数,将 C中字符型的牌放入由B决定对应的 D中。for k=1:13 r=b(k);dr=ck;endf=d;如果把第一张牌放在最底层,第二张放在最底层,取出第三张放在桌子上,依 此类推,你最后 把 所有的牌 取 出刚好依 次 是A,2,3,4,5,6,7,8,9,10,J,Q,K.%调用格式为 card2 function f=card2()a=1:13;i=1;for j=1:13 n=numel(a);a(n+1)=a(1);a(n+2)=a(2);a(1)

4、=;a(1)=;b(i)=a(1)i=i+1;a(1)=;。endc=A,2,3,4,5,6,7,8,9,10,J,Q,K;d=cell(1,13);for k=1:13 r=b(k);dr=ck;endf=d;课外拓展按照取出第一张放到最后,然后抽出第二张放在桌子上,依次类推,并且3 桌子上的牌可以从键盘输入,依次类推,求原来牌的排列。%调用格式为 chengxufunction y=chengxua=input(请输入摆在桌子上的牌,s);b=numel(a);c=cell(1,b);for i=1:b ci=a(i);ende=;f=1:b;i=1;for j=1:b n=numel(f

5、);%目前的片数;numle 为元数的个数。f(n+1)=f(1);%在多少张里面取第一张。f(1)=;%将上面取出的第一张牌所在空格剪掉。e(i)=f(1);%翻出来时桌面上亮出来的牌。i=i+1;f(1)=;%随着 i 自增,取出现的空格为空。(即删除)。endg=cell(1,b);%由BC 对应的数,将 C中字符型的牌放入由B决定对应的 D中。for k=1:b r=e(k);gr=ck;endy=g;2学校要举行篮球循环赛,共有十个队参加比赛,请你安排一下比赛场次,使每队每次打完比赛后至少能隔一场不比赛,以便得到休息保持体力,请你用 MATLAB 解决这个问题,并给出至少一个比赛日程

6、表。(每队休息的场次越多越好,但每队都应得到的休息大体相同,不能出现某队刚打完比赛,马上和另一个已经休息了若干场的球队比赛,这是不公平的)。1.编写一个程序,要求输入五个整数,然后由小到大排序再输出1.1%调用形式为:chengxu2(a b c d e f)function f=chengxu1(x)for i=1:4 for j=(i+1):5 4 if x(i)x(j)a=x(i);x(i)=x(j);x(j)=a;endendend f=(x);1.2%编写一个程序,要求输入五个整数,然后由小到大排序再输出function h=chao1()a=cell(1,5);a=input(Pl

7、ease input five number:,s);b=str2num(a)fprintf(从小到大排序为:)g=sort(b,ascend);disp(g)1.3%编写一个程序,要求输入五个整数,然后由小到大排序再输出function chen1()a=input(Please input Num1:);b=input(Please input Num2:);c=input(Please input Num3:);d=input(Please input Num4:);e=input(Please input Num5:);f=a b c d e;fprintf(从小到大排序为:)2.将一

8、个整型数组的元素按逆序重新存放(如原序为:8,6,5,4 改为:4,5,6,8)。2.1%将一个整型数组的元素按逆序重新存放%调用形式为:chengxu2(a b c d,n)function f=chengxu2(x)a=numel(x);b=fix(a/2);for i=1:b;j=a-i+1;t=x(i);x(i)=x(j);x(j)=t;5 enddisp(x)2.2%将一个整型数组的元素按逆序重新存放function chao2()a=input(请输入一个数组:);rot90(a,2)3.输入一个字符,如果是大写字母,则将其转换成小写并输出;若是小写则直接输出;若是非字母字符则打印

9、:“Dataerror!”。3.1%输入形式为 chengxu3(x)其中 x为从键盘输入的数字或字母。function chengxu3(x)if x=48 fprintf(“Dataerror!”n)elseif x=65 fprintf(%cn,x+32)elseif x=97 x end3.2 function f=chao3 m=input(请输入一个字符:,s);i=isletter(m);if i=0 fprintf(“Dataerror!”n)else n=lower(m);disp(n)end4.输入一个整数,写一程序输出它是几位数。%输入形式为 chengxu4(x),x为

10、数字。function f=chengxu4(x)i=0;for j=1:10000%此处表示可以容纳10000 位数字的位数求解 x=x/10;a=fix(x);if a0 i=i+1;end6 if a=0 i=i+1;breakendendfprintf(你输入的是%d 位数字 n,i);%或写成 i5.写一程序求 1!+2!+,+10!%调用形式为 chengxu5function chengxu5()j=1;sum=0;for i=1:10 j=i*j;sum=sum+j;endfprintf(10 以内的阶乘为%dn,sum)%最后一条语句也可为 sum 6.从键盘上输入 a 与

11、n 的值,计算 sum=a+aa+aaa+aaaa+,(共 n 项)的和。例a=2,n=4,则 sum=2+22+222+2222.%调用形式为 chengxu6(x,y),其中 x y 均为数字function chengxu6(x,y)sum=x;t=x;for i=1:(y-1)t=t+10i*x;sum=sum+t;endsum 7.编程求数列 1,1/2,1/3,1/4,1/5,,的所有大于等于0.000001 的数据项之和并输出结果%d 调用格式为 chengxu7function chengxu7()sum=0;for i=1:106 a=1/i;sum=sum+a;end7 f

12、printf(所求大于等于 0.000001 的数据项之和为%dn,sum);8.求 3*3 矩阵的主对角线元素之和。%调用形式为必须chengxu8(x1,x2,x3;x4,x5,x6;x7,x8,x9)function chengxu8(x)sum=0;for i=1:3;j=i;sum=sum+x(i,j);endsum 9.从键盘输入的 10 个整数中,找出第一个能被7 整除的数。若找到,打印此数后退出循环;若未找到,打印“not exist”。%调用形式为 chengxu9(x1,x2,x3,x10)function chengxu9(x)for i=1:10 a=x(i)/7;b=

13、fix(a);if a-b=0 disp(x(i)breakendif i=10 fprintf(not existn);endend10.设计一个用于计算个人所有税的程序。假设个人所得税的缴纳标准为:月收入少于等于 800 元者不纳税;超出 800 元的部分,纳税 5%;超出 2000 元的部分,纳税 10%;超出 5000元的部分,纳税20%;超出 10000元的部分,纳税 30%;超出 100000元的部分,纳税 40%。%调用形式为 chengxu10(x)function chengxu10(x)if x=800 g=0;elseif x=2000 8 g=(x-800)*0.05;

14、elseif x=5000 g=1200*0.05+(x-2000)*0.10;elseif x=10000 g=1200*0.05+3000*0.10+(x-5000)*0.20;elseif x100000 g=1200*0.05+3000*0.10+5000*0.20+90000*0.30+(x-105)*0.4;endfprintf(您应该纳税:%dn,g);11.编写一个程序,用循环结构输出以下图形。&%调用形式为 chengxu11function chengxu11()for i=9:-2:1 for j=1:i fprintf(&)end fprintf(n);end12.编写

15、一个程序求出1000以内的所有素数。%调用格式为 chengxu12function chengxu12()for i=1:1000 t=1;j=0;for j=2:i-1 a=mod(i,j);if a=0 t=0;breakendendif t0 fprintf(%d n,i);endend9 或%调用格式为 chengxu12function chengxu12()a=0;b=0;l=;k=1;for i=1:1000for j=2:i-1 a=i/j;b=fix(a);if b-a=0breakendendif a-b0 k=1+k;l(k)=i;endendl(1)=1;l13.输入

16、两个整型变量a,b 的值,输出 a+b,a-b,a*b,a/b,的结果,要求连同算式一起输出,每个算式占一行。例:a 等于 10,b等于 5,a+b 的结果输成 10+5=15%调用格式为 chengxu13(x)其中 x为字符function chengxu13(x)a=x-1;b=x+1;fprintf(%c%d,%c%d,%c%d n,a,a,x,x,b,b);14.求前驱字符和后继字符。输入一个字符,找出它的前驱字符和后继字符,并按 ASCII 码值,按从大到小的顺序输出这三个字符及其对应的ASCII 码值。%调用格式为 chengxu14(x)其中 x为字母function chen

17、gxu14(x)if x=a|x=A a=x+25;else a=x-1;endif a=z|a=Z b=a-25;else b=x+1;end10 fprintf(%c%d,%c%d,%c%d n,a,a,x,x,b,b);15.输入三角形的边长,写一求三角形面积的函数。(面积=sqrt(s(s-a)(s-b)(s-c),s=(a+b+c)/2)%输入格式为 chengxu15(a,b,c)function chengxu15(a,b,c)s=(a+b+c)/2;mianji=sqrt(s*(s-a)*(s-b)*(s-c)16.输入某个点 A的平面坐标(x,y),判断(输出)A点是在圆内、

18、圆外还是在圆周上,其中圆心坐标为(2,2),半径为 1。%调用格式为 chengxu16(x,y)function chengxu16(x,y)a=(x-2)2;b=(y-2)2;d=sqrt(a+b);if d=1 fprintf(A 点在圆上 n)endif d1 fprintf(A 点在圆外 n)endif d=a&x(i)=A&x(i)=0&x(i)=9 k=k+1;endend fprintf(字母个数为%dn数字字符个数为%dn,j,k);或%输入一串字符,直到输入一个星号(*)为止,统计(输出)其中的字母个数和数字字符个数。(要求可输入任意字符)function chengxu1

19、8_2i=1;b=;m=0;n=0;while 1a=input(请输入一串字符:n,s);if a=*breakelse b=strcat(b,a);endendi=length(b);12 for i=1:iif b(i)=a|b(i)=A;m=m+1;else b(i)=0 n=n+1;endendfprintf(字母字符个数为%dn数字字符个数为%dn,m,n);19.从键盘输入一个正整数n,编程判断这个数是否同时含有奇数字和偶数字。%调用格式为 chengxu19(x)其中 x为正整数function chengxu19(x)a=num2str(x);b=numel(a);g=0;k

20、=0;for i=1:b c=mod(a(i),2);if c=0 k=1;breakendendfor i=1:b c=mod(a(i),2);if c0 g=1;breakendendif g=1&k=1 fprintf(Yes!n);endif g=0|k=0 fprintf(No!n);end20.设某县 2000 年工业总产值为200亿元,如果该县预计平均年工业总产值增长率为 4.5%,那么多少年后该县年工业总产值将超500 亿元?%调用格式为 chengxu20function chengxu20()sum=200;a=0;j=0;for i=1:1000 a=sum*0.045;

21、sum=sum+a;13 j=j+1;if sum-200=300breakendendfprintf(%d年后该县年工业总产值将超过500亿元 n,i);21.(1)输入一个三位数,判断是否是一个“水仙花数”。水仙花数是指三位数的各位数字的立方和等于这个三位数本身。例如:153=1*1*1+5*5*5+3*3*3%调用格式为 chengxu21_1(x)其中 x必须是三位数function chengxu21_1(x)y=x;a=mod(x,10);x=x/10;b=fix(mod(x,10);x=x/10;c=fix(x);if y=a*a*a+b*b*b+c*c*c fprintf(%d

22、是水仙花数 n,y);else fprintf(%d不是水仙花数 n,y);end(2)一个整数等于该数所有因子之和,则称该数是一个完数。例如:6 和 28都是完数。因为:6=1+2+3,28=1+2+4+7+14.输出三位数中所有完数。%调用格式为 chengxu21_(x)其中 x为数字function chengxu21_2(x)sum=0;for i=1:xif mod(x,i)=0 sum=sum+i;endendif sum=2*x fprintf(%d是一个完数 n,x);end22.输入 10 个数,将 10 个整数按生序排列输出,并且奇数在前,偶数在后。如果输入的 10 个数

23、是:10 9 8 7 6 5 4 3 2 1,则输出:1 3 5 7 9 2 4 6 8 10。%输入格式为 chengxu22(x1 x2 x3,x10)function chengxu22(x)y=;d=;k=1;a=0;for i=1:10if mod(x(i),2)=014 d(k)=x(i);k=k+1;endend chengxu(d)k=1;for i=1:10if mod(x(i),2)=0 d(k)=x(i);k=k+1;endend chengxu(d)function chengxu(d)ii=numel(d);for i=1:ii y(i)=d(i);endfor j=

24、1:iifor r=1:ii-1if y(r)y(r+1)t=y(r);y(r)=y(r+1);y(r+1)=t;endendendfprintf(%d ,y);23.将数组 an 中的每一个元素依次循环向后移动一位。%调用格式为 chengxu23function chengxu23x=0;x=input(请输入一个数组a,输入格式为 a1 a2 a3,n,s);x=str2num(x);if x=0 chengxu(x)endfunction f=chengxu(x)a=;b=numel(x);for i=1:b-1 a(i+1)=x(i);end15 for j=1:b-1 fprint

25、f(a(%d)=%d n,j+1,a(j+1);end24.将一个正整数 n 输出成“千分位”形式,即从个位数起,每三位之间加一个逗号,例如,将 7654321输出成 7,654,321.%调用格式为 chengxu24function chengxu24x=input(请输入一个整数n,s);a=numel(x);x=str2num(x);b=ceil(a/3);for i=1:b a(i)=mod(x,1000)x=fix(x/1000);endfor j=b:-1:2 fprintf(%d,a(j)endfprintf(%d,a(1);fprintf(n);25.求出矩阵 a 中每行元素

26、的平均值和平均最大的行号。%调用格式为 chengxu25function chengxu25m=;n=;max=0;k=0;p=;a=input(请输入一个矩阵);c=numel(a);m=a(1,:);b=numel(m);d=c/b;for i=1:d n(i)=sum(a(i,:);endfor i=1:d p(i)=n(i)/b;if n(i)max max=n(i);k=i;endendfprintf(每行元素的平均值为:n);for i=1:d%fprintf(%d ,p(i);16 endfprintf(n);fprintf(平均值最大的行号为:%dn,k);26.编写一个函数

27、,找出矩阵A中最大元素和最小元素所在的行列号.%调用格式为 chengxu26function chengxu26e=1;f=1;g=1;k=1;a=input(请输入一个矩阵);c=numel(a);m=a(1,:);b=numel(m);d=c/b;min1=a(1,1);max1=a(1,1);for i=1:dfor j=1:bif max1=a(i,j)min1=a(i,j);g=i;k=j;endendendfprintf(最大元素所在的行列号为%d%dn,e,f);fprintf(最小元素所在的行列号为%d%dn,g,k);27.给出年、月、日,计算该日是该年的第几天?%输入的格

28、式为 年 月 日function chengxu27(x)a=0;if mod(x(1),4)=0&mod(x(1),100)=0&mod(x(1),400)=0 a=1;end%for i=1:x(2)-1 tian=30*(x(2)-1)+x(3);if x(2)=2|x(2)=4|x(2)=6|x(2)=817 tian=tian+1;elseif x(2)=9|x(2)=10 tian=tian+2;elseif x(2)=11 tian=tian+3;endif x(2)=1&x(2)=2if a=0 tian=tian-1;endendtian28.输入数组 a,b 的元素,用数组

29、 a 和 b 构造数组 c,使得:c(i)=a(i)-b(i)当 a(i)b(i)时;c(i)=a(i)+b(i)当 a(i)b(i)c(i)=a(i)-b(i);elseif a(i)=b(i)c(i)=a(i)+b(i);endendc*29.写一程序输出四个人的各种排序方式.%调用格式为 chengxu29 function chengxu29a=cell(1,4);for i=1:4 fprintf(请输入第%d,i);ai=input(个人的名字以字母形式输入,s);endi=1;j=1;k=1;l=1;s=0;for i=1:4for j=1:4if i=j 18 for k=1:

30、4if k=i&k=jfor l=1:4if l=i&l=j&l=k s=1+s;fprintf(%2d%-15s%-15s%-15s%-15sn,s,ai,aj,ak,al);endendendendendendend*30.编写程序求所有各位数字的立方和等于420的三位数%调用格式为 chengxu30function chengxu30u=0;for k=100:999 i=k;a=zeros(1,3);for j=1:3 a(j)=mod(i,10);i=fix(i/10);endif a(1)3+a(2)3+a(3)3=420 disp(k)u=1;endendif u=0 fpri

31、ntf(No this number!n);end*31.学校要举行篮球循环赛,共有十个队参加比赛,请你安排一下比赛场次,使每队每次打完比赛后至少能隔一场不比赛,以便得到休息从而保持体力,请用matlab 解决这个问题,并给出至少一个比赛日程表(每队休息的场次越多越好,但每队得到的休息应大体相同,不能出现某队刚打完比赛,马上和另一个已经休息了诺干场的球队比赛,这是不公平的)。注:本程序考虑了在一个比赛场地下的单循环问题,只给出了最优解。即让每个队休息最长时间并使休息时间大致相同。如果有一个以上的球场供给比赛,则只需按顺序进行比赛即可。%调用格式为 chengxu31function cheng

32、xu3119 a=1:5;b=10:-1:6;p=0;fprintf(场次球队 vs 球队 n);for k=1:9for i=1:5 p=p+1;fprintf(%2d%2d%2dn,p,a(i),b(i);endfor j=5:-1:1 a(j+1)=a(j);end a(2)=b(1);b(1)=;b(5)=a(6);a(6)=;end第一轮第二轮第三轮第四轮第五轮第六轮第七轮第八轮第九轮 1-10 1-9 1-8 1-7 1-6 1-5 1-4 1-3 1-2 2-9 10-8 9-7 8-6 7-5 6-4 5-3 4-2 3-10 3-8 2-7 10-6 9-5 8-4 7-3 6-2 5-10 4-9 4-7 3-6 2-5 10-4 9-3 8-2 7-10 6-9 5-8 5-6 4-5 3-4 2-3 10-2 9-10 8-9 7-8 6-7

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 实施方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁