实验三 选择程序结构设计
第一题程序一
x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0];
y=[]; %建立存放所有y值的矩阵
for x0=x
if x0<0&x0~=-3
y=[y,x0*x0+x0-6];
elseif x0>=0&x0<5&x0~=2&x0~=3
y=[y,x0*x0-5*x0+6];
else
y=[y,x0*x0-x0-1];
end
end
x %输出所有x
y %输
出所有y
%第一题程序二
x=[-5,-3,1,2,2.5,3,5];
y=[];
for a=1:7
if x(a)<0&x(a)~=-3
y=[y,(x(a))^2+x(a)-6];
elseif x(a)>=0&x(a)<5&x(a)~=2&x(a)~=3
y=[y,(x(a))^2-5*x(a)+6];
else
y=[y,x(a)*x(a)-x(a)-1];
end
end
%第二题程序一:
x=input('请输入一个百分制成绩:');
if x>100|x<0
disp('您输入的成绩不是百分制成绩,请重新输入。');
else
if x<=100&x>=90
disp('A');
elseif x<=89&x>=80
disp('B');
elseif x<=79&x>=70
disp('C');
elseif x<=69&x>60
disp('D');
else
disp('E');
end
end
%第二题程序二:
s=input('请输入一个成绩(0分到100分之间):'); %s用于存放成绩
while 1 %判断输入成绩的合理性
if s<0|s>100
disp('输入的成绩需在0到100之间,请重新输入:')
s=input('请输入一个成绩(0分到100分之间):');
else
break;
end
end
switch fix(s/10) %对成绩做出等级判断
case {9,10}
disp('A')
case 8
disp('B')
case 7
disp('C')
case 6
disp('D')
otherwise
disp('E')
end
%第三题
n=input('请输入员工工号:');
h=input('该员工工作时数是:');
if h>120
x=(h-120)*84*(1+0.15)+120*84;
elseif h<60
x=h*84-700;
else
x=h*84;
end
disp([num2str(n),'号员工','的应发工资为',num2str(x)]);
%第四题(还可以用switch语句实现)
a=fix(10+(99-10)*rand(1,2)) %产生两个随机整数
x=a(1);
y=a(2);
t=input('请输入运算符号:','s');
if t=='+'
z=x+y;
elseif t=='-'
z=x-y;
elseif t=='*'
z=x*y;
elseif t=='/'
z=x/y;
end
disp([num2str(x),t,num2str(y),'=',num2str(z)]) %输出运算结果
%第五题
a=rand(5,6) %产生5x6的随机矩阵
n=input('请输入您要输出矩阵的第几行:');
if n>5
disp('超出了矩阵的行数,矩阵的最后一行为:')
a(5,:)
else
disp(['矩阵的第',num2str(n),'行为:'])
a(n,:)
end
实验四 循环结构程序设计
第一题程序一
s=0;
n=input('n=?');
for i=1:n
s=s+1/i/i;
end
PI=sqrt(6*s)
pi
%第一题程序二
n=input('n=?');
a=1:n;
b=1./a.^2;
PI=sqrt(6*sum(b))
pi
%第二题
y=0;
n=1;
while(y<3)
y=y+1/(2*n-1);
n=n+1;
end
y=y-1/(2*(n-1)-1)
n=n-2
%第三题
a=input('a=?');
b=input('b=?');
Xn=1;
Xn1=a/(b+Xn);
n=0;
while abs(Xn1-Xn)>1e-5
Xn=Xn1;
Xn1=a/(b+Xn);
n=n+1;
if n==500
break;
end
end
n
Xn1
r1=(-b+sqrt(b*b+4*a))/2
r2=(-b-sqrt(b*b+4*a))/2
%第四题
for i=1:100
if i==1
f(i)=1;
elseif i==2
f(i)=0;
elseif i==3
f(i)=1;
else
f(i)=f(i-1)-2*f(i-2)+f(i-3);
end
end
max(f)
min(f)
sum(f)
length(find(f>0))
length(find(f==0))
length(find(f<0))
%第五题:
s=0;n=0;
for i=2:49
b=i*(i+1)-1;
m=fix(sqrt(b));
for j=2:m
if rem(b,j)==0
break
end
end
if j==m
n=n+1;
s=s+b;
end
end
n
s