电脑P136编程作业 2.doc_第1页
电脑P136编程作业 2.doc_第2页
电脑P136编程作业 2.doc_第3页
电脑P136编程作业 2.doc_第4页
电脑P136编程作业 2.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编程训练实例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:13 if mod(i,2)=0 ai=bj;j=j+1; endendfor i=2:2:13 if mod(i,4)=0 ai=bj; j=j+1; endendfor i=4:4:13 if 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); %在多少张里面取第一张。 a(1)=; %将上面取出的第一张牌所在空格剪掉。 b(i)=a(1); %翻出来时桌面上亮出来的牌。 i=i+1; a(1)=;%随着i自增,取出现的空格为空。(即删除)。endc=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.%调用格式为card2function 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)=; 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;课外拓展按照取出第一张放到最后,然后抽出第二张放在桌子上,依次类推,并且桌子上的牌可以从键盘输入,依次类推,求原来牌的排列。%调用格式为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); %目前的片数;numle为元数的个数。 f(n+1)=f(1); %在多少张里面取第一张。 f(1)=; %将上面取出的第一张牌所在空格剪掉。 e(i)=f(1); %翻出来时桌面上亮出来的牌。 i=i+1; f(1)=;%随着i自增,取出现的空格为空。(即删除)。end g=cell(1,b);%由BC对应的数,将C中字符型的牌放入由B决定对应的D中。for k=1:b r=e(k); gr=ck;endy=g; 2 学校要举行篮球循环赛,共有十个队参加比赛,请你安排一下比赛场次,使每队每次打完比赛后至少能隔一场不比赛,以便得到休息保持体力,请你用MATLAB解决这个问题,并给出至少一个比赛日程表。(每队休息的场次越多越好,但每队都应得到的休息大体相同,不能出现某队刚打完比赛,马上和另一个已经休息了若干场的球队比赛,这是不公平的)。1.编写一个程序,要求输入五个整数,然后由小到大排序再输出1.1 %调用形式为:chengxu2(a b c d e f)function f=chengxu1(x) for i=1:4 for j=(i+1):5 if x(i)x(j) a=x(i); x(i)=x(j); x(j)=a; end end end f=(x);1.2 %编写一个程序,要求输入五个整数,然后由小到大排序再输出function h=chao1()a=cell(1,5);a=input(Please 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,6,5,4改为:4,5,6,8)。 2.1 % 将一个整型数组的元素按逆序重新存放%调用形式为:chengxu2(a b c dn)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;enddisp(x)2.2%将一个整型数组的元素按逆序重新存放function chao2()a=input(请输入一个数组:);rot90(a,2) 3. 输入一个字符,如果是大写字母,则将其转换成小写并输出;若是小写则直接输出;若是非字母字符则打印:“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.2function f=chao3m=input(请输入一个字符:,s);i=isletter(m);if i=0 fprintf(“Dataerror!”n) else n=lower(m); disp(n)end4.输入一个整数,写一程序输出它是几位数。 %输入形式为chengxu4(x),x为数字。function f=chengxu4(x)i=0;for j=1:10000 %此处表示可以容纳10000位数字的位数求解 x=x/10; a=fix(x);if a0 i=i+1;end if a=0 i=i+1; break endendfprintf(你输入的是%d位数字n,i); %或写成 i 5.写一程序求1!+2!+10! %调用形式为chengxu5function chengxu5()j=1;sum=0;for i=1:10 j=i*j; sum=sum+j;endfprintf(10以内的阶乘为 %dn,sum)%最后一条语句也可为 sum6.从键盘上输入a与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;endsum7.编程求数列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;endfprintf(所求大于等于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);endsum9.从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印“not exist”。%调用形式为chengxu9(x1,x2,x3x10)function chengxu9(x)for i=1:10 a=x(i)/7; b=fix(a); if a-b=0 disp(x(i) break end if i=10 fprintf(not existn); endend 10. 设计一个用于计算个人所有税的程序。假设个人所得税的缴纳标准为:月收入少于等于800元者不纳税;超出800元的部分,纳税5%;超出2000元的部分,纳税10%;超出5000元的部分,纳税20%;超出10000元的部分,纳税30%;超出100000元的部分,纳税40%。 %调用形式为chengxu10(x)function chengxu10(x)if x=800 g=0;elseif x=2000 g=(x-800)*0.05;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.编写一个程序,用循环结构输出以下图形。&%调用形式为chengxu11 function chengxu11() for i=9:-2:1 for j=1:i fprintf(&) end fprintf(n); end12.编写一个程序求出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; break end endif t0 fprintf(%d n,i);endend 或 %调用格式为chengxu12function chengxu12()a=0;b=0;l=;k=1;for i=1:1000 for j=2:i-1 a=i/j; b=fix(a); if b-a=0 break end end if a-b0 k=1+k; l(k)=i; endendl(1)=1;l 13. 输入两个整型变量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 chengxu14(x)if x=a|x=A a=x+25;else a=x-1;end if a=z|a=Z b=a-25; else b=x+1; end 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点是在圆内、圆外还是在圆周上,其中圆心坐标为(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)end if d1 fprintf(A点在圆外n) end if d= a&x(i)= A&x(i)= 0&x(i)=9 k=k+1; end end fprintf(字母个数为%dn数字字符个数为%dn,j,k); 或%输入一串字符,直到输入一个星号(*)为止,统计(输出)其中的字母个数和数字字符个数。(要求可输入任意字符)function chengxu18_2i=1;b=;m=0;n=0;while 1a=input(请输入一串字符:n,s);if a=* breakelse b=strcat(b,a);endendi=length(b);for i=1:i if 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=0;for i=1:b c=mod(a(i),2); if c=0 k=1; break endend for i=1:b c=mod(a(i),2); if c0 g=1; break end end if g=1&k=1 fprintf( Yes!n);end if g=0|k=0 fprintf( No!n); end 20. 设某县2000年工业总产值为200亿元,如果该县预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值将超500亿元?%调用格式为chengxu20function chengxu20()sum=200;a=0;j=0;for i=1:1000 a=sum*0.045; sum=sum+a; j=j+1; if sum-200=300 break endendfprintf( %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是水仙花数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:x if mod(x,i)=0 sum=sum+i; endendif sum=2*x fprintf( %d是一个完数n,x);end22. 输入10个数,将10个整数按生序排列输出,并且奇数在前,偶数在后。如果输入的10个数是: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:10 if mod(x(i),2)=0 d(k)=x(i); k=k+1; endend chengxu(d) k=1; for i=1:10 if mod(x(i),2)=0 d(k)=x(i); k=k+1; end end chengxu(d) function chengxu(d) ii=numel(d); for i=1:ii y(i)=d(i); endfor j=1:ii for r=1:ii-1 if y(r)y(r+1) t=y(r); y(r)=y(r+1); y(r+1)=t; end endendfprintf(%d ,y);23. 将数组an中的每一个元素依次循环向后移动一位。%调用格式为chengxu23function chengxu23x=0;x=input(请输入一个数组a,输入格式为a1 a2 a3 n,s);x=str2num(x);if x=0 chengxu(x)end function f=chengxu(x)a=;b=numel(x);for i=1:b-1 a(i+1)=x(i);endfor j=1:b-1 fprintf( a(%d)=%d n,j+1,a(j+1);end 24. 将一个正整数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中每行元素的平均值和平均最大的行号。%调用格式为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);endfprintf(n);fprintf(平均值最大的行号为: %dn,k);26. 编写一个函数,找出矩阵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:d for j=1:b if max1=a(i,j) min1=a(i,j); g=i; k=j; end endendfprintf(最大元素所在的行列号为%d %dn,e,f);fprintf(最小元素所在的行列号为%d %dn,g,k);27. 给出年、月、日,计算该日是该年的第几天?%输入的格式为年 月 日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)=8 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)=2 if a=0 tian=tian-1; endendtian28. 输入数组a,b的元素,用数组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.写一程序输出四个人的各种排序方式.%调用格式为chengxu29function 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:4 for j=1:4 if i=j for k=1:4 if k=i&k=j for l=1:4 if l=i&l=j&l=k s=1+s;fprintf( %2d %-15s %-15s %-15s %-1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论