matlab训练建立一个脚本文件,用于两个变量值的互相交换。
x=input('输入变量x=');y=input('输入变量y=');z=x;x=y;y=z;xy比较从键盘输入的两个数的大小,输出其中较大的数。
(扩展,输出两个同型矩阵中对应位置较大的数)function [ y ] = ex2( x )a=input('输入数字x=');b=input('输入数字y=');if a>bfprintf('较大数为%d\n',a)elseif a<bfprintf('较大数为%d\n',b)elseendend编写一个函数求一元二次方程的根,并编写测试脚本文件测试结果。
function ex3a = input('请输入二次项系数: ');b = input('请输入一次项系数: ');c = input('请输入常数项: ');discriminant = b^2 - 4 * a * c;if discriminant > 0x1 = (-b + sqrt(discriminant)) / (2*a);x2 = (-b - sqrt(discriminant)) / (2*a);fprintf('x1 = %f\n', x1);fprintf('x2 = %f\n', x2);elseif discriminant == 0x1 = ( -b ) / (2*a);fprintf('x1 = x2 = %f\n', x1);elsereal_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编写一个函数求圆的面积与周长,并编写测试脚本文件测试结果。
function ex4r=input('请输入此圆的半径: ');S=pi*r;C=2*pi*r;fprintf('此圆的面积是:');disp(S)fprintf('此圆的周长是:');disp(C)编写一个函数用于求数n 的阶乘(分别用循环与递归),再编写测试脚本文件求1!+2!+。
+10!。
function ex5_2n=input('请输入一个数:');N=sum(factorial(1:n));fprintf('该数列的和为:')disp(N)编写脚本测试分段函数:222x x<1x -1 1<=x<2x -2x-1 x>=2⎧⎪⎨⎪⎩clcclearx=input('输入x:');if x<1p=1;elseif x>=1&x<2p=2;elsep=3;endswitch pcase 1y=x^2;case 2y=x^2-1;otherwisey=x^2-2*x-1; endfprintf('y=%f\n',y);有函数122(2)()log(1)(2)ex xf xx x-⎧<=⎨->=⎩,编写脚本文件测试该函数,x的值从键盘输入。
x=input('x=');if x<2y=2*exp(1)/x;elseif x>=2y=log(x*x-1);endfprintf('y=%f\n',y);编写脚本文件,功能:从键盘输入一个字符,如果是大写字母,输出其后继字母;如果是小写字母,输出其前导字母,(‘Z’的后继为’A’,‘a’的前导为’z’);如果是数字字符,输出其ASCII码;其他字符原样输出。
clcclearch=input('输入一个字符:','s');flag=1;if ch>='A'&ch<='Z'disp('为大写字母,后继字符为:');ch=ch+1;if ch=='Z'+1ch='A';endelseif ch>='a'&ch<='z'disp('为小写字母,前导字符为:');ch=ch-1;if ch=='a'-1ch='z';endelseif ch>='0'&ch<='9'flag=0;elsedisp('为其他字符原样输出:');endif flag==1fprintf('%s\n',ch);elsefprintf('为数字,其ASCII码为:%d\n',ch);end某商场对顾客购买的商品总价打折,规则是500以下不打折,500~1000的95折,1000~3000的9折,3000~5000的85折,5000以上8折。
从键盘输入总价,分别用if语句和switch语句计算折扣,输出应付价。
x=input('商品总价为:');if x<=500y=x;elseif x>500&x<=1000y=0.95*x;elseif x>1000&x<=3000y=0.9*x;elseif x>3000&x<=5000y=0.85*x;else y=0.8*x;endfprintf('应付价为:%d\n',y);某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):price<200 没有折扣200≤price<500 3%折扣500≤price<1000 5%折扣1000≤price<2500 8%折扣2500≤price<5000 10%折扣5000≤price 14%折扣输入所售商品的价格,求其实际销售价格。
x=input('商品总价为:');if x<200y=x;elseif x>=200&x<500y=0.97*x;elseif x>=500&x<1000y=0.95*x;elseif x>=1000&x<2500y=0.92*x;elseif x>=2500&x<5000y=0.9*x;else y=0.86*x;endfprintf('应付价为:%d\n',y);给出学生的百分制成绩,要求转化成成绩等级输出,等级分为‘优秀’,‘良好’,‘中等’,‘及格’.90分以上的为‘优秀’,80-89的为‘良好’,70-79的为‘中等’,60-69的为‘及格’,其他为’不及格’。
x=input('请输入学生的百分制成绩:');if x>=90y='优秀';elseif x>=80&x<90y='良好';elseif x>=70&x<80y='中等';elseif x>=60&x<70y='及格';else y='不及格';endfprintf('该学生成绩等级为:');disp(y)编写一个函数,统计出一有序整形向量(按升序或降序排列)中不同等值整数组及对应的数据个数。
function [s,k]=ex12(x)n=length(x);s1=x(1);s2=1;k=1;for i=2:nif x(i)==s1(k)s2(k)=s2(k)+1;elsek=k+1;s1=[s1;x(i)];s2=[s2;1];endends=[s1,s2];编写一个函数,统计出一整形向量(可以是无序的)中不同等值整数组及对应的数据个数。
function ex13( x )y=sort(x, 'ascend');num=length(y);yout=[];count=1;disp(' 数据组个数');for ii=1:num-1if y(ii)==y(ii+1);count=count+1;continue;endyout=[yout;y(ii) count];count=1;endif y(num-1)~=y(num)yout=[yout;y(num) 1];yout=[yout;y(num) count];enddisp(yout);求1+2+3+……+100的和。
(分别用for和while语句实现)。
function [ y ] = ex14ii=1;s=0;while ii<=100s=s+ii;ii=ii+1;endsend随机生成一个20行10列的矩阵,分别求每行的和与每列的和。
(不用sum函数。
)A=-100+round(200*rand(10,20));disp(A')s=0;for k=As=s+k;enddisp(s')s=0;for k=A's=s+k;disp(s')随机生成一个20行10列的矩阵,分别求每行的和与每列的平均值。
A=-100+round(200*rand(10,20));disp(A')s=0;for k=As=s+k;ends=s/20;disp(s')s=0;for k=A's=s+k;ends=s/10;disp(s')随机生成一个20行10列的矩阵,矩阵元素除以对应列的和形成新的矩阵。
如果对应列的和为零,则新矩阵该列所有元素全为零。
A=-100+round(200*rand(10,20));s=sum(A);i=1;j=1;while j<=10a=s(i, j);A(:,j)=0;elseA(:,j)=A(i,:)/s(i, j); endj=j+1;enddisp(A')计算下面式子的和:ii=1;s1=0;while ii<=10s1=s1+1^ii;ii=ii+1;endjj=1;s2=0;while jj<=10s2=s2+2^jj;jj=jj+1;endkk=1;s3=0;while kk<=10s3=s3+3^kk;ends=s1+s2+s3一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数,输出全部水仙花数。