matlab求自然数e的思路,matlab练习3 - osc_4imme0wh的个人空间 - OSCHINA - 中文开源技术交流社区...

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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值