第四次 上机作业
1、 从键盘输入一个4位整数,按照如下规则加密后输出。
加密规则:每位数字
都加上7,然后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。
Clear X=ones(1,4);
X (1)=input(’输入第一位:‘); X (2)=input(’输入第二位:‘); X (3)=input(’输入第三位:‘); X (4)=input(’输入第四位:‘); X=rem(7+x,10);
Y=1000.*x(3)+100.*x(4)+10.*x(1)+x(2)
2、 分别用if 和switch 语句实现以下计算,其中a 、b 、c 的值从键盘输入。
⎪⎪⎩
⎪
⎪⎨⎧
<≤+<≤+<≤++=5
.55.3,
ln 5.35.1,
sin 5.15.0,2x x c b x x b a x c bx ax y c a=input(‘请输入a :’); b=input(‘请输入b :’); c=input(‘请输入c :’); If(x>=0.5&&x<=1.5) y=a.*x^2+b.*x+c Elseif(x>=1.5&&x<=3.5) y=a.*(sin(b))^c+x
Elseif(x>=3.5&&x<=5.5)
y=log(abs(b+c./x))
end
a=input(‘请输入a:’);
b=input(‘请输入b:’);
c=input(‘请输入c:’);
Switch x
case(x>=0.5&&x<=1.5)
y=a.*x^2+b.*x+c
case(x>=1.5&&x<=3.5)
y=a.*(sin(b))^c+x
case(x>=3.5&&x<=5.5)
y=log(abs(b+c./x))
end
3、产生20个两位随机整数,输出其中小于平均值的偶数。
Clear al ;close all ;clc;
X=fix(rand(1,20)*89)+10;
Disp([‘20个随机数是:’,num2str(x)]);
X1=mean(x);
Disp([‘平均值为:’,num2str(x1)]);
N=find(rem(x,2)==0&x<x1);
Disp([‘小于平均值的偶数是:’,num2str(x(n))]);
4、 输入20个数,求其中最大数和最小数。
要求分别用循环结构和调用Matlab
的max 函数、min 函数来实现。
Clear all ;close all ;clc;
A=input(‘请输入20个数的一个行向量:’); a=A(1); b=A(1); For m=A Ifa>=m a=m; Else if b<=m b=m; End End
Disp([‘最小的数是:’,num2str(a)]) Disp([‘最大的数是:’,num2str(a)])
5、 已知:633222221+++++= s 分别用循环结构和调用Matlab 的sum 函数
求s 的值。
Clear all ;close all ;clc; S=0; For a=0:63 C=2^a S=s+c; End
Disp([‘2的0次方到63次方的和是:’,num2str(s)])
6、 当n 分别取100、1000、10000时,求下列各式的值。
(1) )2ln (1)1(41312111=+-++-+-
+ n n (2) )4(7151311π=+-+-
(3) )31(4
164116141=+++++ n
要求分别用循环结构和向量运算(使用sum 或prod 函数)来实现。
Clear all ;close all ;clc; Sum1=0;%当n 取100时 For n= 1:100 X=(-1)^(n+1)*(1/n); Sum1=sum1+x; End
Disp([‘当n 取1000时:sum=’,num2str(sum2)] Sum2=0;%当n 取1000时 For n= 1:1000 X=(-1)^(n+1)*(1/n); Sum2=sum2+x; End
Disp([‘当n 取10000时:sum=’,num3str(sum3)] Sum2=0;%当n 取10000时 For n= 1:10000 X=(-1)^(n+1)*(1/n); Sum3=sum3+x; End
7、 编写一个函数文件,求小于任意自然数n 的Fibnacci 数列各项。
Fibnacci 数
列定义如下:
⎪⎩⎪
⎨⎧>+=====--2
,
2,
11,12121n f f f n f n f n n n
Function f=func_fibnacci(n)
%FIBNACCI 斐波那契(Finacci )数列 %f=func_fibnacci(n),
%Written by wangchngyou@shandongUniversity at wcihai,2011 If n==1 n==2 F=1; Else
F=func_fibnacci(n-1)+func_fibnacci(n-2); end
8、 编写一个函数文件,用于求两个矩阵的乘积和点乘,然后在命令文件中调用
该函数。
Clear all ;close all ;clc; A=input(‘请输入一个矩阵:’) B=input(‘请输入一个矩阵:’) [f1,f2]=func_Matrixprod(a,b); Disp(‘两矩阵乘积运算结果为:’) Disp(fi)
Disp(‘两矩阵点积运算结果为:’) Disp(f2)
9、 先用函数的递归调用定义一个函数文件求∑=n
i m i 1,然后调用该函数求
∑
∑∑===++10
150
1
2
1001
1k k k k
k
k 。
Function sum=func_Sigmasum(n,m) %SIGAMASUM 西格玛求和 %sum=func_SigmaSuum(n,m)
%written by wangchenyou@shangdong University at weihai 2011 Ifn<=1 Sum=0; Else
Sum=n^m+func_sigmasum(n-1,m); end
10、 写出下列程序的输出结果。
(1) s=0;
a=[12,13,14;15,16,17;18,19,20;21,22,23]; for k=a for j=1:4 if rem(k(j),2)~=0 s=s+k(j); end end end s
(2)命令文件exe.m: global x x=1:2:5;y=2:2:6;
exsub(y);
x
y
函数文件sub.m: function fun=sub(z) global x
z=3*x;
x=x+z;
答: 1.s=108
2. X= 4 12 20
Y=2 4 6。