matlab练习3

13. 已知y=f(40)/(f(30)+f(20)) ①当f(n)=n+10ln(n^2+5)时,y的值是多少。②当f(n)=1×2+2×3+3×4+...+n×(n+1)时,y的值是多少。

f=@(n)n+10*log(n^2+5);
y=f(40)/(f(30)+f(20))

熟悉匿名函数的使用。

function[s]=Untitled(n)
s=0;
for i=1:n
    f=i*(i+1);
    s=s+f;
end

命令窗口输入Untitled(40)/(Untitled(30)+Untitled(20))

14. 从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。

x=input('number(end:0): ');
xsum=0;
n=0;
while x~=0
    xsum=xsum+x;
    n=n+1;
    x=input('number(end:0): ');
end
if n>0  %加了n>0的约束条件
xmean=xsum/n
xsum
end

了解思路,增加约束条件。看了一眼答案。

15. 用筛选法求某自然数范围内的全部素数。

素数:除1和它本身外不能被其它数整除的数。

筛选法求素数的基本思想:要找出2~m之间的全部素数,首先先在2~m中划去2的倍数(不包括2),然后划去3的倍数(不包括3),由于4已经被划去,再找5的倍数(不包括5),...,直到再划去不超过sqrt(m)的倍数,剩下的数就都是素数了。

不晓得怎么编,看答案。

m=input('m=');
p=1:m;
p(1)=0;
for i=2:sqrt(m)
    for j=2*i:i:m
        p(j)=0;
    end
end
n=find(p~=0);
p(n)

 16. 斐波拉契数列定义如下:f1=1,f2=1,fn=fn-1+fn-2 (n>2)

编写递归调用函数求斐波拉契数列的第n项,然后调用该函数验证斐波拉契数列的如下性质:f1^2+f2^2+...+fn^2=fn×fn+1

编写函数:

function[y]=ffib(n)
if n>2
y=ffib(n-1)+ffib(n-2);
else y=1;
end
y;

编写测试文件

F=[];
for i=1:20
    F=[F,ffib(i)*ffib(i)];
end
sum(F)
ffib(20)*ffib(21)

17.利用函数的递归调用,求n!

function[y]=multix(n)
if n>1
    y=n*multix(n-1);
else
    y=1;
end
y

18.某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price表示):

price<200 无折扣 200<=price<500 3%折扣 500<=price<1000 5%折扣 1000<=price<2500 8%折扣 2500<=price<5000 10%折扣 5000<=price 14%折扣

输入所售商品的价格,求其实际销售价格。

clear
clc
c=input('the price of goood: ');
switch c
    case num2cell(0:199) 
        y=c;
    case num2cell(200:499) 
        y=0.97*c;
    case num2cell(500:999) 
        y=0.95*c;
    case num2cell(1000:2499) 
        y=0.92*c;
    case num2cell(2500:4999) 
        y=0.9*c;
    otherwise 
        y=0.86*c;
end
fprintf('after discount:%d\n',y)

19.编写一个学生成绩管理的程序。

A.构造一个学生结构,包括学生的学号,姓名,课程名称(限五门),考试成绩和平均值等域。

B.从键盘上,连续输入N个学生的情况,分别将这些学生的情况填入到相应的域,若域中没有值即为空或0并计算平均成绩写入到平均值域。

C.根据平均值排序,并输出学生的姓名、学号和平均成绩。

clear
clc
str1=' ';
str2=' ';
str3=' ';
ave=0;
n=input('please input students number:');
val=cell(n,2);a=zeros(n,1);
student=struct('Name',str1,'No',str2,'Scores',val,'Ave',ave);
for i=1:n
    str1 = input('Name:','s');
str2 = input('No.:');

val = input('please input five Curriculums and Scores:{''a'',23;''b'',24;''c'',25;''d'',26;''e'',27}');
for k=1:n
a(k,1)=val{k,2};
end
% a(1,1)=val{1,2};
student(i).Name = str1;
student(i).No = str2;
student(i).Scores = val;
student(i).Ave = mean(a);
end
for ii= 1:(length(student)-1)
iptr = ii;
for jj=ii+1 : length(student)
if (student(jj).Ave > student(iptr).Ave)
iptr = jj;
end
end
if ii ~=iptr
temp = student(ii);
student(ii) =student(iptr);
student(iptr) = temp;
end
end
% for ii=1 : length(student)
% if student(ii).Ave > 80
% disp(student(ii).Name);
% disp(student(ii).Ave);
% end
% end
disp(['student name',blanks(6),'student no.',blanks(6),'student average']);disp(' ')
for ii=1 : length(student)
disp([student(ii).Name,blanks(20),num2str(student(ii).No),blanks(20),num2str(student(ii).Ave)]);
end

把答案的代码改了改,感觉自己编根本编不出来啊,哭唧唧。

猜你喜欢

转载自www.cnblogs.com/amberwang2018/p/10858774.html
今日推荐