限行规则是:号牌最后一位阿拉伯数字为 1 和 6 的机动车周一限行、2 和 7 的周二限
行、3 和 8 的周三限行、4 和 9 的周四限行、5 和 0 的周五限行。那么请用关系运算、逻辑
运算和字母 ASCII 码设计一个函数,函数内包括提取号牌最后一个数字,限行判断两个功
能,输入参数为任意一个号牌,输出是否限行
【编程思路】根据机动车辆限行规则,
第一步,创建主控程序函数restriction_main()。用于输入车牌号码,并调用限行规则函数 restriction()。
第二步,根据规则自定义限行规则函数 restriction()
第三步,判断输入机动车辆号牌的数是否是7个数字,如不符返回重新运行。可以考虑用if判断语句来实现。
第四步,判断当前日期和星期,通过if判断语句,确定当前日期具体是星期几并显示,如“今天是2024-02-07星期三”
第五步,用char字符函数,提取车牌号码的末位数,作为机动车辆限行依据
第六步,再用if判断语句进一步来判断,并显示,如“浙B71B63,今天是限行的。”
【执行代码】
一、主控程序
function restriction_main()
str=input('请输入车牌号码(如 ‘浙B71B63’):',"s");
restriction(str);
end
二、限行规则函数 restriction()
function restriction(str)
A=double(str); %
n=char(A(:,7));
if n<7 & n>7
disp('输入有误')
return
end
D = datetime("today"); % D = datetime('2024-02-07');
[DayNumber,DayName] = weekday(D);
if DayNumber == 1
str1='星期日';
elseif DayNumber == 2
str1='星期一';
elseif DayNumber == 3
str1='星期二';
elseif DayNumber == 4
str1='星期三';
elseif DayNumber == 5
str1='星期四';
elseif DayNumber == 6
str1='星期五';
elseif DayNumber == 7
str1='星期六';
end
fprintf('今天是%s%s\n',string(D),str1)
if and(or(n=='1',n=='6'),DayNumber == 2)
disp([str,',今天是限行的。'])
elseif and(or(n=='2',n=='7'),DayNumber == 3)
disp([str,',今天是限行的。'])
elseif and(or(n=='3',n=='8'),DayNumber == 4)
disp([str,',今天是限行的。'])
elseif and(or(n=='4',n=='9'),DayNumber == 5)
disp([str,',今天是限行的。'])
elseif and(or(n=='5',n=='0'),DayNumber == 6)
disp([str,'今天是限行的'])
else
disp([str,',今天是不限行的。'])
end
end
【运行效果】
【本题相关的语句和函数命令】
1、if判断语句(或分支语句)。
语法:
If 条件式1
指令组1
elseif 条件式2
指令组2
……
else
指令组k
ens
如果条件式1满足,则执行指令组1,且结束该语句;否则检查条件式2,若满足执行指令组2,且结束该语句;……,若所有条件式都不满足,则执行指令组k,并结束该语句。
2、关系与逻辑运算符。
小于运算符:<;小于等于运算符:<=;大于运算符:>;大于等于运算符:>=;等于运算符:==;不等于运算符:~=;与运算符:& 或and;或运算符:| 或 or;非运算符:~ 或 not
例如:A=-2:4,B=-1:-2
>> A>B ans=0 0 0 0 1 1 1
>> A==B ans=0 0 0 1 0 0 0
>> A&B ans=1 1 0 1 0 1 1
3、input输入函数。
语法:txt = input(prompt,"s")
返回输入的文本,而不会将输入作为表达式来计算。
4、double 数值转换(ASCII)函数。
语法:Y = double(X)
将 X 中的值转换为双精度。
5、char字符转换(ASCII)函数。
语法:C = char(A)
将输入数组 A 转换为字符数组。例如,如果 A 是字符串 "foo",则 c 是字符数组 'foo'。
6、return中断语句。中断执行该程序,回到主调函数或指令窗口
7、datetime日期时间函数
语法:t = datetime(relativeDay)
使用 relativeDay 指定的日期。relativeDay 输入可以是 'today'、'tomorrow'、'yesterday' 或 'now'。
8、weekday星期函数。
语法:[DayNumber,DayName] = weekday(D)
还返回 DayName 中星期几的缩写英语名称。
9、disp显示函数
语法:disp(X) 显示变量 X 的值,而不打印变量名称。
10、fprintf打印函数。也可以用作显示函数
语法:fprintf(fileID,formatSpec,A1,...,An)
按列顺序将 formatSpec 应用于数组 A1,...An 的所有元素,并将数据写入到一个文本文件。
11、function 函数文件。
语法:
function 输出变量 = 函数名称(输入变量)
语句内容;
end