【GESP】C++一级练习BCQM3006,多行输出
多行输出练习题,使用cout
或printf
函数输出多行内容。
BCQM3006
题目要求
描述
在windows的控制台环境中所有的字符都是等宽的,默认情况下窗口中每行有 80 个字符,每个屏幕有 25 行,组成了一个字符矩阵。利用控制台的这个特点,我们可以在控制台上绘制简单的图形。下面给出了一个 5×7 的图形的例子
1
2
3
4
5
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
找出这个图形的特点,绘制一个 10×18 的图形。
输入
无
输出
输出与上图类似的一个10×18 的图形。
输入样例
无
输出样例
1
2
3
4
5
6
7
8
9
10
ABCDEFGHIJKLMNOPQR
BABCDEFGHIJKLMNOPQ
CBABCDEFGHIJKLMNOP
DCBABCDEFGHIJKLMNO
EDCBABCDEFGHIJKLMN
FEDCBABCDEFGHIJKLM
GFEDCBABCDEFGHIJKL
HGFEDCBABCDEFGHIJK
IHGFEDCBABCDEFGHIJ
JIHGFEDCBABCDEFGHI
题目分析
初学阶段题目的本意应该是目测规律,按照输出样例原样输出。练习点在练习使用cout
或printf
函数输出多行内容。printf
函数需要使用\n
换行,而cout
则需要使用endl
换行。这里练习了三种解法供参考。
代码参考
方法一:Cout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main() {
cout << "ABCDEFGHIJKLMNOPQR" << endl;
cout << "BABCDEFGHIJKLMNOPQ" << endl;
cout << "CBABCDEFGHIJKLMNOP" << endl;
cout << "DCBABCDEFGHIJKLMNO" << endl;
cout << "EDCBABCDEFGHIJKLMN" << endl;
cout << "FEDCBABCDEFGHIJKLM" << endl;
cout << "GFEDCBABCDEFGHIJKL" << endl;
cout << "HGFEDCBABCDEFGHIJK" << endl;
cout << "IHGFEDCBABCDEFGHIJ" << endl;
cout << "JIHGFEDCBABCDEFGHI" << endl;
return 0;
}
方法二:多次Printf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <cstdio>
using namespace std;
int main() {
printf("%s\n", "ABCDEFGHIJKLMNOPQR");
printf("%s\n", "BABCDEFGHIJKLMNOPQ");
printf("%s\n", "CBABCDEFGHIJKLMNOP");
printf("%s\n", "DCBABCDEFGHIJKLMNO");
printf("%s\n", "EDCBABCDEFGHIJKLMN");
printf("%s\n", "FEDCBABCDEFGHIJKLM");
printf("%s\n", "GFEDCBABCDEFGHIJKL");
printf("%s\n", "HGFEDCBABCDEFGHIJK");
printf("%s\n", "IHGFEDCBABCDEFGHIJ");
printf("%s\n", "JIHGFEDCBABCDEFGHI");
return 0;
}
方法三:Printf 格式化输出
1
2
3
4
5
6
7
8
9
#include <cstdio>
using namespace std;
int main() {
printf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n", "ABCDEFGHIJKLMNOPQR",
"BABCDEFGHIJKLMNOPQ", "CBABCDEFGHIJKLMNOP", "DCBABCDEFGHIJKLMNO",
"EDCBABCDEFGHIJKLMN", "FEDCBABCDEFGHIJKLM", "GFEDCBABCDEFGHIJKL",
"HGFEDCBABCDEFGHIJK", "IHGFEDCBABCDEFGHIJ", "JIHGFEDCBABCDEFGHI");
return 0;
}
其实我在初看本题的时候,我以为是根据规律利用ASCII码输出,这样可以实现出任意 N * M 的图形的效果。但是觉得这个阶段对于一个初学者来说难度有点大。所以,我猜测出题者的本意就是我上面分析的意思。于是我让我的孩子实现了上述三种方法。如果你能力足够,建议可以按照N * M的方式练习一下。
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
本文由作者按照 CC BY 4.0 进行授权