MATLAB答案整理(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a=b;
b=temp;
2 a=input('a=');
b=input('b=');
if a>=b
fprintf('较大的数是a,a=%g\n',a)
else
fprintf('较大的数是b,b=%g\n',b)
end
3 function [x1,x2 ] = xunlian24_3( a,b,c)
p=b*b-4*a*c;
x1=(-b+sqrt(p))/2*a;
x2=(-b-sqrt(p))/2*a;
disp(x1)
disp(x2)
end
4 %函数文件
function [s c]=xunlian24_4(r)
r=input('请输入圆的半径r=');
s=pi*r*r;c=2*pi*r;
fprintf('面积是s=%.4f\n',s)
fprintf('周长是c=%.4f\n',c)
end
%脚本文件
r=input('r=');
s=pi*r*r;c=2*pi*r;
fprintf('s=%.4f\n',s)
fprintf('c=%.4f\n',c)
5
function xunlian24_5(t)
s=0;
for ii=1:t
s=s+digui(ii);%把ii放到下面那个累乘的函数,累乘完后相加end
s %相加后输出s
function [ y ] =digui( n )
if n==1
else
y=digui(n-1)*n; %对比它小一的数再用一次函数,达到累乘的效果end
end
end
6 x=input('输入x:');
if x<1
p=x^2;
elseif x>=1&x<2
p=x^2-1;
else
p=x^2-2*x-1;
end
fprintf('p=%g\n',p);
switch p
case 1
y=x^2;
case 2
y=x^2-1;
otherwise
y=x^2-2*x-1;
end
fprintf('y=%g\n',y);
7 function [ y ] = xunlian24_7( x )
%UNTITLED12 Summary of this function goes here
% Detailed explanation goes here
x=input('x=')
if x<2
y=2*e*(x^-1);
else
y=log(x^2-1);
end
8 ch=input('输入一个字符:','s');
if ch>='A'&ch<='Z'
ch=ch+1;
if ch=='Z'+1
ch='A';
end
fprintf('为大写字母,后继字符为:%s\n',ch); %s 输出字符串elseif ch>='a'&ch<='z'
ch=ch-1;
if ch=='a'-1
ch='z';
end
fprintf('为小写字母,前导字符为:%s\n',ch); %s 输出字符串elseif ch>='0'&ch<='9'
fprintf('为数字,其ASCII码为:%d\n',ch);%d 十进制有符号整数else
fprintf('为其他字符,原样输出:%s\n',ch)
end
9 % x=input('总价是');
% if x<=500&x>0
% x=x
% elseif x>500&x<=1000
%
% elseif x>1000&x<=3000
% x=0.9*x
% elseif x>3000&x<=5000
% x=0.85*x
% elseif x>5000
% x=0.8*x
% else x<=0
% x=('输入错误')
% end
% fprintf('实际总价=%.2f/',x);
a=input('原来总价是');
x=floor(a/100);
switch x
case {0,1,2,3,4}
x=x;
case {5,6,7,8,9}
x=0.95*x;
end
fprintf('实际总价=%f\n',x)
10 x=input('打折前价格');
if x<500&x>=200
x=0.97*x
elseif x>=500&x<1000
x=0.95*x
elseif x>=1000&x<2500
x=0.92*x
elseif x>=2500&x<5000
x=0.9*x
elseif x>=5000
x=0.86*x
else x<200
x=x
end
fprintf('打折后价格%.2f/',x);
11 x=input( '成绩=');
if x>=90,y='优秀';
elseif x>=80,y='良好';
elseif x>=70,y='中等';
elseif x>=60,y='及格';
else y='不及格';
end
fprintf('成绩=%g\n等级为%s\n',x,y); 13 function [ ] = xunlian24_13(x)
num=length(x);
solu=[];
count=1;
disp(' 数据组个数');
for ii=1:num-1
if x(ii)==x(ii+1);
count=count+1;
continue;%继续看下一个数据end
solu=[solu;x(ii) count];
count=1;
end
14 s=0;
for i=1:100
s=s+i;
end
fprintf(' for型循环,结果是%g\n',s); i=1;s=0;
while i<=100
s=s+i;
i=i+1;
end
fprintf('while型循环,结果是%g',s);
15 A=fix(rand(20,10)*100)
disp(' 每行的和为')
R1=0;
for a=1:20
for b=1:10
R1=R1+A(a,b);
if b==10
disp(R1)
R1=0;
end
end
end
disp(' 每列的和为')
R2=0;
for m=1:10
for n=1:20
R2=R2+A(n,m);
if n==20
disp(R2)
R2=0;
end
end
end
16 yy1=[];
A=rand(20,10);
for m=1:20
s1=0;
for n=1:10
s2=s1+A(m,n);
end
s3=s2/10;
yy1=[yy1,s3];
y1=[y1,s2];
end
q=[y1' yy1'];
disp('每行的和为每行的平均值为') disp(q)
y2=[];
yy2=[];
B=rand(20,10);
for n=1:10
s4=0;
for m=1:20
s5=s4+B(m,n);
end
s6=s5/10;
yy2=[yy2,s6];
y2=[y2,s5];
end
p=[y2' yy2'];
disp('每列的和为每列的平均值为')
disp(p)
17 B=[];
A=fix((rand(20,10))*100)
for n=1:10;
s=0;
for m=1:20
s=s+A(m,n);
end
if s==0
B(:,n)=0;
else B(:,n)=A(:,n)/s;
end
end
B
18 s=0;
for a=1:10;
s=s+1^a+2^a+3^a;
end
fprintf('结果是%g\n',s)
19 disp('水仙花数有:')
for m=100:999
m1=fix(m/100); %求m的百位数字
m2=mod(fix(m/10),10); %求m的十位数字
m3=mod(m,10); %求m的个位数字if m==m1^3+m2^3+m3^3
fprintf('%g \n',m)
end
end
20 for i=100:200
if mod(i,21)==0
break
end
end
disp('第一个能被21整除的数为')
disp(i)
21 m=ceil(rand(1)*100);
for i=1:7
x=input('玩家猜的数是:');
if x>m
disp('High');
elseif x<m
disp('Low');
else x==m;
disp('You won');
break
end
if i==7
disp('bye bye')
end
end
22 a=input('输入a=');
b=input('输入b=');
yy1=[];
yy2=[];
for n=1:10
y1=(a+b)^n;
y2=(a-b)^n;
yy1=[yy1,y1];
yy2=[yy2,y2];
end
disp('(a+b)^n (a-b)^n')
yy3=[yy1' yy2']
23 n=input('请输入任意正整数');
while 1
while 1
if mod(n,2)~=0
break%是奇数跳出循环,跳出第一个while
else n=n/2
end
end %循环结束,由于while 1一直成立,可以一直执行n到变成奇数if n==1
break %结果是1跳出循环,输出结果,跳出最外层的while else
n=n*3+1 %是奇数但不是1,做题目要求的操作
end
end%最外层while的end 但只有满足n=1是才能跳出循环
disp(n)
24 disp('200内的素数有:')
y=[];
for i=2:200
for jj=2:i
if mod(i,jj)==0
if jj>=i
y=[y,i];
else
break
end
end
end
end
disp(y')
25 y1=[];
for m=2:100;
for n=2:m;
if mod(m,n)==0;
if n>=m
y1=[y1,m];
else
break;
end
end
end
end
y2=[];
i=length(y1);
disp('100以下相差为2的素数对有');
for p=1:i-1
if y1(p)+2==y1(p+1)
%y2=[y2 y1(p+1)];
disp([y1(p) y1(p+1)]);
end
end
26 disp('99以内的完全数有:')
for i=1:99
k=i^2;
if k<100
if mod(k,10)==i
fprintf('%5d%5d\n',i,k);
end
else
if mod(k,100)==i
fprintf('%5d%5d\n',i,k);
end
end
end
27 %冒泡排序
function N=xunlian24_27(P)
N=P;
for i=1:numel(P)
for j=2:numel(P)
if N(j-1)>N(j)
Q=N(j-1);
N(j-1)=N(j);
N(j)=Q;
end
end
end
end
28 %选择排序
function S = xunlian24_28( A ) %定义函数,输入为A,输出为S
S = zeros(size(A));%初始化S的大小
for i = 1:numel(A)%给S的每一个数赋值,第一个为A中最小的,第二个为第二小的。
[a, b] = min(A);%寻找A中最小的数a和其在A中的位置b
S(i) = a;%将a赋给S的第i个数
A(b) = [];%将这个数(当前A中的最小值)从A中删去,下次循环继续寻找剩下里边最小的即可
end
end
29 function []=xunlian24_29(A)
c=max(A(:));
fprintf('矩阵的最大值是%g\n',c)
[a,b]=find(A==max(A(:)));
fprintf('位置是第%g行,第%g列\n',a,b)
30 function [ x,y,z] = xunlian24_30(A)
c=A;
m=[];
m=[n min(c)];%找到各列的最小值
x=min(m);%找到最小值的最小值
[y,z]=find(c==x);
fprintf('该矩阵最小值为%f,位于第%d行第%d列\n',x,y,z)
end
31 function f = xunlian24_31( a,b )
c=[];
for ii=a:b
for m=2:ii
if mod(ii,m)==0
if m==ii
c=[c ii];
else
break
end
end
end
end
disp(c)
32 function [y ] = xunlian24_32( n )
a(1)=1;
a(2)=1;
for i=3:n
a(i)=a(i-2)+a(i-1);
end
y=a(n);
end
33 for ii=10:40%10的三次方是最小四位数,40的四次方超过六位
i3=num2str(ii^3);
i4=num2str(ii^4);%三四次方均转为字符
if length(i3)==4&length(i4)==6%长度判断
i_34=sort([i3 i4]);%两数合并后升序排列
if isequal(i_34,'0123456789')%是否为0至9字符串
disp(['这个数是' num2str(ii)])
disp(['它的三次方是' i3 ',' '四次方是' i4])
end
end
end
34 y(1)=input('请输入第1个数,输入完毕请按0:');
i=1;
while y(i)~=0
i=i+1;
y(i)=input(['请输入第',num2str(i),'个数:']);
end
disp('输入结束!敲任意键继续...')
pause;
x=length(y);
num=0;
s=0;
for i=1:x
if mod(y(i),2)~=0
num=num+1;
s=y(i)+s;
else
continue
end
end
fprintf('这组数有%d个奇数这%d个奇数的和为%d\n',num,num,s) 35 for i=100:200
if mod(i,35)==0
break
end
end
disp('第一个能被35整除的数为')
disp(i)
36%解决鸡兔同笼问题
a=input('头的数量是');
b=input('脚的数量是');
i=1;
while i>0
if rem(b-2*i,4)==0&(i+(b-2*i)/4)==a
break;
end
n1=i;
n2=(b-2*i)/4;
end
n1=i;
n2=(b-2*i)/4;
fprintf('num_chick is %d\n',n1)
fprintf('num_rabbit is %d\n',n2)
37 A=input('输入一个矩阵');
disp('它的秩为:')
rank(A)
disp('它的行列式为:')
det(A)
disp('它的逆矩阵为:')
inv(A)
disp('它的特征根为:')
eig(A)
38 function[maxnum,minnum]=xunlian24_38(A) [m,n]=size(A);%size():获取矩阵的行数和列数if m*n==0
disp('无最大值和最小值')
else maxnum=A(1,1);
minnum=A(1,1);
for i=1:m
for j=1:n
if A(i,j)>maxnum
maxnum=A(i,j);
end
if A(i,j)<maxnum
minnum=A(i,j);
end
end%结束j
end%结束i
end%结束函数
y=0;
for i=1:m
for j=1:n
y=y+A(i,j);
meannum=y/(m*n);
end
end
disp('矩阵的最大值为')
disp('矩阵的最小值为') minnum
disp('矩阵的平均值为') meannum
39 plot(tout,yout)
45 x=-pi:0.01:pi;
y=sin(x);
h=plot(handles.axes1,x,y); switch c
case{1}
set(h,'color','r')
case{2}
set(h,'color','g')
case{3}
set(h,'color','b') end
switch d
case{1}
set(h,'linestyle','-') case{2}
set(h,'linestyle','-.')
case{3}
set(h,'linestyle','--') end
55 subplot(2,2,1);
theta=0:0.01:2*pi;
r=0.5*(1+cos(theta));
polar(theta,r)
subplot(2,2,2);
X=[0 0.2 0.8 1 0.5 0];
Y=[1 0 0 1 1.8 1];
patch(X,Y,'r','linewidth',2) subplot(2,2,3)
x=0:0.01:4*pi;
y1=sin(x);
y2=20*cos(x);
plotyy(x,y1,x,y2)
subplot(2,2,4)
t=0:0.01:4*pi;
x=sin(t);
plot(x,y,'linewidth',2)
56 subplot(2,3,1);
x=-pi:0.01:pi;
y1=cos(x);
plot(x,y1);
title('First:cos');
subplot(2,3,2);
x=-pi:0.01:pi;
y2=sin(x);
plot(x,y2);
title('Second:sin');
subplot(2,3,3);
x=-pi:0.01:pi;
y3=abs(x);
plot(x,y3);
title('Third:abs');
subplot(2,3,4);
x=-pi:0.01:pi;
y4=floor(x);
plot(x,y4);
title('Fourth:floor');
57 subplot(2,3,[1 4]);
x=-pi:0.01:pi;
y1=cos(x);
plot(x,y1);
title('First:cos');
58 x=0:0.01:4 ;
figure
y1=cos(2.^x)-0.5;y2=sin(x*4);
plot(x,y1,x,y2,'r--');
xlabel('In');
ylabel('Out');
title('My Graphics');
legend('y1=cos(2.^x)-0.5','y2=sin(x*4)');
grid on;
59 x=-pi:0.01:pi;
y=cos(x);
plot(x,y);
text(pi/2,0,'\leftarrow cos(\pi/2)','fontsize',18)
60 x=[11:15];
y=[35 30 42;32 31 45;30 32 41;34 38 42;29 32 43]; bar(x,y)
figure(2)
bar3(x,y)。