循环嵌套的应用01-打印图形¶
下面的图形都以 n = 5 为例。先看第 i 行:有几个空格,几个数字或字母,分别按什么顺序输出。
数字三角形先处理 1 <= n <= 9,字符三角形先处理 1 <= n <= 26。
数字三角形¶
第 i 行,输出 1 到 i。
靠右的数字三角形¶
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) {
cout << ' ';
}
for (int j = 1; j <= i; j++) {
cout << j;
}
cout << '\n';
}
第 i 行,先输出 n - i 个空格,再输出 i 个数字。
靠右的字符三角形¶
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) {
cout << ' ';
}
for (int j = 0; j < i; j++) {
cout << char('A' + j);
}
cout << '\n';
}
字符对称三角形¶
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) {
cout << ' ';
}
for (int j = 1; j <= 2 * i - 1; j++) {
cout << char(abs(j - i) + 'A');
}
cout << '\n';
}
第 i 行有 2 * i - 1 个字母。
abs(j - i) 表示第 j 列到中间的距离,得到 i-1、i-2、……、0、……、i-2、i-1。
使用 abs,需要头文件 <cstdlib>。