实验四:函数编写与程序设计
一、实验目的1 . 掌握M文件的创建。
2.掌握函数的编写规则。
3.掌握函数的调用。
4 . 掌握基本的输入输出函数以及显示函数的用法。
5.会用Matlab程序设计实现一些工程算法问题。
二、实验内容
1 . 设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,显示相应的结果,并要求结果显示类似于“a=x+y=34”。a=input(请输入一个数:)
b=input(请输入一个数:);
fuhao=input(请输入一个运算符号(+-*/):,s);
switch fuhao
case {+}
he=a+b;
disp([和=,num2str(a),+,num2str(b),=,num2str(he)]);
case {-}
he=a-b;
disp([减=,num2str(a),-,num2str(b),=,num2str(he)])
case {*}
he=a*b;
disp([乘=,num2str(a),*,num2str(b),=,num2str(he)])
case {/}
he=a/b;
disp([除=,num2str(a),/,num2str(b),=,num2str(he)])
otherwise disp(请输入正确的符号);
end
2 . 求下列分段函数的值
要求:用if语句实现,分别输出x = -5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。其中x的值以向量的形式从键盘输入。(length())
x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0];
y=x;
for k=1:length(x)
if (x(k)<0 & x(k)~=-3)
y(k)=x(k)*x(k)+x(k)-6;
elseif (0<=x(k) & x(k)<10 & x(k)~=2 & x(k)~=3)
y(k)=x(k)*x(k)-5*x(k)+6;
else
y(k)=x(k)*x(k)-x(k)-1;
end
end
for i=1:length(x)
disp([y(,num2str(i),),=,num2str(y(i))])
end
3 . 输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分~100分为A,80分~89.5分为B,70分~79.5为C,60分~69.5分为D,60分以下为E。
要求:1)分别用if语句和switch语句实现
2)对不合理的成绩应输出出错信息“输入的成绩不合理”(若成绩出现小数,则只能是“.5”)
(rem函数 num2cell函数:将数值矩阵转化为单位矩阵)
x=input(请输入成绩:);
f=x-fix(x);
if (f==0 | f==0.5)
if x>=0 & x<=100
y=fix(x/10);
switch y
case 10
disp(A)
case 9
disp(A)
case 8
disp(B)
case 7
disp(C)
case 6
disp(D)
otherwise
disp(E)
end
else
disp(输入的成绩不合理)
end
else
disp(输入的成绩不合理)
end
4 . Fibonacci数组的元素满足Fibonacci规则:
a(k+2)=a(k)+a(k+1),(k=1,2,3,…);且a1= a2=1。
请设计一段程序,求出该数组中第一个大于10000的元素
要求显示的结果为:
i=21
a(i)=10946
或者
a(21)=10946
程序如下:
a=[];
a(1)=1;
a(2)=1;
k=0;
while (a(k+2)<10000)
k=k+1;
a(k+2)=a(k)+a(k+1);
end
s=a(k+2)
k=k+2
5 . 单步执行该程序,记录程序结果;试着分析try-catch语句的功能。
a =
8 1 6
3 5 7
4 9 2
a_end =
4 9 2
程序中有错误
错误是
ans =
Attempted to access a(4,:); index out of bounds because size(a)=[3,3].
6 . 编写一个阶乘函数jiecheng.m,利用该函数找出最小的n值,使得n!>10100,并求出n!。
function [i,s]=jiecheng(n)
s=1;
i=0;
while(s<100^n)
i=i+1;
s=s*i;
end
5.编写一个函数,实现对一个向量求以及求平均值的功能。(要求实现函数中,输入若不是一个向量,则报错)(sum(),length())
7.程序设计:公元前五世纪我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?
for a=1:100
for b=1:100
for c=1:100
if((a+b+c)==100 & 100=5*a+3*b+c/3)
disp([num2str(a),,,num2str(b),,,num2str(c)]);
end
end
end
end
三、设计提示
1.函数名和函数文件名应相同;对调用参数的取值范围要检验是否符合要求,如不符合要求,应给出出错信息(用if和error或disp函数实现)。
2.程序设计——“百鸡问题”答案不唯一。提示:设x:鸡翁数,则x的范围:0~19;y:鸡母数,则y的范围:0~33;z:鸡雏数,则z的范围:0~100。
四、实验报告要求
1.编写函数文件。
2.程序设计用M文件编写,并记录执行结果。“百鸡问题”答案不唯一,要给出所有答案。
3.书写实验报告时要结构合理,层次分明,在分析描述的时候,需要注意语言的流畅。
展开阅读全文