资源描述
习题三
3-2 从键盘输入一个三位整数,将它反向输出。如输入639,输出为936
程序如下:
m=input('请输入一个三位整数:');
m1=fix(m/100);%求m得百位整数
m2=rem(fix(m/10),10);%求m得十位数字
m3=rem(m,10);%求m得个位数字
m=m3*100+m2*10+m1%反向输出m
3-3 输入一个百分制成绩,要求输出成绩等级A,B,C,D,E。其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
要求:(1)分别用if语句与switch语句实现。
(2)输入百分制成绩后要判断该成绩得合理性,对不合理得成绩应输出出错信息。
程序如下:
(1)if语句
c=input('请输入成绩:');
if c>=90&c<=100
disp('A 成绩合理');
elseif c>=80&c<=89
disp('B 成绩合理');
elseif c>=70&c<=79
disp('C 成绩合理');
elseif c>=60&c<=69
disp('D 成绩合理');
elseif c<60
disp('E 成绩合理');
else
disp('成绩错误');
end
(2)switch语句
c=input('请输入成绩:');
switch fix(c)
case num2cell(90:100)
disp('A 成绩合理');
case num2cell(80:89)
disp('B 成绩合理');
case num2cell(70:79)
disp('C 成绩合理');
case num2cell(60:69)
disp('D 成绩合理');
case num2cell(0:59)
disp('E 成绩合理');
otherwise
disp('成绩错误');
end
3-4 建立5*6矩阵,要求输出矩阵第N行元素。当N值超过矩阵得行数时,自动转为输出矩阵最后一行元素,并给出出错信息。
程序如下:
clear all
a=fix(rand(5,6)*89)+10;
n=input('请输入行数n(输出结果就是5*6矩阵得元素):');
if n>5|n<0
b=a(5:5,:);
disp(['输入行数错误,程序输出最后一行:',num2str(b)])
else
c=a(n:n,:);
disp(['输出结果为:',num2str(c)])
end
3-5 产生20个两位随机整数,输出其中小于平均值得偶数。
程序如下:
x=fix(rand(1,20)*89)+10;
x1=fix(sum(x)/20);
disp(['平均数就是: ',num2str(x1)])
m=(rem(x,2)==0&x<x1);
n=find(m);
disp(['小于平均数得数就是: ',num2str(x(n))]);
3-6 输入20个数,求其中最大数与最小数。要求分别用循环结构与调用MATLAB得max函数、min函数来实现。
程序如下:
主函数
c=input('请输入20个数:')
disp('最大值就是:')
m=max(c)
disp('最小值就是:')
n=min(c)
max函数
function m=max(a[])
m=a(1,20);
for i=2:20
if m>a(1,i)
m=a(1,i)
end
end
min函数
function n=min(a[])
m=a(1,20);
for i=2:20
if n<a(1,i)
n=a(1,i)
end
end
3-8 当n分别取100、1000、10000时,求下列各式得值:
(1)1/1^2+1/2^2+1/3^2+···+1/n^2+···(=pi^2/6)
程序如下:
clear all
n=1:100;
b=1、/(n、*n);
c=sum(b);
disp(['当n等于100时: ',num2str(c)])
n=1:1000;
b=1、/(n、*n);
c=sum(b);
disp(['当n等于1000时: ',num2str(c)])
n=1:10000;
b=1、/(n、*n);
c=sum(b);
disp(['当n等于10000时: ',num2str(c)])
结果:>> 当n等于100时: 1、635
当n等于1000时: 1、6439
当n等于10000时: 1、6448
(2) 1-1/3+1/5-1/7+···(=pi/4)
程序如下:
clear all
n=1:100;
b=1、/(4、*n-3)-1、/(4、*n-1);
c=sum(b);
disp(['当n等于100时: ',num2str(c)])
n=1:1000;
b=1、/(4、*n-3)-1、/(4、*n-1);
c=sum(b);
disp(['当n等于1000时: ',num2str(c)])
n=1:10000;
b=1、/(4、*n-3)-1、/(4、*n-1);
c=sum(b);
disp(['当n等于10000时: ',num2str(c)])
结果:>> 当n等于100时: 0、78415
当n等于1000时: 0、78527
当n等于10000时: 0、78539
(3)1/4+1/16+1/64+···+1/4^n+···(=1/3)
程序如下:
clear all
n=1:100;
b=1、/(4、^n);
c=sum(b);
disp(['当n等于100时: ',num2str(c)])
n=1:1000;
b=1、/(4、^n);
c=sum(b);
disp(['当n等于1000时: ',num2str(c)])
n=1:10000;
b=1、/(4、^n);
c=sum(b);
disp(['当n等于10000时: ',num2str(c)])
结果:>> 当n等于100时: 0、33333
当n等于1000时: 0、33333
当n等于10000时: 0、33333
(4)···((2n)(2n)/(2n-1)(2n+1))···(=pi/2)
程序如下:
clear all
n=1:100;
b=((2*n)、*(2*n))、/((2*n-1)、*(2*n+1));
c=prod(b);
disp(['当n等于100时: ',num2str(c)])
n=1:1000;
b=((2*n)、*(2*n))、/((2*n-1)、*(2*n+1));
c=prod(b);
disp(['当n等于1000时: ',num2str(c)])
n=1:10000;
b=((2*n)、*(2*n))、/((2*n-1)、*(2*n+1));
c=prod(b);
disp(['当n等于10000时: ',num2str(c)])
结果:>> 当n等于100时: 1、5669
当n等于1000时: 1、5704
当n等于10000时: 1、5708
3-9若两个连续自然数得乘积减1就是素数,则称这两个连续自然数就是亲密数对,该素数就是亲密素数。例如,2*3-1=5,由于5就是素数,所以2与3就是亲密数对,5就是亲密素数。求[2,50]区间内:
(1)亲密数对得对数。
(2)与上述亲密数对对应得所有亲密素数之与。
程序如下:
clear all
p=0;
l=0;
H=[];
for m=2:49
a=m;
b=m+1;
c=a*b-1;
for k=1:c
if rem(c,k)==0
l=l+1;
end
end
if l==2
disp(['亲密数对就是','(',num2str(a),',',num2str(b),')'])
p=p+1;
H=[H,c];
end
l=0;
end
sum=sum(H);
disp(['亲密数对得个数就是:',num2str(p)])
disp(['亲密数对得与就是: ',num2str(sum)])
3-10 根据y=1+1/3+1/5+···+1/(2n-1),求:
(1)y<3时得最大n值。
(2)与(1)得n值对应得y值。
程序如下:sum=0;
for n=1:100
sum=sum+1/(2*n-1);
if sum>3&(sum-1/(2*n-1))<3
disp(n-1)
disp(sum-1/(2*n-1))
end
end
方法2
clear all
n=1;
y=0;
while(y<3)
x=1/(2*n-1);
n=1+n;
y=y+x;
end
disp(['y<3时n得最大值就是: ',num2str(n-2)])
disp(['相应得y值就是: ',num2str(y-x)])
3-12 编写一个函数文件,用于求两个矩阵得乘积与点乘,然后在命令文件中调用该函数。
程序如下:
mul函数 %用于求两个矩阵得乘积与点乘
function [x,y]=mul(a,b)
x=a*b;
y=a、*b;
main%主函数
a=input('请输入一个矩阵:');
b=input('请再输入一个矩阵:(注意:两矩阵要可以相乘)');
[x,y]=mull(a,b);
disp('这两个矩阵得乘积为:');
x
disp('这两个矩阵得点乘为:');
y
3-14 先用函数得递归调用定义一个函数文件求∑I,然后调用该函数文件求∑k+∑k^2+∑1/k
程序如下:
定义一个求与函数:
function sum=add(n,m)
if n<1
sum=0;
else
sum=n^m+add(n-1,m);
end
主函数:
clear all
y=add(100,1)+add(50,2)+add(10,-1);
disp(y)
展开阅读全文