【Matlab作业】MATLAB程序设计

1.程序流程控制结构

(1) for 循环结构

【思考】

(1)下列程序的运行结果:j1=?j2=?% sk1.m

a=1:4; 
b=a'; 
j1=0; 
for i=a 
	j1=j1+1; 
end; 
j2=0; 
for i=b 
	j2=j2+1; 
end;

答:运行结果:j1 = 4, j2 = 1。

(2)分析下列程序的功能和运行结果 % sk2.m

data(:,:,1)=[3 9 45 6; 7 16 -1 5]; 
data(:,:,2)=[1 2 3 4; 8 7 6 5]; 
data 
k=0; 
for n=data 
	n
	k=k+1;
	x=n(1)-n(2) 
end 
k 

答:
程序功能:遍历每一列,计算每列第一行和第二行元素差值;
运行结果:x = -1, k = 8。

(2) while 循环结构

【思考】

(1)while 循环与for 循环的区别是什么?
答:for循环一般用于循环次数已知的情况下;
while 循环一般用于满足条件已知的情况下。

(2) 从键盘输入若干个数,当输入0时结束输入,求这些数的总和及其平均值。% sk3.m
答:

data = [];
num = input('pls input a number:   ');
while(isempty(num) || num ~= 0)
    data = [data num];
    num = input('pls input a number:   ');
end
sum(data)
mean(data)

在这里插入图片描述

【练习】

(1) 请把 exp2.m 函数文件用 while 循环改写。
答:

function s=exp2(x) 
s = 0; 
n = 1;
while n<=x
    s=s+n; 
    n=n+1;
end 

在这里插入图片描述

(2) 用 π /4≈1-1/3+1/5-1/7+…公式求 π 的近似值,直到最后一项的绝对值小于 10-6 为止,试编写其 M 脚本文件。
答:

sum = 1; 
n = 1;
k = 1;
while k*(-1)^(n+1)>10^(-6)
    k = -(2*n-1)/(2*n+1)*k
    sum = sum + k;
    n = n+1;
end  
pai = sum * 4

循环时间稍微有点久,可以按 ctrl + c 停止

在这里插入图片描述

(3) if-else-end 分支结构

【思考】

输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。% sk4.m

ch = input('pls input:  ')
num= abs(ch)
if ch > 'A' && ch < 'Z'
    num = num + 1
elseif ch > 'a' && ch < 'z'
    num = num - 1
end
char(num)  

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4) switch-case 结构

【思考与练习】

PM2.5 是指大气中直径小于或等于2.5微米的可吸入颗粒物,是衡量空气质量的重要指标。假定空气质量等级
以 PM2.5 数值划分为6级。
PM2.5数值在[0,35)空气质量为优;[35,75)为良,[75,115)为轻度污染;[115,150)为中度污
染;[150,250)为重度污染,大于等于250为严重污染。
编写程序,输入PM2.5数值,输出空气质量等级。
(1)用6个单分支结构实现

答:

pm = input('pls input:  ');
% 方法1:6个单分支结构
if pm>=0 && pm<35
    disp('空气质量为优');
end
if pm>=35 && pm<75
    disp('空气质量为良');
end
if pm>=75 && pm<115
    disp('空气质量为轻度污染');
end
if pm>=115 && pm<150
    disp('空气质量为中度污染');
end
if pm>=150 && pm<250
    disp('空气质量为重度污染');
end
if pm>=250 
    disp('空气质量为严重污染');
end

在这里插入图片描述

(2)用多分支if语句实现

pm = input('pls input:  ');
% 方法2:多分支if结构
if pm>=0 && pm<35
    disp('空气质量为优');
elseif pm>=35 && pm<75
    disp('空气质量为良');
elseif pm>=75 && pm<115
    disp('空气质量为轻度污染');
elseif pm>=115 && pm<150
    disp('空气质量为中度污染');
elseif pm>=150 && pm<250
    disp('空气质量为重度污染');
elseif pm>=250 
    disp('空气质量为严重污染');
end

在这里插入图片描述

(3)用switch语句执行

pm = input('pls input:  ');
% 方法3:switch结构
switch pm
    case num2cell(0: 35)
        disp('空气质量为优');
    case num2cell(35: 75)
        disp('空气质量为良');
    case num2cell(75: 115)
        disp('空气质量为轻度污染');
    case num2cell(115: 150)
        disp('空气质量为中度污染');
    case num2cell(150: 250)
        disp('空气质量为重度污染');
    otherwise
        disp('空气质量为严重污染');
end

在这里插入图片描述

2.子函数和参数传递

【练习】

(1) 编写求矩形面积函数 rect,当没有输入参数时,显示提示信息;当只输入一个参数时,则以该参数作为正方形的边长计算其面积;当有两个参数时,则以这两个参数为长和宽计算其面积。
答:

function area = rect(x, y)
if nargin>2 
    error('too many input') 
end 
if nargin==1 
    area = x*x;
else
    area = x*y;
end 

在这里插入图片描述

(2) 编写一个字符串加密函数 nch=my_code( ch , x),其中 ch 是字符串参数,x 为整数;加密方法是:把 ch 的每一个字符的 ASCII 码值加上 x,得到的即为加密后的新的字符串 nch。由于可显示 ASCII 码值是有范围的(32,126),因此当得到的 ASCII码值大于 126 时,需要减去 93 。同理,再编写一个解码函数 nch=my_dcode( ch , x)。
提示:char(32:126) 可获得 ASCII 码值为 32~126 的字符。

答:

function nch=my_code(ch , x)
num = abs(ch);
num = num + x;
if num > 126
    num = num - 93;
end
char(num)

在这里插入图片描述

function nch=my_dcode(ch , x) 
num = abs(ch);
num = num - x;
if num < 32
    num = num + 93;
end
char(num)

在这里插入图片描述

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不雨_亦潇潇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值