西南交大MATLAB编程作业相关复习资料.docx

上传人:b****6 文档编号:5397324 上传时间:2022-12-15 格式:DOCX 页数:43 大小:101.31KB
下载 相关 举报
西南交大MATLAB编程作业相关复习资料.docx_第1页
第1页 / 共43页
西南交大MATLAB编程作业相关复习资料.docx_第2页
第2页 / 共43页
西南交大MATLAB编程作业相关复习资料.docx_第3页
第3页 / 共43页
西南交大MATLAB编程作业相关复习资料.docx_第4页
第4页 / 共43页
西南交大MATLAB编程作业相关复习资料.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

西南交大MATLAB编程作业相关复习资料.docx

《西南交大MATLAB编程作业相关复习资料.docx》由会员分享,可在线阅读,更多相关《西南交大MATLAB编程作业相关复习资料.docx(43页珍藏版)》请在冰豆网上搜索。

西南交大MATLAB编程作业相关复习资料.docx

西南交大MATLAB编程作业相关复习资料

编程题目

《历年竞赛题目及编程培训》P(135至137)

1.编写一个程序,要求输入五个整数,然后由小到大排序再输出.

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t1中

%然后在命令窗口定义x为所输入的5个整数的行向量形式,再输入t1(x)

functionf=t1(x)

fori=1:

4

forj=(i+1):

5

ifx(i)>x(j)

a=x(i);

x(i)=x(j);

x(j)=a;

end

end

end

disp(x)

2.将一个整型数组的元素按逆序重新存放(如原序为:

8,6,5,4改为:

4,5,6,8)。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t2中

%然后在命令窗口定义x为所输入的数组,再输入t2(x)

functiont2(x)

s=length(x);

a=fix(s/2);

fori=1:

a

j=s-i+1;

c=x(i);

x(i)=x(j);

x(j)=c;

end

disp(x)

3.输入一个字符,如果是大写字母,则将其转换成小写并输出;若是小写则直接输出;若是非字母字符则打印:

“Dataerror!

”。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t3中

%然后在命令窗口直接输入t3

functiont3()

a=input('输入一个字符:

string');%输入的形式为'x'x为输入的字符

ifa<=57&a>=48

fprintf('“Dataerror!

”\n')

elseifa<=90&a>=65

fprintf('%c\n',a+32)

elseifa<=122&a>=97

a

end

4.输入一个整数,写一程序输出它是几位数。

%此程序可以计算一万位整数的位数

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t4中

%然后在命令窗口直接输入t4(x)x为所输入的整数

functiont4(x)

i=0;

forj=1:

10000

x=abs(x/10);

a=fix(x);

ifa>0

i=i+1;

end

ifa==0

i=i+1;

break

end

end

disp(i)

5.写一程序求1!

+2!

+…+10!

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t5中

%然后在命令窗口直接输入t5

functiont5()

j=1;s=0;

fori=1:

10

j=i*j;

s=s+j;

end

disp(s)

6.从键盘上输入a与n的值,计算sum=a+aa+aaa+aaaa+…(共n项)的和。

例a=2,n=4,则sum=2+22+222+2222.

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t6中

%然后在命令窗口直接输入t6(a,n)a和n分别是一个数

functiont6(a,n)

x=a;t=a;

fori=1:

(n-1)

t=t+10^i*a;

sum=x+t;

end

sum

7.编程求数列1,1/2,1/3,1/4,1/5,……的所有大于等于0.000001的数据项之和并输出结果

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t7中

%然后在命令窗口直接输入t7

functiont7()

s=0;

forc=1:

100000

d=1/c;

s=s+d;

end

s

8.求3*3矩阵的主对角线元素之和。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t8中

%然后在命令窗口直定义x为一个三行三列矩阵

%最后输入t8(x)

functiont8(x)

s=0;

fori=1:

3;

j=i;

s=s+x(i,j);

end

s

9.从键盘输入的10个整数中,找出第一个能被7整除的数。

若找到,打印此数后退出循环;若未找到,打印“notexist”。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t9中

%然后在命令窗口定义x为输入的10个数的行向量形式

%最后输入t9(x)

functiont9(x)

fori=1:

10

a=x(i)/7;

b=fix(a);

ifa-b==0

disp(x(i))

break

end

ifi==10

fprintf('notexist\n');

end

end

10.设计一个用于计算个人所有税的程序。

假设个人所得税的缴纳标准为:

月收入少于等于800元者不纳税;超出800元的部分,纳税5%;超出2000元的部分,纳税10%;超出5000元的部分,纳税20%;超出10000元的部分,纳税30%;超出100000元的部分,纳税40%。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t10中

%然后在命令窗口直接输入t10(x)x为月收入

functiong=t10(x)

b=90000*0.3;

c=5000*0.2;

d=3000*0.1;

e=1200*0.05;

ifx>=100000

a=(x-100000)*0.4;

g=a+b+c+d+e;

elseifx>=10000

a=(x-10000)*0.3;

g=a+c+d+e;

elseifx>=5000

a=(x-5000)*0.2;

g=a+d+e;

elseifx>=2000

a=(x-2000)*0.1;

g=a+e;

elseifx>=800

g=(x-800)*0.05;

else

g=0;

end

elseifx>=5000

a=(x-5000)*0.2;

g=a+d+e;

elseifx>=2000

a=(x-2000)*0.1;

g=a+e;

elseifx>=800

g=(x-800)*0.05;

else

g=0;

end

11.编写一个程序,用循环结构输出以下图形。

  &&&&&&&&&

  &&&&&&&

  &&&&&

  &&&

&

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t11中

%然后在命令窗口直接输入t11

functiont11()

fori=9:

-2:

1

forj=1:

i

fprintf('&')

end

fprintf('\n');

end

12.编写一个程序求出1000以内的所有素数。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t12中

%然后在命令窗口直接输入t12

functiont12()

x=[];

fori=2:

1000

t=1;j=0;

forj=2:

i-1

a=i/j-fix(i/j);

ifa==0

t=0;

break

end

end

ift>0

x=[x,i];

end

end

disp(x)

13.输入两个整型变量a,b的值,输出a+b,a-b,a*b,a/b,的结果,要求连同算式一起输出,每个算式占一行。

例:

a等于10,b等于5,a+b的结果输成

10+5=15

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t13中

%然后在命令窗口直接输入t13(a,b)a,b为要输入的两个整形变量

functiont13(a,b)

c=a+b;

d=a-b;

e=a*b;

f=a/b;

fprintf('%d+%d=%d\n%d-%d=%d\n%d*%d=%d\n%d/%d=%d\n',a,b,c,a,b,d,a,b,e,a,b,f);

14.求前驱字符和后继字符。

输入一个字符,找出它的前驱字符和后继字符,并按ASCII码值,按从大到小的顺序输出这三个字符及其对应的ASCII码值。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t14中

%然后在命令窗口直接输入t14('x')x为输入的字母

functiont14(x)

ifx=='a'

x=='z';

elsea=x-1;

end

ifx=='z'

x='a';

elseb=x+1;

end

fprintf('%c%d,%c%d,%c%d\n',b,b,x,x,a,a);

15.输入三角形的边长,写一求三角形面积的函数。

(面积=sqrt(s(s-a)(s-b)(s-c)),s=(a+b+c)/2)

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t15中

%然后在命令窗口直接输入t15(a,b,c)a,b,c分别是三角形的边长

functiont15(a,b,c)

s=(a+b+c)/2;

d=sqrt(s*(s-a)*(s-b)*(s-c))

fprintf('面积=%d\n',d)

16.输入某个点A的平面坐标(x,y),判断(输出)A点是在圆内、圆外还是在圆周上,其中圆心坐标为(2,2),半径为1。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t16中

%然后在命令窗口直接输入t16(x,y)x,y为点A的横纵坐标

functiont16(x,y)

a=(x-2)^2;

b=(y-2)^2;

c=sqrt(a+b);

ifc==1

fprintf('A点在圆上\n')

end

ifc>1

fprintf('A点在圆外\n')

end

ifc<1

fprintf('A点在圆内\n')

end

17.求爱因斯坦数学题。

有一条长阶,若每步跨2阶,则最后剩余1阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,则最后剩5阶;若每步跨7步,最后正好一阶不剩。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t17中

%然后在命令窗口直接输入t17(x)x为台阶数

functiont17(x)

s=[];

fori=7:

x

ifmod(i,2)==1

ifmod(i,3)==2

ifmod(i,5)==4

ifmod(i,6)==5

ifmod(i,7)==0

s=[s,i];

end

end

end

end

end

end

disp(s)

18.输入一串字符,直到输入一个星号(*)为止,统计(输出)其中的字母个数和数字字符个数。

(要求可输入任意字符)

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t18中

%然后在命令窗口直接输入t18('x')x为输入的字符串,必须以*号结束

functiont18(x)

a=numel(x);

j=0;k=0;

fori=1:

a

ifx(i)=='*';

break

elseifx(i)>='a'&x(i)<='z'|x(i)>='A'&x(i)<='Z'

j=j+1;

elseifx(i)>='0'&x(i)<='9'

k=k+1;

end

end

fprintf('字母个数为%d\n数字字符个数为%d\n',j,k);

19.从键盘输入一个正整数n,编程判断这个数是否同时含有奇数字和偶数字。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t19中

%然后在命令窗口直接输入t19(x)其中x为正整数

functiont19(x)

a=num2str(x);

b=numel(a);

g=0;k=0;

fori=1:

b

c=mod(a(i),2);

ifc==0

k=1;

break

end

end

fori=1:

b

c=mod(a(i),2);

ifc>0

g=1;

break

end

end

ifg==1&k==1

fprintf('Yes!

\n');

end

ifg==0|k==0

fprintf('No!

\n');

end

20.设某县2000年工业总产值为200亿元,如果该县预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值将超500亿元?

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t20中

%然后在命令窗口直接输入t20

functiont20()

sum=200;a=0;

fori=1:

1000

a=sum*0.045;

sum=sum+a;

ifsum-200>=300

break

end

end

fprintf('%d\n',i);

21.

(1)输入一个三位数,判断是否是一个“水仙花数”。

水仙花数是指三位数的各位数字的立方和等于这个三位数本身。

例如:

153=1*1*1+5*5*5+3*3*3

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t211中

%然后在命令窗口直接输入t211(x)x为一个三位数

functiont211(x)

y=x;

a=mod(x,10);

x=x/10;

b=fix(mod(x,10));

x=x/10;

c=fix(x);

ify==a*a*a+b*b*b+c*c*c

fprintf('%d是水仙花数\n',y)

elsefprintf('%d不是水仙花数\n',y)

end

(2)一个整数等于该数所有因子之和,则称该数是一个完数。

例如:

6和28都是完数。

因为:

6=1+2+3,28=1+2+4+7+14.输出三位数中所有完数。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t212中

%然后在命令窗口直接输入t212

functiont212()

fori=100:

999

sum=0;

forj=1:

i-1

ifmod(i,j)==0

sum=sum+j;

end

end

ifsum==i

disp(sum)

continue

end

end

22.输入10个数,将10个整数按生序排列输出,并且奇数在前,偶数在后。

如果输入的10个数是:

10987654321,则输出:

13579246810。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t22中

%然后在命令窗口将需输入的10个数存入数组x中,

%最后直接输入t22(x)

functiont22(x)

y=[];d=[];k=1;a=0;

fori=1:

10

ifmod(x(i),2)~=0

d(k)=x(i);

k=k+1;

end

end

t(d)

k=1;

fori=1:

10

ifmod(x(i),2)==0

d(k)=x(i);

k=k+1;

end

end

t(d)

functiont(d)

ii=numel(d);

fori=1:

ii

y(i)=d(i);

end

forj=1:

ii

forr=1:

ii-1

ify(r)>y(r+1)

t=y(r);

y(r)=y(r+1);

y(r+1)=t;

end

end

end

fprintf('%d',y)

23.将数组a[n]中的每一个元素依次循环向后移动一位。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t23中

%然后在命令窗口直接输入t23

functiont23

x=0;

x=input('输入一个数组a[],输入格式为[a1a2a3……]\n','s');

x=str2num(x);

ifx~=0

t(x)

else

fprintf('Notinput!

');

end

functionf=t(x)

a=[];k=0;

b=numel(x);

fori=1:

b-1

a(i+1)=x(i);

end

a

(1)=x(b);

forj=1:

b

end

disp(a)

24.将一个正整数n输出成“千分位”形式,即从个位数起,每三位之间加一个逗号,例如,将7654321输出成7,654,321.

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t24中

%然后在命令窗口直接输入t24

functiont24

x=input('输入一个整数\n','s');

a=numel(x);

x=str2num(x);

b=ceil(a/3);

fori=1:

b

a(i)=mod(x,1000);

x=fix(x/1000);

end

forj=b:

-1:

2

fprintf('%d,',a(j));

end

fprintf('%d',a

(1));

fprintf('\n');

25.求出矩阵a中每行元素的平均值和平均最大的行号。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t25中

%然后在命令窗口定义矩阵a为需要输入的矩阵,再输入t25(a)

functiont25(a)

m=[];n=[];max=0;k=0;p=[];

c=numel(a);

m=a(1,:

);

b=numel(m);

d=c/b;

fori=1:

d

n(i)=sum(a(i,:

));

end

fori=1:

d

p(i)=n(i)/b;

ifn(i)>max

max=n(i);

k=i;

end

end

fprintf('每行元素的平均值为:

\n');

fori=1:

d

fprintf('%d',p(i));

end

fprintf('\n');

fprintf('平均值最大的行号为:

%d\n',k);

26.编写一个函数,找出矩阵A中最大元素和最小元素所在的行列号.

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t26中

%然后在命令窗口将需要处理的矩阵存入a中

%最后输入t26(a)

functiont26(a)

e=1;f=1;

g=1;k=1;

c=numel(a);

m=a(1,:

);

b=numel(m);

d=c/b;

min1=a(1,1);

max1=a(1,1);

fori=1:

d

forj=1:

b

ifmax1<=a(i,j)

max1=a(i,j);

e=i;

f=j;

end

ifmin1>=a(i,j)

min1=a(i,j);

g=i;

k=j;

end

end

end

fprintf('最大元素所在的行列号为%d%d\n',e,f);

fprintf('最小元素所在的行列号为%d%d\n',g,k);

27.给出年、月、日,计算该日是该年的第几天?

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t27中

%然后在命令窗口将需要处理的年月日按年月日顺序存入数组x中

%最后输入t27(x)

functiont27(x)

a=0;

ifmod(x

(1),4)==0&mod(x

(1),100)~=0|mod(x

(1),400)==0

a=1;

end

tian=30*(x

(2)-1)+x(3);

fori=1:

x

(2)-1

ifi==3|i==5|i==7|i==8|i==10

tian=tian+1;

end

end

ifx

(2)~=1|x

(2)~=2

ifa==0

tian=tian-1;

end

end

tian

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)时;

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t28中

%然后在命令窗口直接输入t28

functiont28()

a=input('请输入数组a输入格式为[x1x2……]\n');

b=input('请输入数组b,b与a的规格相同\n');

d=numel(a);c=[];

fori=1:

d

ifa(i)>b(i)

c(i)=a(i)-b(i);

elseifa(i)<=b(i)

c(i)=a(i)+b(i);

end

end

c

 

*30.编写程序求所有各位数字的立方和等于420的三位数.

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t30中

%然后在命令窗口直接输入t30

functiont30

s=0;

fork=100:

999

i=k;a=zeros(1,3);

forj=1:

3

a(j)=mod(i,10);

i=fix(i/10);

end

ifa

(1)^3+a

(2)^3+a(3)^3==420

disp(k)

s=1;

end

end

ifs==0

fprintf('不存在这样的三位数\n');

end

*31.学校要举行篮球循环赛,共有十个队参加比赛,请你安排一下比赛场次,使每队每次打完比赛后至少能隔一场不比赛,以便得到休息从而保持体力,请用matlab解决这个问题,并给出至少一个比赛日程表(每队休息的场次越多越好,但每队得到的休息应大体相同,不能出现某队刚打完比赛,马上和另一个已经休息了诺干场的球队比赛,这是不公平的)。

%首先在MATLAB编辑器中建立如下程序并保存在文件名为t31中

%然后在命令窗口直接输入t31

functiont31

a=[1:

5];

b=[10:

-1:

6];

fork=1:

9

fprintf('第%d轮\n',k);

fori=1:

5

fprintf('%2d-----%2d\n',a(i),b(i));

end

forj=5:

-1:

1

a(j+1)=a(j);

end

a

(2)=b

(1);

b

(1)=[];

b(5)=a(6);

a(6)=[];

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

知识点总结

了解matlab中常见变量:

anspiNaneps等的基本含义

Pi圆周率eps浮点运算的相对精度10^-25Nan不定值ans求极值

了解matlab中变量定义的规则。

1、将矩阵

组合两个新矩阵:

求a和b的和,b和c的矩阵乘,a和c的数组乘。

组合成一个

的矩阵,第一列为按列顺序排

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1