GESP二级 图形矩阵真题汇总

2025年6月

单选题

第15题

下面C++代码实现输出如下图形,相关说法错误的是()。

请输入层数:10
0
12
345
6789
01234
567890
1234567
89012345
678901234
5678901234
        

代码片段:

int line_number, now_number;
int i, row;

cout << "请输入行数:";
cin >> line_number;
now_number = 0;

for (row=1; row <= line_number; row++){ // L1
    for (i=0; i < row; i++){ // L2
        cout << now_number;
        now_number += 1;
        if (now_number == 10) now_number = 0; // L3
    }
    cout << endl;
}
        

判断题

第10题

为实现如下效果,即N行N列字符。当输入是奇数时,中间列为`*`,其他是`-`;当输入是偶数时,则中间两列是`*`,其他是`-`。字符阵列后的代码能实现其效果。

/*
--*--
--*--
--*--
--*--
--*--

--**--
--**--
--**--
--**--
--**--
--**--
*/
        

代码片段:

int N;
cin >> N;
int i,j;
for (i=0; i < N; i++){
    for (j=0; j < N; j++)
        if ((j == N/2) || (j == (N-1)/2))
            cout << "*";
        else
            cout << "-";
    cout << endl;
}
        

2025年3月

单选题

第13题

已知C++代码和执行后的期望输出如下,相关说法正确的是()。

请输入层数N: 10
1
2 3
4 5 6
7 8 9 1
2 3 4 5 6
7 8 9 1 2 3
4 5 6 7 8 9 1
2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
        

代码片段:

int i,j;
int last, N;

cout << "请输入层数N:";
cin >> N;

last = 1;
for (i=1; i <= N; i++){
    for (j=1; j <= i; j++){ // L1
        if (last > 9)
            last = 1;
        cout << last << " ";
        last += 1;
    }
    printf("\n");
}
        

编程题

编程题1:等差矩阵

题目描述:

小A想构造一个n行m列的矩阵,使得矩阵的每一行与每一列均是等差数列。小A发现,在矩阵的第i行第j列填入整数 i*j,得到的矩阵能满足要求。你能帮小A输出这个矩阵吗?

输入格式:

一行,两个正整数n, m。

输出格式:

共n行,每行m个由空格分割的整数,表示小A需要构造的矩阵。

样例输入:

3 4

样例输出:

1 2 3 4
2 4 6 8
3 6 9 12
        

2024年12月

单选题

第11题

下面C++代码用于实现图示的九九乘法表。相关说法错误的是()。

/*
1*1=1
1*2=2  2*2=4
1*3=3  2*3=6  3*3=9
... (省略)
*/
        

代码片段:

for (int Hang=1; Hang<10; Hang++){
    for (int Lie=1; Lie<=Hang; Lie++){
        if (Lie * Hang > 9)
            printf("%d*%d=%d ", Lie, Hang, Lie*Hang);
        else
            printf("%d*%d=%d  ", Lie, Hang, Lie*Hang);
        // L2
    }
    printf("\n"); // L1
}
        

第14题

下面C++代码实现输出如下图形,横线应填入的代码是()。

高度:5
    *
   ***
  *****
 *******
*********
        

代码片段:

int height;
cout << "高度:";
cin >> height;
for (i=0; i<height; i++){
    //打印每行前面的空格
    for (j=0; j < ______; j++)
        cout << " ";
    
    //打印每行的星号
    for (k=0; k < ______; k++)
        cout << "*";

    //输出一行后,换行
    cout << endl;
}
        

2024年9月

单选题

第11题

下图是C++程序执行后的输出。为实现其功能,横线处应填入代码是()。

7
1
2 3
3 4 5
4 5 6 7
5 6 7 8 9
6 7 8 9 10 11
7 8 9 10 11 12 13
        

代码片段:

int lineNum;
cin >> lineNum;
for (int i=1; i <= lineNum; i++){
    for(int ____________________) // 此处填写代码
        cout << j << " ";
    cout << endl;
}
        

编程题

编程题2:小杨的N字矩阵

问题描述:

小杨想要构造一个m×m的N字矩阵(m为奇数),这个矩阵的从左上角到右下角的对角线、第1列和第m列都是半角加号`+`,其余都是半角减号`-`。例如,一个5×5的N字矩阵如下:

+---+
++--+
+-+-+
+--++
+---+
        

输入描述:

第一行包含一个正整数m (3 ≤ m ≤ 49 且 m为奇数)。

输出描述:

输出对应的N字矩阵。

样例输入:

5

样例输出:

+---+
++--+
+-+-+
+--++
+---+
        

2024年6月

单选题

第13题

下面C++代码用于实现如下图所示的效果,其有关说法正确的是()。

1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
        

代码片段:

for (int i=1; i < 6; i++){ // L1
    for (int j=1; j < i+1; j++) //L2
        cout << i*j << " ";
    cout << endl;
}
        

2024年3月

单选题

第13题

给定两个整数n与k,打印出一个栅栏图形,这个栅栏应该分成n段,段与段之间的间隔为+,段内的填充为k个-。形如n=5, k=6时,图形如下: |—–|—–|—–|—–|—–|。以下程序代码用于绘制该图形,横线处应填写?

代码片段:

int n, k, i, j;
n=5, k=6;
for (i = 0; i < n; i++){
    // 在此处填写代码
    for (j=0; j < k; j++)
        cout << '-';
}
cout << '|';
        

编程题

编程题2:小杨的日字矩阵

问题描述:

小杨想要构造一个N×N的日字矩阵(N为奇数),具体来说,这个矩阵共有N行,每行N个字符,其中最左列、最右列都是`|`,而第一行、最后一行、以及中间一行的第2~N-1个字符都是`-`,其余所有字符都是半角小写字母`x`。例如,一个N=5的日字矩阵如下:

|---|
|xxx|
|---|
|xxx|
|---|
        

输入描述:

一行一个整数N (5 ≤ N ≤ 49, 保证为奇数)。

输出描述:

输出对应的“日字矩阵”。

样例输入:

5

样例输出:

|---|
|xxx|
|---|
|xxx|
|---|
        

2023年12月

单选题

第12题

下面的C++代码用于实现如下左图所示的效果,应在以下右图C++代码中填入()。

0
01
012
0123
...
0123456789
01234567890
012345678901
        

代码片段:

int nowNum=0, N;
cin >> N;
for (i=0; i<N; i++) {
    for (j=0; j<i+1; j++){
        cout << nowNum;
        nowNum += 1;
        if (nowNum == 10)
            nowNum=0;
    }
}
        

编程题

编程题2:小杨的H字矩阵

问题描述:

小杨想要构造一个N×N的H字矩阵(N为奇数),具体来说,这个矩阵共有N行,每行N个字符,其中最左列、最右列都是`|`,而中间一行的第2~N-1个字符都是`-`,其余所有字符都是半角小写字母`a`。例如,一个N=5的H字矩阵如下:

|aaa|
|aaa|
|---|
|aaa|
|aaa|
        

输入描述:

一行一个整数N (5 ≤ N ≤ 49, 保证为奇数)。

输出描述:

输出对应的“H字矩阵”。

样例输入:

5

样例输出:

|aaa|
|aaa|
|---|
|aaa|
|aaa|
        

2023年9月

单选题

第7题

如下图所示,输出N行列的矩阵,对角线为1,横线处应填入()。

请输入行列数量:9
1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
... (省略)
0 0 0 0 0 0 0 0 1
        

代码片段:

for (int i=1; i<=N; i++) {
    for (int j=1; j<=N; j++)
        if (____) //此处填写代码
            cout << 1 << " ";
        else
            cout << 0 << " ";
    cout << endl;
}
        

第13题

下面图形每一行从字母A开始,以ABC方式重复。行数为输入的整数。请在C++代码段横线处填入合适代码()。

请输入字母行数:7
A
AB
ABC
ABCA
ABCAB
ABCABC
ABCABCA
        

代码片段:

cout << "请输入行列数量:";
cin >> N;
for (int i=1; i <= N; i++) {
    for (int j=0; j<i; j++)
        cout << ____________; //此处填写代码
    cout << endl;
}
        

第14题

输入行数,约定1≤lineCount≤9.输出以下图形。应在C++代码横线处填入()。

输入行数量:9
        1
       121
      12321
     1234321
    123454321
   12345654321
  1234567654321
 123456787654321
12345678987654321
        

代码片段(节选):

for (int i=0; i < lineCount; i++) {
    for (int j=0; j < ____________; j++) //此处填写代码
        cout << ' ';
    //... 打印数字部分
}
        

编程题

编程题1:小杨的X字矩阵

问题描述:

小杨想要构造一个N×N的X字矩阵(N为奇数),这个矩阵的两条对角线都是半角加号`+`,其余都是半角减号`-`。例如,一个5×5的X字矩阵如下:

+---+
-+-+-
--+--
-+-+-
+---+
        

输入描述:

一行一个整数N (5 ≤ N ≤ 49, 保证为奇数)。

输出描述:

输出对应的“X字矩阵”。

样例输入:

5

样例输出:

+---+
-+-+-
--+--
-+-+-
+---+
        

2023年3月

编程题

编程题1:画三角形

问题描述:

输入一个正整数n,请使用大写字母拼成一个这样的三角形图案:三角形图案的第1行有1个字母,第2行有2个字母,以此类推; 在三角形图案中,由上至下、由左至右依次由大写字母A-Z填充,每次使用大写字母Z填充后,将从头使用大写字母A填充。

输入描述:

输入一行,包含一个正整数n。约定2≤n≤40。

输出描述:

输出符合要求的三角形图案。注意每行三角形图案的右侧不要有多余的空格。

样例输入1:

3

样例输出1:

A
BC
DEF
        

样例输入2:

7

样例输出2:

A
BC
DEF
GHIJ
KLMNO
PQRSTU
VWXYZAB