(1) 用起泡法对输入数由小到大排序. 即将相邻两个数比较,将小的调到前头。
%定义函数paixv 来进行冒泡排序
function paixv(A)
n=length(A);
for i=1:n
for j=1:n-1
if A(j)>A(j+1)
t=A(j);
A(j)=A(j+1);
A(j+1)=t;
end
end
end
A
结果:
(2) 求一输入矩阵的最大值及其所处的位置。
function find_max(A)
%读取矩阵的行数和列数
[r,c]=size(A);
max_temp=A(1,1);
max_r=1;
max_c=1;
for i=1:r
for j=1:c
if max_temp<A(i,j)
max_temp=A(i,j);
max_r=i;
max_c=j;
end
end
end
fprintf('最大元素为%f\n',max_temp);
fprintf('最大元素所在的行数为:%f\n最大元素所在列数为:%f\n',max_r,max_c)
结果:
(3) 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下.求它在第10次落地时,共经过多少米?第10次反弹有多高?
function slove_ball
h=100;
s=0;
for i=1:10
s=s+2*h;
h=h/2;
end
s=s-100;
fprintf('十次落地时共经过 %f 米\n',s);
fprintf('第十次反弹 %f 米\n',h);
结果:
(4) 画出函数 f(x,y)=x^2+sin(xy)+2y 的图形,并写一程序,输入自变量的值, 输出函数值。
%画图
x=-10:0.1:10;
y=-10:0.1:10;
[X,Y]=meshgrid(x,y);
Z=X.^2+sin(X*Y)+2*Y;
mesh(X,Y,Z);
%计算
function slove_f(x,y)
sum=x*x+sin(x*y)+2*y;
sum
结果:
(5) 求小于任意自然数 n 的 Fibonacci 数列各项?
%定义斐波那契数列函数
function y=fib(n)
if n==1|n==2
y=1;
else
y=fib(n-1)+fib(n-2);
end
%定义求解函数
function slove_fib(x)
i=1;
while fib(i)<=x
A(i)=fib(i);
i=i+1;
end
A
结果如下:
(6)判断一输入数是否为素数?并输去 [100, 1000] 以内的全部素数?
%判断素数
function f=if_sushu(x)
f=1;
if x==1
f=0;
elseif x==2
f=1;
else
for i=2:x-1
if mod(x,i)==0
f=0;
end
end
end
%输出函数
function slove
j=1;
for i=100:1000
if if_sushu(i)==1
A(j)=i;
j=j+1;
end
end
A
结果如下: