小学生版 | C++ [输出图形] 自测题
姓名: ____________
第一部分:基础知识填空(每题 5 分,共 30 分)
- 在 C++ 里用循环嵌套输出图形矩阵时,外层循环一般控制图形的
____
,内层循环控制图形的____
。 - 若要在输出图形矩阵时实现换行,需要使用
____
语句。 - 蛇形数字矩阵在填充数字时,通常会依据当前
____
的奇偶性来改变填充方向。 - 数字图形中每个位置的数字和它所在的
____
与____
有着紧密的数学联系。 - 输出直角在左下角的三角形,内层循环的执行次数会随外层循环变量的值
____
。 - 当输出的图形需要有空格填充时,可在循环里使用
cout << " ";
语句,通过控制循环的____
来确定空格的数量。
第二部分:知识应用填空(每题 7 分,共 70 分)
一、字符图形
- 正方形
####
####
####
####
以下代码用于输出一个边长为 4 的由 #
组成的正方形,补全代码。
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
cout << '#';
}
cout << `____`;
}
- 长方形
+++++
+++++
+++++
以下代码用于输出一个 3 行 5 列的由 +
组成的长方形,补全代码。
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
cout << '+';
}
cout << `____`;
}
- 菱形
*
***
*****
***
*
以下代码用于输出一个由 *
组成的菱形,补全代码。
int size = 3;
// 上半部分
for (int i = 0; i < size; i++) {
for (int j = 0; j < size - i - 1; j++) {
cout << ' ';
}
for (int k = 0; k < `____`; k++) {
cout << '*';
}
cout << `____`;
}
// 下半部分
for (int i = size - 2; i >= 0; i--) {
for (int j = 0; j < size - i - 1; j++) {
cout << ' ';
}
for (int k = 0; k < `____`; k++) {
cout << '*';
}
cout << `____`;
}
- 三角形(直角在左下角)
*
**
***
****
以下代码用于输出一个由 *
组成的直角在左下角的三角形,补全代码。
for (int i = 0; i < 4; i++) {
for (int j = 0; j <= `____`; j++) {
cout << '*';
}
cout << `____`;
}
二、数字图形
- 正方形
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
以下代码用于输出一个 4x4 的数字正方形,数字从 1 开始递增,补全代码。
int num = 1;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
cout << num++;
if (j < 3) {
cout << ' ';
}
}
cout << `____`;
}
- 蛇形矩阵(3x3)
1 2 3
6 5 4
7 8 9
以下代码用于输出一个 3x3 的蛇形数字矩阵,补全代码。
int num = 1;
for (int i = 0; i < 3; i++) {
if (i % 2 == 0) {
for (int j = 0; j < 3; j++) {
cout << num++;
if (j < 2) {
cout << ' ';
}
}
} else {
for (int j = 2; j >= 0; j--) {
cout << num++;
if (j > 0) {
cout << ' ';
}
}
}
cout << `____`;
}
- 三角形(数字,直角在左下角)
1
2 3
4 5 6
7 8 9 10
以下代码用于输出一个由数字组成的直角在左下角的三角形,补全代码。
int num = 1;
for (int i = 0; i < 4; i++) {
for (int j = 0; j <= `____`; j++) {
cout << num++;
if (j < i) {
cout << ' ';
}
}
cout << `____`;
}
三、字形矩阵
- A 形
*
* *
*****
* *
* *
以下代码用于输出一个由 *
组成的 A 形,补全代码。
int height = 5;
for (int i = 0; i < height; i++) {
for (int j = 0; j < height - i - 1; j++) {
cout << ' ';
}
if (i == 0 || i == height / 2) {
for (int k = 0; k < 2 * i + 1; k++) {
cout << '*';
}
} else {
cout << '*';
for (int k = 0; k < 2 * i - 1; k++) {
cout << ' ';
}
cout << '*';
}
cout << `____`;
}
- X 形
* *
* *
*
* *
* *
以下代码用于输出一个由 *
组成的 X 形,补全代码。
int size = 5;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (j == i || j == `____`) {
cout << '*';
} else {
cout << ' ';
}
}
cout << `____`;
}
- 口字型
****
* *
* *
****
以下代码用于输出一个由 *
组成的田字型,补全代码。
int side = 4;
for (int i = 0; i < side; i++) {
for (int j = 0; j < side; j++) {
if (i == 0 || i == side - 1 || `____`) {
cout << '*';
} else {
cout << ' ';
}
}
cout << `____`;
}
答案
第一部分:基础知识填空
- 行,列
endl
- 行
- 行,列
- 增加
- 次数
第二部分:知识应用填空
endl
endl
2 * i + 1
,endl
,2 * i + 1
,endl
i
,endl
endl
endl
i
,endl
endl
size - 1 - i
,endl
j == 0 || j == side - 1
,endl