MATLAB 练习题
Posted ʚVVcatɞ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB 练习题相关的知识,希望对你有一定的参考价值。
题目描述
输入一个整数n<10
输入n+2行,如图的图形:核心n行,周边被*号保卫
输入
一个整数
输出
字符图形
样例输入 Copy
4
样例输出 Copy
*
*A*
*BBB*
*CCCCC*
*DDDDDDD*
***********
分析,该字符图形可以划分为5个部分,首先是第一部分,输出图形左边的空格:
n = input('');
for i = 1:n + 1
for j = 1:n + 2 - i
fprintf(' '); % 输出 左边的空格
end
fprintf('*'); % 输出左边的 *号
for j = 1:2 * i - 3
fprintf('%c', 'A' + i - 2); % 输出每行的字母
end
if i > 1 % 当输入的 行数 大于 n 时, 输出 右边的 * 号
fprintf('*');
end
fprintf('\\n'); % 每输出一行换行
end
for i = 2 * (n + 1) + 1: -1: 1 % 输出 最后一行的 ***********
fprintf('*');
end
第一次循环
当 输入为4 时,n = 4,执行第一次循环 i = 1,总共循环5次
for i = 1:n + 1
因为 n = 4,i = 1所以 n + 2 - i 总共循环5次,第一行打印5个空格
for j = 1:n + 2 - i
fprintf(' '); % 输出 图形左边的空格 每一次循环会输出1个空格
end
当以上空格打印完成后,会开始执行以下代码
fprintf('*'); % 输出左边的 *号
会打印出以下结果
*
在*号前面会有4个空格,如果想清晰的看到前面输出的内容,可以把上面代码空格符替换成 ‘-’
for j = 1:n + 2 - i
fprintf('-'); % 将 空格换成 -
end
打印出结果:
-----*
可以清晰的看到在 * 前面会有四个 ‘-’ 符号
打印完 * 后,会执行以下代码
for j = 1:2 * i - 3
fprintf('%c', 'A' + i - 2);
end
首先代码会先计算 2 * i - 3 这一部分,由上面的程序执行可得到 i = 1的,所以会得到 结果 2 * 1 - 3 = -1显然在这个for循环中是不能够执行的,所以跳过该for循环,执行下面的代码
if i > 1
fprintf('*');
end
该代码段会先判断 i 是否大于 1,由上面的程序执行可得到 i = 1的,所以会得到结果返回 false,不执行if下面的代码
第一行的内容输出结束,执行下面的换行代码
fprintf('\\n');
第二次循环
执行第二次循环 i = 2, 剩余循环次数 3次
for i = 1:n + 1
因为 n = 4,i = 2所以 n + 2 - i 总共循环4次,第二行打印4个空格
for j = 1:n + 2 - i
fprintf(' '); % 输出 图形左边的空格 每一次循环会输出1个空格
end
当以上空格打印完成后,会开始执行以下代码
fprintf('*'); % 输出左边的 *号
会打印出以下结果
*
*
在*号前面会有4个空格,如果想清晰的看到前面输出的内容,可以把上面代码空格符替换成 ‘-’
for j = 1:n + 2 - i
fprintf('-'); % 将 空格换成 -
end
打印出结果:
-----*
----*
可以清晰的看到在 * 前面会有四个 ‘-’ 符号
打印完 * 后,会执行以下代码
for j = 1:2 * i - 3
fprintf('%c', 'A' + i - 2);
end
首先代码会先计算 2 * i - 3 这一部分,由上面的程序执行可得到 i = 2的,所以会得到 结果 2 * 2 - 3 = 1,会循环一次,执行下面的代码
if i > 1
fprintf('*');
end
打印出结果:
*
*A
该代码段会先判断 i 是否大于 1,由上面的程序执行可得到 i = 2的,所以会得到结果返回 true,执行if下面的代码
打印出结果:
*
*A*
第二行的内容输出结束,执行下面的换行代码
fprintf('\\n');
第三次循环
执行第二次循环 i = 3, 剩余循环次数 2次
for i = 1:n + 1
因为 n = 4,i = 2所以 n + 2 - i 总共循环3次,第三行打印3个空格
for j = 1:n + 2 - i
fprintf(' '); % 输出 图形左边的空格 每一次循环会输出1个空格
end
当以上空格打印完成后,会开始执行以下代码
fprintf('*'); % 输出左边的 *号
会打印出以下结果
*
*
*
在*号前面会有4个空格,如果想清晰的看到前面输出的内容,可以把上面代码空格符替换成 ‘-’
for j = 1:n + 2 - i
fprintf('-'); % 将 空格换成 -
end
打印出结果:
-----*
----*
---*
可以清晰的看到在 * 前面会有四个 ‘-’ 符号
打印完 * 后,会执行以下代码
for j = 1:2 * i - 3
fprintf('%c', 'A' + i - 2);
end
首先代码会先计算 2 * i - 3 这一部分,由上面的程序执行可得到 i = 2的,所以会得到 结果 2 * 2 - 3 = 1,会循环一次,执行下面的代码
if i > 1
fprintf('*');
end
打印出结果:
*
*A*
*BBB
该代码段会先判断 i 是否大于 1,由上面的程序执行可得到 i = 2的,所以会得到结果返回 true,执行if下面的代码
打印出结果:
*
*A*
*BBB*
第三行的内容输出结束,执行下面的换行代码
fprintf('\\n');
以上是关于MATLAB 练习题的主要内容,如果未能解决你的问题,请参考以下文章