matlab编程训练.docx
- 文档编号:25785701
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:27
- 大小:44.72KB
matlab编程训练.docx
《matlab编程训练.docx》由会员分享,可在线阅读,更多相关《matlab编程训练.docx(27页珍藏版)》请在冰豆网上搜索。
matlab编程训练
matlab训练
建立一个脚本文件,用于两个变量值的互相交换。
x=input('输入变量x=');
y=input('输入变量y=');
z=x;
x=y;
y=z;
x
y
比较从键盘输入的两个数的大小,输出其中较大的数。
(扩展,输出两个同型矩阵中对应位置较大的数)
function[y]=ex2(x)
a=input('输入数字x=');
b=input('输入数字y=');
ifa>b
fprintf('较大数为%d\n',a)
elseifa
fprintf('较大数为%d\n',b)
else
end
end
编写一个函数求一元二次方程的根,并编写测试脚本文件测试结果。
functionex3
a=input('请输入二次项系数:
');
b=input('请输入一次项系数:
');
c=input('请输入常数项:
');
discriminant=b^2-4*a*c;
ifdiscriminant>0
x1=(-b+sqrt(discriminant))/(2*a);
x2=(-b-sqrt(discriminant))/(2*a);
fprintf('x1=%f\n',x1);
fprintf('x2=%f\n',x2);
elseifdiscriminant==0
x1=(-b)/(2*a);
fprintf('x1=x2=%f\n',x1);
else
real_part=(-b)/(2*a);
imag_part=sqrt(abs(discriminant))/(2*a);
disp('此方程无实根:
');
fprintf('x1=%f+i%f\n',real_part,imag_part);
fprintf('x1+%f-i%f\n',real_part,imag_part);
end
编写一个函数求圆的面积与周长,并编写测试脚本文件测试结果。
functionex4
r=input('请输入此圆的半径:
');
S=pi*r;
C=2*pi*r;
fprintf('此圆的面积是:
');
disp(S)
fprintf('此圆的周长是:
');
disp(C)
编写一个函数用于求数n的阶乘(分别用循环与递归),再编写测试脚本文件求1!
+2!
+。
。
。
+10!
。
functionex5_2
n=input('请输入一个数:
');
N=sum(factorial(1:
n));
fprintf('该数列的和为:
')
disp(N)编写脚本测试分段函数:
clc
clear
x=input('输入x:
');
ifx<1
p=1;
elseifx>=1&x<2
p=2;
else
p=3;
end
switchp
case1
y=x^2;
case2
y=x^2-1;
otherwise
y=x^2-2*x-1;
end
fprintf('y=%f\n',y);
有函数
,编写脚本文件测试该函数,x的值从键盘输入。
x=input('x=');
ifx<2
y=2*exp
(1)/x;
elseifx>=2
y=log(x*x-1);
end
fprintf('y=%f\n',y);
编写脚本文件,功能:
从键盘输入一个字符,如果是大写字母,输出其后继字母;如果是小写字母,输出其前导字母,(‘Z’的后继为’A’,‘a’的前导为’z’);如果是数字字符,输出其ASCII码;其他字符原样输出。
clc
clear
ch=input('输入一个字符:
','s');
flag=1;
ifch>='A'&ch<='Z'
disp('为大写字母,后继字符为:
');
ch=ch+1;
ifch=='Z'+1
ch='A';
end
elseifch>='a'&ch<='z'
disp('为小写字母,前导字符为:
');
ch=ch-1;
ifch=='a'-1
ch='z';
end
elseifch>='0'&ch<='9'
flag=0;
else
disp('为其他字符原样输出:
');
end
ifflag==1
fprintf('%s\n',ch);
else
fprintf('为数字,其ASCII码为:
%d\n',ch);
end
某商场对顾客购买的商品总价打折,规则是500以下不打折,500~1000的95折,1000~3000的9折,3000~5000的85折,5000以上8折。
从键盘输入总价,分别用if语句和switch语句计算折扣,输出应付价。
x=input('商品总价为:
');
ifx<=500
y=x;
elseifx>500&x<=1000
y=0.95*x;
elseifx>1000&x<=3000
y=0.9*x;
elseifx>3000&x<=5000
y=0.85*x;
elsey=0.8*x;
end
fprintf('应付价为:
%d\n',y);
某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):
price<200没有折扣
200≤price<5003%折扣
500≤price<10005%折扣
1000≤price<25008%折扣
2500≤price<500010%折扣
5000≤price14%折扣
输入所售商品的价格,求其实际销售价格。
x=input('商品总价为:
');
ifx<200
y=x;
elseifx>=200&x<500
y=0.97*x;
elseifx>=500&x<1000
y=0.95*x;
elseifx>=1000&x<2500
y=0.92*x;
elseifx>=2500&x<5000
y=0.9*x;
elsey=0.86*x;
end
fprintf('应付价为:
%d\n',y);
给出学生的百分制成绩,要求转化成成绩等级输出,等级分为‘优秀’,‘良好’,‘中等’,‘及格’.90分以上的为‘优秀’,80-89的为‘良好’,70-79的为‘中等’,60-69的为‘及格’,其他为’不及格’。
x=input('请输入学生的百分制成绩:
');
ifx>=90
y='优秀';
elseifx>=80&x<90
y='良好';
elseifx>=70&x<80
y='中等';
elseifx>=60&x<70
y='及格';
elsey='不及格';
end
fprintf('该学生成绩等级为:
');
disp(y)
编写一个函数,统计出一有序整形向量(按升序或降序排列)中不同等值整数组及对应的数据个数。
function[s,k]=ex12(x)
n=length(x);
s1=x
(1);
s2=1;
k=1;
fori=2:
n
ifx(i)==s1(k)
s2(k)=s2(k)+1;
else
k=k+1;
s1=[s1;x(i)];
s2=[s2;1];
end
end
s=[s1,s2];
编写一个函数,统计出一整形向量(可以是无序的)中不同等值整数组及对应的数据个数。
functionex13(x)
y=sort(x,'ascend');
num=length(y);
yout=[];
count=1;
disp('数据组个数');
forii=1:
num-1
ify(ii)==y(ii+1);
count=count+1;
continue;
end
yout=[yout;y(ii)count];
count=1;
end
ify(num-1)~=y(num)
yout=[yout;y(num)1];
else
yout=[yout;y(num)count];
end
disp(yout);
求1+2+3+……+100的和。
(分别用for和while语句实现)。
function[y]=ex14
ii=1;
s=0;
whileii<=100
s=s+ii;
ii=ii+1;
end
s
end
随机生成一个20行10列的矩阵,分别求每行的和与每列的和。
(不用sum函数。
)
A=-100+round(200*rand(10,20));
disp(A')
s=0;
fork=A
s=s+k;
end
disp(s')
s=0;
fork=A'
s=s+k;
end
disp(s')
随机生成一个20行10列的矩阵,分别求每行的和与每列的平均值。
A=-100+round(200*rand(10,20));
disp(A')
s=0;
fork=A
s=s+k;
end
s=s/20;
disp(s')
s=0;
fork=A'
s=s+k;
end
s=s/10;
disp(s')
随机生成一个20行10列的矩阵,矩阵元素除以对应列的和形成新的矩阵。
如果对应列的和为零,则新矩阵该列所有元素全为零。
A=-100+round(200*rand(10,20));
s=sum(A);
i=1;
j=1;
whilej<=10
a=s(i,j);
ifa~=0;
A(:
j)=0;
else
A(:
j)=A(i,:
)/s(i,j);
end
j=j+1;
end
disp(A')
计算下面式子的和:
ii=1;
s1=0;
whileii<=10
s1=s1+1^ii;
ii=ii+1;
end
jj=1;
s2=0;
whilejj<=10
s2=s2+2^jj;
jj=jj+1;
end
kk=1;
s3=0;
whilekk<=10
s3=s3+3^kk;
kk=kk+1;
end
s=s1+s2+s3
一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数,输出全部水仙花数。
function[y]=ex19
ii=100;
y=[];
whileii<=999
a=num2str(ii)-'0';
ifa
(1)^3+a
(2)^3+a(3)^3==ii
y=[yii];
ii=ii+1;
else
ii=ii+1;
end
end
y;
end
求[100,200]之间第一个能被21整除的整数。
ii=100;
whileii<=200
ifmod(ii,21)==0
disp(ii)
break
else
ii=ii+1;
end
end
猜数游戏。
首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数。
根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“Youwon”,同时退出游戏,用户最多可以猜7次。
ii=1;
a=fix(rand
(1)*100);
whileii<=8
ifii<=7
x=input('输入一个1到100之间的整数=');
ifx>a
disp('High')
ii=ii+1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 编程 训练