matlab平时作业

更新时间:2023-11-15 02:12:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《MATLAB程序设计基础》平时作业

说明:1-17题为必做题,须分别提交纸质文档及与纸质文档对应的电子文档.doc版。 1. 对于每输入的一个百分制成绩,要求输出对应的成绩等级A、B、C、D、E。其中A的分

值在区间[90,100)内;B的分值在区间[80,90)内;C的分值在区间[70,80)内;D的分值在区间[60,70)内;E的分值在区间[0,60)内;要求: 1)要有对输入成绩是否合理的判断:

①输入成绩如果含有小数,只能是“x.5”的形式,其实x为合理的整数。 ②成绩必须在百分制范围内。

③如果输入的成绩不合理,应向命令窗口输出报错信息“输入的成绩不合理” 2)用if语句实现题目要求

x=input('输入一个数值:'); %输入

if mod(x,0.5)==0&&x>=0&&x<100; %mod(x,0.5)表示x除以0.5的余数,用以判断成绩含小数是否为x.5

if x<0&x>=100 %不合理成绩

disp('输入的成绩不合理') elseif x<100&x>=90%成绩[90 100) disp('成绩等级为:A')

elseif x<90&x>=80 %成绩[80 90) disp('成绩等级为:B')

elseif x<80&x>=70%成绩[70 80)

disp('成绩等级为:C')

elseif x<70&x>=60%成绩[60 70)

disp('成绩等级为:D') else

disp('成绩等级为:E')%成绩[0 60)

end

else

disp('输入的成绩不合理') end

运行结果:

输入一个数值:57 成绩等级为:E

输入一个数值:93.3 输入的成绩不合理

3)用switch语句实现题目要求

x=input('请输入一个成绩:'); %输入

if mod(x,0.5)==0&&x>=0&&x<100 %mod(x,0.5)表示x除以0.5的余数,用以判断成绩含小数是否为x.5 switch floor(x/10) %x除以10向下取整 case 9

disp('成绩等级为:A'); case 8

disp('成绩等级为:B');

1

case 7

disp('成绩等级为:C'); case 6

disp('成绩等级为:D'); case {5,4,3,2,1,0}

disp('成绩等级为:E'); otherwise

disp('输入的成绩不合理'); end

else

disp('输入的成绩不合理');

end

运行结果:

请输入一个成绩:0 成绩等级为:E

请输入一个成绩:120 输入的成绩不合理 请输入一个成绩:95.5 成绩等级为:A

2. 设计程序,完成[10,99]之间两位整数的加、减、乘、除四则运算。要求:

1)随机产生区间[10,99]之内的两位随机整数

2)在产生符合要求的随机数后,输入一个运算符号,做相应的运算 3)运算结果显示在命令窗口,其显示类似于“a=x+y=68”的形式。 x=round((99-10)*rand(1)+10); %在区间[10 99]随机选一个数x y=round((99-10)*rand(1)+10); %在区间[10 99]随机选一个数y

sym=input('请输入运算符号(+-*/):','s'); switch sym %switch语句 case{'+'} a=x+y;

disp(['输入的两数之和b=',num2str(x),'+',num2str(y),'=',num2str(a)]); %输出显示类似于“a=x+y=68”的形式 case{'-'} a=x-y;

disp(['输入的两数之差c=',num2str(x),'-',num2str(y),'=',num2str(a)]); case{'*'} a=x*y;

disp(['输入的两数之积d=',num2str(x),'*',num2str(y),'=',num2str(a)]); case{'/'} a=x/y;

disp(['输入的两数之商e=',num2str(x),'/',num2str(y),'=',num2str(a)]); otherwise disp('输入符号错误') end

运行结果:

请输入运算符号(+-*/):+

2

输入的两数之和b=95+31=126 请输入运算符号(+-*/):-

输入的两数之差c=64-53=11 请输入运算符号(+-*/):*

输入的两数之积d=89*78=6942 请输入运算符号(+-*/):/

输入的两数之商e=51/12=4.25

3. 求下列分段函数的值并绘制函数曲线。

?x2?x?6,x?0且 x?-3?y??x2?5x?6,0?x<10,x?2且 x?3

?x2?x?1,其他? 要求:

1)x的值以向量的形式从键盘输入。 2)用if语句实现,分别输出x =﹣5.0,﹣3.0,1.0,2.0,2.5,3.0,5.0时的y值。 x=input('please input x='); if x<0 & x~=3 y=x.^2+x-6;

elseif x>=0 & x<10 & x~=2 & x~=3 y=x.^2-5.*x+6; else

y=x.^2-x-1; end

disp(['y=',num2str(y)]) 运行结果:

please input x=[-5.0 -3.0 1.0 2.0 2.5 3.0 5.0 ] y=14 11 -1 1 2.75 5 19

3)自行拟定自变量的取值,绘制该分段函数的二维曲线。 x=-10:1:15; %自拟自变量的取值 if x<0 & x~=3 y=x.^2+x+6;

elseif x>=0 & x<10 & x~=2 & x~=3 y=x.^2-5.*x+6; else

y=x.^2-x-1; end

plot(x,y,'r-') %绘制分段函数 title('分段函数') xlabel('x') ylabel('y') hold on

3

图3(3)分段函数的二维曲线

4. 分别使用for循环语句和while循环语句找出最小的n值,使得n!>10100,并求出n!。

for循环语句如下:

s=1; %对s赋初值

for n=1:100 %默认步长为1 s=s*n; %s=n! if(s>10100)

break; %如果s>10100,结束运行 end

end

disp(['n=',num2str(n)]) %输出n disp(['s=',num2str(s)]) %输出s

运行结果: n=8 s=40320

while循环语句如下:

s=1; %对s赋初值

n=0; %循环次数赋初值 while(s<=10100)

n=n+1; %不能使用++ s=s*n; end

disp(['n=',num2str(n)]);

disp(['s=',num2str(s)]); %组合字符串 运行结果: n=8 s=40320 5. 已知

f1=1,n=1 f2=0,n=2

4

f3=1,n=3

fn=fn-1-2fn-2+fn-3,n>3 求f1 ~ f50中:

1) 最大值和最小值及它们的位置、各数之和 (最大值给变量MAX,其位置给变量x,

最小值给变量MIN,其位置给变量y,各数之和给变量SUM)。 2) 正数、零、负数的个数

(依次赋值给变量N_positive,N_zero,N_negative)。

f(1)=1; f(2)=0;

f(3)=1; %输入 n=3; %赋值 while (n<50) n=n+1;

f(n)=f(n-1)-2*f(n-2)+f(n-3);

end

[MAX,x]=max(f) %MAX为向量f中最大值元素,x为最大值元素的索引号 [MIN,y]=min(f) %MAX为向量f中最小值元素,y为最小值元素的索引号 SUM=sum(f)

N_positive=numel(find(f>0)) %numel表示返还数组中的元素个数, N_zero=numel(find(f==0)) %返还f中等于0的位置 N_negative=numel(find(f<0)) 运行结果: MAX =406631 x = 49

MIN =-403795 y =50

SUM =76861 N_positive =25 N_zero =2

N_negative =23

6. Fibonacci数组的元素满足Fibonacci规则:

ak+2=ak+ak+1,(k=1,2,3,?);且a1= a2=1。

请设计一段程序,求出该数组中第一个大于10000的元素对应的k值以及该元素值。 a(1)=1; a(2)=1; k=1;

while a(k)<=10000

a(k+2)=a(k)+a(k+1); k=k+1;

end

disp(['k=',num2str(k)])

disp(['a(k)=',num2str(a(k))]) 运行结果:

5

本文来源:https://www.bwwdw.com/article/l7mv.html

Top