这是我在上学校MATLAB选修课时,老师布置的实验。当时老师的想法是将99乘法表的结果存入矩阵输出就行,但是我觉得这是结果,并不是小学所学的99乘法表,由于我对MATLAB也不熟悉,但是以为要用元胞,后来觉得不行,最后用的二维字符数组写的。
代码
老师的想法
实现代码
下面展示一些 内联代码片
。
clc,clear
y = zeros(9);
for i = 1:9
for j = 1:9
if i >= j
y(i,j) = i*j;
else
break;
end
end
end
y
结果
y =
1 0 0 0 0 0 0 0 0
2 4 0 0 0 0 0 0 0
3 6 9 0 0 0 0 0 0
4 8 12 16 0 0 0 0 0
5 10 15 20 25 0 0 0 0
6 12 18 24 30 36 0 0 0
7 14 21 28 35 42 49 0 0
8 16 24 32 40 48 56 64 0
9 18 27 36 45 54 63 72 81
我的想法
实现代码
下面展示一些 内联代码片
。
clc,clear
y = [];%创建二维字符空数组,用于存放99乘法表
n = 108;%字符数组的行大小定义
a = ' * ';%格式控制符号预设
b = ' = ';%格式控制符号预设
for i = 1:9%行数据
t = 0;%行数据是否添加完成标志
m = '';%创建行空数组
for j = 1:9%列数据
if i >= j%减少循环次数
flag = i * j;%计算乘法值
t = 1;
m = [m, num2str(j)];%将j转换为字符串并存入m
m = [m, a];
m = [m, num2str(i)];%将i转换为字符串并存入m
m = [m, b];
if flag / 10 >= 1%判断乘法值是否为两位数,控制字符串格式
m = [m, num2str(flag)];
else
m = [m, ' '];
m = [m, num2str(flag)];
end
m = [m, ' '];%控制两个乘法数据的间距格式
else
if length(m) < n%填充行数据长度到n
for k = 1:(n - length(m))
m = [m, ' '];
end
end
break;%跳出循环,节约不必要的时间浪费
end
end
if t == 1%判断每行数据添加完后,将行数据添加入二维字符数组的第i行
y = [y; m];
end
end
y%输出99乘法表
结果
启示
虽然自己代码比老师想法复杂了些,但是我觉得这样的结果更加准确,希望更多大佬指点。