西南交大MATLAB编程作业相关复习资料Word文件下载.docx
《西南交大MATLAB编程作业相关复习资料Word文件下载.docx》由会员分享,可在线阅读,更多相关《西南交大MATLAB编程作业相关复习资料Word文件下载.docx(45页珍藏版)》请在冰豆网上搜索。
elseifa<
=90&
=65
%c\n'
a+32)
elseifa<
=122&
=97
a
4.输入一个整数,写一程序输出它是几位数。
%此程序可以计算一万位整数的位数
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t4中
%然后在命令窗口直接输入t4(x)x为所输入的整数
functiont4(x)
i=0;
forj=1:
10000
x=abs(x/10);
a=fix(x);
ifa>
i=i+1;
end
ifa==0
break
disp(i)
5.写一程序求1!
+2!
+…+10!
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t5中
%然后在命令窗口直接输入t5
functiont5()
j=1;
s=0;
10
j=i*j;
s=s+j;
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;
(n-1)
t=t+10^i*a;
sum=x+t;
sum
7.编程求数列1,1/2,1/3,1/4,1/5,……的所有大于等于0.000001的数据项之和并输出结果
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t7中
%然后在命令窗口直接输入t7
functiont7()
forc=1:
100000
d=1/c;
s=s+d;
s
8.求3*3矩阵的主对角线元素之和。
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t8中
%然后在命令窗口直定义x为一个三行三列矩阵
%最后输入t8(x)
functiont8(x)
3;
j=i;
s=s+x(i,j);
9.从键盘输入的10个整数中,找出第一个能被7整除的数。
若找到,打印此数后退出循环;
若未找到,打印“notexist”。
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t9中
%然后在命令窗口定义x为输入的10个数的行向量形式
%最后输入t9(x)
functiont9(x)
a=x(i)/7;
b=fix(a);
ifa-b==0
disp(x(i))
break
ifi==10
notexist\n'
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;
=5000
a=(x-5000)*0.2;
g=a+d+e;
=2000
a=(x-2000)*0.1;
g=a+e;
=800
g=(x-800)*0.05;
else
g=0;
11.编写一个程序,用循环结构输出以下图形。
&
&
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t11中
%然后在命令窗口直接输入t11
functiont11()
fori=9:
-2:
1
forj=1:
i
'
\n'
12.编写一个程序求出1000以内的所有素数。
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t12中
%然后在命令窗口直接输入t12
functiont12()
x=[];
fori=2:
1000
t=1;
j=0;
forj=2:
i-1
a=i/j-fix(i/j);
t=0;
ift>
x=[x,i];
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为输入的字母
functiont14(x)
ifx=='
a'
x=='
z'
;
elsea=x-1;
ifx=='
x='
elseb=x+1;
%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))
面积=%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
A点在圆上\n'
ifc>
A点在圆外\n'
ifc<
1
A点在圆内\n'
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];
18.输入一串字符,直到输入一个星号(*)为止,统计(输出)其中的字母个数和数字字符个数。
(要求可输入任意字符)
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t18中
%然后在命令窗口直接输入t18('
)x为输入的字符串,必须以*号结束
functiont18(x)
a=numel(x);
k=0;
ifx(i)=='
*'
elseifx(i)>
='
x(i)<
='
|x(i)>
A'
Z'
j=j+1;
0'
9'
k=k+1;
字母个数为%d\n数字字符个数为%d\n'
j,k);
19.从键盘输入一个正整数n,编程判断这个数是否同时含有奇数字和偶数字。
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t19中
%然后在命令窗口直接输入t19(x)其中x为正整数
functiont19(x)
a=num2str(x);
b=numel(a);
g=0;
b
c=mod(a(i),2);
ifc==0
k=1;
fori=1:
g=1;
end
ifg==1&
k==1
Yes!
ifg==0|k==0
No!
20.设某县2000年工业总产值为200亿元,如果该县预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值将超500亿元?
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t20中
%然后在命令窗口直接输入t20
functiont20()
sum=200;
a=0;
a=sum*0.045;
sum=sum+a;
ifsum-200>
=300
%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));
c=fix(x);
ify==a*a*a+b*b*b+c*c*c
%d是水仙花数\n'
y)
elsefprintf('
%d不是水仙花数\n'
(2)一个整数等于该数所有因子之和,则称该数是一个完数。
6和28都是完数。
因为:
6=1+2+3,28=1+2+4+7+14.输出三位数中所有完数。
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t212中
%然后在命令窗口直接输入t212
functiont212()
fori=100:
999
sum=0;
ifmod(i,j)==0
sum=sum+j;
ifsum==i
disp(sum)
continue
22.输入10个数,将10个整数按生序排列输出,并且奇数在前,偶数在后。
如果输入的10个数是:
10987654321,则输出:
13579246810。
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t22中
%然后在命令窗口将需输入的10个数存入数组x中,
%最后直接输入t22(x)
functiont22(x)
y=[];
d=[];
k=1;
ifmod(x(i),2)~=0
d(k)=x(i);
t(d)
ifmod(x(i),2)==0
functiont(d)
ii=numel(d);
ii
y(i)=d(i);
forr=1:
ii-1
ify(r)>
y(r+1)
t=y(r);
y(r)=y(r+1);
y(r+1)=t;
%d'
23.将数组a[n]中的每一个元素依次循环向后移动一位。
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t23中
%然后在命令窗口直接输入t23
functiont23
x=0;
x=input('
输入一个数组a[],输入格式为[a1a2a3……]\n'
'
s'
x=str2num(x);
ifx~=0
t(x)
else
Notinput!
functionf=t(x)
a=[];
b=numel(x);
b-1
a(i+1)=x(i);
a
(1)=x(b);
disp(a)
24.将一个正整数n输出成“千分位”形式,即从个位数起,每三位之间加一个逗号,例如,将7654321输出成7,654,321.
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t24中
%然后在命令窗口直接输入t24
functiont24
输入一个整数\n'
b=ceil(a/3);
a(i)=mod(x,1000);
x=fix(x/1000);
forj=b:
-1:
2
%d,'
a(j));
%d'
a
(1));
25.求出矩阵a中每行元素的平均值和平均最大的行号。
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t25中
%然后在命令窗口定义矩阵a为需要输入的矩阵,再输入t25(a)
functiont25(a)
m=[];
n=[];
max=0;
p=[];
c=numel(a);
m=a(1,:
b=numel(m);
d=c/b;
d
n(i)=sum(a(i,:
));
p(i)=n(i)/b;
ifn(i)>
max
max=n(i);
k=i;
每行元素的平均值为:
p(i));
平均值最大的行号为:
%d\n'
k);
26.编写一个函数,找出矩阵A中最大元素和最小元素所在的行列号.
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t26中
%然后在命令窗口将需要处理的矩阵存入a中
%最后输入t26(a)
functiont26(a)
e=1;
f=1;
g=1;
min1=a(1,1);
max1=a(1,1);
ifmax1<
=a(i,j)
max1=a(i,j);
e=i;
f=j;
ifmin1>
min1=a(i,j);
g=i;
k=j;
最大元素所在的行列号为%d%d\n'
e,f);
最小元素所在的行列号为%d%d\n'
g,k);
27.给出年、月、日,计算该日是该年的第几天?
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t27中
%然后在命令窗口将需要处理的年月日按年月日顺序存入数组x中
%最后输入t27(x)
functiont27(x)
ifmod(x
(1),4)==0&
mod(x
(1),100)~=0|mod(x
(1),400)==0
a=1;
tian=30*(x
(2)-1)+x(3);
x
(2)-1
ifi==3|i==5|i==7|i==8|i==10
tian=tian+1;
ifx
(2)~=1|x
(2)~=2
tian=tian-1;
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输入格式为[x1x2……]\n'
b=input('
请输入数组b,b与a的规格相同\n'
d=numel(a);
c=[];
ifa(i)>
b(i)
c(i)=a(i)-b(i);
elseifa(i)<
=b(i)
c(i)=a(i)+b(i);
c
*30.编写程序求所有各位数字的立方和等于420的三位数.
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t30中
%然后在命令窗口直接输入t30
functiont30
fork=100:
i=k;
a=zeros(1,3);
3
a(j)=mod(i,10);
i=fix(i/10);
ifa
(1)^3+a
(2)^3+a(3)^3==420
disp(k)
s=1;
ifs==0
不存在这样的三位数\n'
*31.学校要举行篮球循环赛,共有十个队参加比赛,请你安排一下比赛场次,使每队每次打完比赛后至少能隔一场不比赛,以便得到休息从而保持体力,请用matlab解决这个问题,并给出至少一个比赛日程表(每队休息的场次越多越好,但每队得到的休息应大体相同,不能出现某队刚打完比赛,马上和另一个已经休息了诺干场的球队比赛,这是不公平的)。
%首先在MATLAB编辑器中建立如下程序并保存在文件名为t31中
%然后在命令窗口直接输入t31
functiont31
a=[1:
5];
b=[10:
6];
fork=1:
9
第%d轮\n'
%2d-----%2d\n'
a(i),b(i));
forj=5:
a(j+1)=a(j);
a
(2)=b
(1);
b
(1)=[];
b(5)=a(6);
a(6)=[];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
知识点总结
了解matlab中常见变量:
anspiNaneps等的基本含义
Pi圆周率eps浮点运算的相对精度10^-25Nan不定值ans求极值
了解matlab中变量定义的规则。
1、将矩阵
,
和
组合两个新矩阵:
求a和b的和,b和c的矩阵乘,a和c的数组乘。
组合成一个
的矩阵,第一列为按列顺序排