数学建模中30道经典 MATLAB程序_第1页
数学建模中30道经典 MATLAB程序_第2页
数学建模中30道经典 MATLAB程序_第3页
数学建模中30道经典 MATLAB程序_第4页
数学建模中30道经典 MATLAB程序_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、编程1、编写一程序,要求输入五个整数,然后由小到大排序再输出。%输入n个数,然后由小到大输出a=input('输入数据:')n=length(a); %输入数据的长度i=1;j=1; %赋初值for i=1:n %需要进行n次比较 for j=2:n %与相邻的进行n-1次比较 if a(j-1)>a(j) b=a(j-1); a(j-1)=a(j); a(j)=b; %比较前者是否比后者大,大的就互换 end endendfprintf(' %d',a) ; 2、将一个整型数组的元素按逆序重新存放(如原序为:8,6,5,4改为4,5,6,8)。funct

2、ion lin5a=input('输入数据:')n=length(a);%求输入a的长度for i=1:n/2 b=a(i); a(i)=a(n+1-i); a(n+1-i)=b;endfprintf(' %d',a)3、输入一个字符,如果是大写字母,则将其转换成小写并输出,若是小写,则直接输出;若是非字母字符则打印:datarror.function xin2a=input('输入数据:','s')if a>=65&a<=90 fprintf('shuchu is %cn',a+32);els

3、eif a>=97&a<=122 fprintf('shuchu is %cn',a);else a='dataerror' fprintf('shuchu is %s',a);end4、输入一个整数,写一程序输出它是几位数。function lin6a=input('输入数据:','s')n=length(a)%求输入a的长度b=n;fprintf('weishu %d',b);end5、写一程序求1!+2!+10!function wi=1;j=1;s=0; %赋初值whil

4、e i<=10 j=j*i; s=s+j; i=i+1;endfprintf('s is %dn',s);6、从键盘上输入a与n的值,计算sum=a+aa+aaa+aaaa+(共n项)的和。例如a=2,n=4,sum=2+22+222+2222.function qa=input('输入数据:')n=input('输入数据:')i=1;sum=0;he=0;while i:n he=he+a*10(i-1); sum=sum+he; i=i+1;endfprintf('sum is %ld',sum);end7、编程求数列1

5、,1/2 ,1/3 , , ,的所有大于等于0.000001的数据项之和并输出结果。function xin4i=1;s=1;%赋初值for i=1:1000000 a=1/(i+1); while a>=0.000001 s=s+a; break endendfprintf('he is %ld',s);8、求3*3矩阵的主对角线元素之和。%求3*3矩阵主对角线元素之和function ya=input('输入矩阵:')f=a(1,1)+a(2,2)+a(3,3);fprintf('%6dn',f);end9、从键盘输入的10个整数中,找

6、出第一个能被7整除的数。若找到,打印此数后退出循环;若未找到,打印“not exist”。 function lin11a=input('输入数据:')for i=1:10 w=0; if rem(a(i),7)=0 w=1; break endendif w=1 fprintf('shuchu is %d',a(i);else fprintf('shuchu is not exist%d');end10 设计一个用于计算个人所有税的程序。假设个人所得税的缴纳标准为:月收入少于等于800元者不纳税;超出800元的部分,纳税5%;超出2000元的部

7、分,纳税10%;超出5000元的部分,纳税20%;超出10000元的部分,纳税30%;超出100000元的部分,纳税40%。function xin7a=input('输入数值:')if a>100000 j=(a-100000)*0.4+90000*0.3+5000*0.2+3000*0.1+1200*0.05;elseif a>10000 j=(a-10000)*0.3+5000*0.2+3000*0.1+1200*0.05;elseif a>5000 j=(a-5000)*0.2+3000*0.1+1200*0.05;elseif a>2000 j

8、=(a-2000)*0.1+1200*0.05;elseif a>800 j=(a-800)*0.05;else j=0endfprintf(' %d',j)11.编写一个程序,用循环结构输出以下图形。&&&&&&&&&&&&&&&&&&&&&&&&&function fi=1; j=1;%赋初值for i=1:5 for j=1:11-2*i fprintf('&a

9、mp;'); end fprintf('n');end12.编写一个程序求出1000以内的所有素数。function xin10fprintf( %d,2);for i=3:2:1000 tag=0; for j=2:i-1 if rem(i,j)=0 tag=1; end end if tag=0 fprintf(' %d',i) endend13. 输入两个整型变量a,b的值,输出a+b,a-b,a*b,a/b,的结果,要求连同算式一起输出,每个算式占一行。例:a等于10,b等于5,a+b的结果输成 10+5=15function lin14a=in

10、put('shur:')b=input('shur:')c=a+b;d=a-b;e=a*b;f=a/b;fprintf('%d+%d=%dn',a,b,a+b)fprintf('%d-%d=%dn',a,b,a-b)fprintf('%d*%d=%dn',a,b,a*b)fprintf('%d/%d=%dn',a,b,a/b)14. 求前驱字符和后继字符。输入一个字符,找出它的前驱字符和后继字符,并按ASCII码值,按从大到小的顺序输出这三个字符及其对应的ASCII码值。function lin18

11、a=input('shuru:','s');b=(a+1)1;c=a1;d=(a-1)1;fprintf('shuc %c %dn',a+1,b,a,c,a-1,d)end15. 输入三角形的边长,写一求三角形面积的函数。(面积=sqrt(s(s-a)(s-b)(s-c), s=(a+b+c)/2)function lin9a=input('输入数据:')b=input('输入数据:')c=input('输入数据:')s=(1/2)*(a+b+c);mianji=sqrt(s*(s-a)*(s-b)

12、*(s-c);fprintf('mianji is %d',mianji);end16. 输入某个点A的平面坐标(x,y),判断(输出)A点是在圆内、圆外还是在圆周上,其中圆心坐标为(2,2),半径为1 。function lin10x=input('输入数据:')y=input('输入数据:')if sqrt(x-2)2+(y-2)2)>1 fprintf('shizai圆外%d');elseif sqrt(x-2)2+(y-2)2)=1 fprintf('shizai圆上%d');else fprintf

13、('shizai圆内%d');end 17. 求爱因斯坦数学题。有一条长阶,若每步跨2阶,则最后剩余1阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,则最后剩5阶;若每步跨7步,最后正好一阶不剩function xin11for a=7:1000 if rem(a,2)=1&rem(a,3)=2&rem(a,5)=4&rem(a,6)=5&rem(a,7)=0 break endendfprintf('shuchu is %d',a);18输入一串字符,直到输入一个星号(*)为止,统计(输出)其中的字母个

14、数和数字字符个数。(要求可输入任意字符)function lin13a=input('输入数据:','s');n=length(a);%输入的长度s=0;s1=0;for i=1:n if a(i)=42%判断是否为*号 q=0;%给q赋0 if (a(i)>=65&a(i)<=90)|(a(i)>=97&a(i)<=122)%判断是否为字母 q=1; elseif a(i)>=48&a(i)<=57%判断是否为数字 q=2; end else break%是*就结束循环 end if q=1 s=s+

15、1;%判断q是否为字母,是则加1 elseif q=2 s1=s1+1; else endendfprintf(' %d',s,s1)19. 从键盘输入一个正整数n,编程判断这个数是否同时含有奇数字和偶数字function lin15a=input('shurushuju:','s')n=length(a);s=0;for i=1:n w=0; if rem(a(i),2)=0 w=1; end if w=1 s=s+1; endendif s>=1&s<n fprintf('shuchu is yes! %s'

16、;,a)else fprintf('shuchu is no! %s')end20. 设某县2000年工业总产值为200亿元,如果该县预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值将超500亿元?function lin16t=1;while t<=100 if 200*(1+0.045)t>500 break else t=t+1; endendfprintf('shuchu is %d',t)21. (1)输入一个三位数,判断是否是一个“水仙花数”。水仙花数是指三位数的各位数字的立方和等于这个三位数本身。例如: 153=1*1

17、*1+5*5*5+3*3*3(2)一个整数等于该数所有因子之和,则称该数是一个完数。例如:6和28都是完数。因为:6=1+2+3,28=1+2+4+7+14. 输出三位数中所有完数。(1)function lin17q=input('shurushuju:');a=fix(q/100);p=rem(q,100);b=fix(p/10);c=rem(p,10);s=a3+b3+c3;if s=q fprintf('shuchu is yes!%s')else fprintf('shuchu is no!%s')end(2)function lin1

18、9for i=100:1000 s=0; for j=1:i/2%i的因子不会大于它的一半 if rem(i,j)=0 s=s+j;%i对j取余,余数为0,说明j是其因子,加在s上 end end if i=s%i等于s,说明i是完数 fprintf(' %10d',i) endendfprintf('n')22. 输入10个数,将10个整数按升序排列输出,并且奇数在前,偶数在后。如果输入的10个数是:10 9 8 7 6 5 4 3 2 1 ,则输出:1 3 5 7 9 2 4 6 8 10。function f=lin21a=;b=;x=input('

19、;shur:');n=length(x);for i=1:n if rem(x(i),2)=0 a=a,x(i); else b=b,x(i); endenda=sort(a);b=sort(b);f=b,a;23. 将数组an中的每一个元素依次循环向后移动一位。function xin14a=input('shuru:');n=length(a);for i=1:n-1 a(n+1)=a(1); a(1)=;endfprintf(' %d',a)24. 将一个正整数n输出成“千分位”形式,即从个位数起,每三位之间加一个逗号,例如,将7654321输出成

20、7,654,321.function lin22a=input('输入数据:','s');n=length(a);%计算a的长度b=;e=;d=','z=fix(n/3);if rem(n,3)=0;%n不能被3整除 c=rem(n,3); for i=1:c b=b,a(i); end for i=1:z e=e,d; for i=(3*i-1):(3*i+1) e=e,a(i); end endelse %n能被3整除的 for i=1:3 b=b,a(i); end for i=1:(z-1) e=e,d; for i=3*i+1:3*i+

21、3 e=e,a(i); end endendf=b,e 25. 求出矩阵a中每行元素的平均值和平均最大的行号。function lin23a=input('输入数据:');b=;i,j=size(a);for i=1:i s=0; for j=1:j s=s+a(i,j); end fprintf(' s(i=%d)=%dn',i,s/j) b=b,s/j;endw=0;for p=1:i if b(p)>w w=b(p); d=p; endendfprintf('第%d行最大',d) 26. 编写一个函数,找出矩阵A中最大元素和最小元素所

22、在的行列号function xin20a=input('输入数据:');w=0;q=inf;m,n=size(a);for i=1:(n*m) if a(i)>w w=a(i); max=i; endendfor i=1:(n*m) if a(i)<q q=a(i); min=i; endendfprintf('max = %dn n%d',max);l=ceil(max/m);h=max-m*(l-1);fprintf(' 最大元素的行%d列%dn',h,l)fprintf('min = %dn n%d',min);

23、l=ceil(min/m);h=min-m*(l-1);fprintf(' 最小元素的行%d列%d',h,l) 27. 给出年、月、日,计算该日是该年的第几天?function lin24a=input('年份:');b=input('月份:');c=input('日期:');y=0 31 28 31 30 31 30 31 31 30 31 30 31;j=length(y);if rem(a,4)=0 s=1; for i=2:(b+1) s=s+y(i-1); endelse s=0; for i=2:(b+1) s=s+y

24、(i-1); endendif b=1 fprintf('天数是%d',c)else fprintf('天数是%d',s+c)end 28. 输入数组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)时;function lin25a=input('输入数组:');b=input('输入数组:');n=length(a);for i=1:n if a(i)>b(i) c(i)=a(i)-b(i); fprin

25、tf(' %d',c(i) else c(i)=a(i)+b(i); fprintf(' %d',c(i) endend*29.写一程序输出四个人的各种排序方式.function f=chao2()f=;for i=1:4 a='ABCD'w=; w=w,a(i);a(i)=;m=w; for j=1:3 u=a;w=m; w=w,u(j);u(j)=;p=w; for k=1:2 v=u;w=p; w=w,v(k);v(k)=; w=w,v;f=f;w; end endend*30.编写程序求所有各位数字的立方和等于420的三位数function lin30for i=100:999 s=0; a=fix(i/100); p=rem(i,100); b=fix(p/10); c=rem(i,10); s=a3+b3+c3; if s=420 fprintf(' 没有%d',i) endend1 你玩过牌吗?把13张牌反过来(背面朝上)按一定的顺序排列,先把你已

温馨提示

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

评论

0/150

提交评论