试卷总分:100分


选择题 10题 20分

01 02 03 04 05 06 07 08 09 10


判断题 10题 20分

11 12 13 14 15 16 17 18 19 20


编程题 2题 60分

21 22

E1015 电子学会青少年软件编程等级考试-C++ -CIE电子学会-202606-C++三级-真题-考试

选择题 共10道

01 以下关于C++函数声明的说法,正确的是?( ) 2分
登录后查看选项
02 函数定义为`double calc(double a, double b)`,以下调用方式正确的是?( ) 2分
登录后查看选项
03 以下函数参数传递方式中,函数内对形参的修改会影响实参的是?( ) 2分
登录后查看选项
04 执行以下代码,输出结果是?( )
void change(int &x)

    x = x * 2; 

int main()

    int a = 8; 
    change(a); 
    cout << a; 
    return 0; 
}
2分
登录后查看选项
05

以下递归函数用于计算1~n的累加和,横线处应填入的代码是?( ) 

int sum(int n)

     if(n == 1) 
            return 1; _________ 

2分
登录后查看选项
06 以下哪个函数可以将两个C风格字符串拼接在一起?( ) 2分
登录后查看选项
07 执行`strcmp("test", "test")`,返回值是?( ) 2分
登录后查看选项
08 要找出1000以内所有的素数,最适合使用的算法思想是?( ) 2分
登录后查看选项
09 运行程序,输出结果为?( )
int cnt = 0;
    for(int n=2;n<=100;n++){
        bool isPrime = true;
        for(int i=2;i*i<=n;i++){
            if(n%i==0){
                isPrime=false;
                break;
            }
        }
        if(isPrime) cnt++;
    }
    cout<<cnt;
2分
登录后查看选项
10 以下代码用于统计1~200中,能同时被3和5整除的数的个数,横线处应填入的代码是?( )
int cnt = 0;
for(int i=1;i<=200;i++){
    if(_________)
        cnt++;
}
cout << cnt;
2分
登录后查看选项

判断题 共10道

11 函数的返回值类型为void时,函数内可以使用`return;`语句提前结束函数。( ) 2分
登录后查看选项
12 C++中,两个同名函数只要返回值类型不同,就可以构成函数重载。( ) 2分
登录后查看选项
13 值传递方式下,函数会为形参创建新的内存空间,实参和形参互不影响。( ) 2分
登录后查看选项
14 递归函数可以没有终止条件,编译器会自动处理。( ) 2分
登录后查看选项
15 有些算法既有递归实现也有非递归实现。( ) 2分
登录后查看选项
16 `strlen()`函数功能是计算字符串长度。( ) 2分
登录后查看选项
17 C++的`string`类可以直接用`+`运算符拼接。( ) 2分
登录后查看选项
18 枚举法的核心是不遗漏地遍历所有可能的情况。( ) 2分
登录后查看选项
19 枚举要注意程序的运行效率,否则很容易在规定的时间内得不到希望的结论。( ) 2分
登录后查看选项
20 当问题与游戏规则、物理过程等实际场景有关时,可以考虑使用模拟法解决问题。( ) 2分
登录后查看选项

编程题 共2道

21

题目描述

墙上,挂着一幅由 n×n 个彩色方格组成的画作。画作的内容可以用一个 n×n 的字符矩阵来表示。

现在想要将这幅画顺时针旋转 90 度后重新悬挂,请你计算出旋转后的画作是什么样的。

输入格式

第一行,一个整数表示 n。

接下来 n 行,每行 n 个字符。

输出格式

输出 n 行,每行 n 个字符,表示顺时针旋转 90 度后的矩阵。

输入样例 #1
4
ooxx
xoox
xxxx
xxxx
输出样例 #1
xxxo
xxoo
xxox
xxxx
输入样例 #2
2
12
34
输出样例 #2
31
42
说明提示

1 ≤ n ≤ 1000

限制

时间限制:1000ms
内存限制:256MiB

30分

C0557
登录后作答
22

题目描述

花坛里有 n 朵花,每朵花的编号为 1,2,…,n。初始时,所有花的高度都是 0。

现在给定一个数列 h = {h₁, h₂, …, hₙ},你可以重复进行如下的浇水操作,每次操作:任选一段连续区间 [l, r],区间内每朵花高度加 1。可以无限重复该操作,使得第 k 朵花的最终高度恰好为 hₖ(1 ≤ k ≤ n)。

求完成目标需要的最小操作浇水次数。

输入格式

第一行一个整数,表示花的数量 n。

第二行 n 个整数,依次表示每朵花需要达到的目标高度 h₁, h₂, …, hₙ。

输出格式

输出一个整数,表示达成目标所需的最少浇水操作次数。

输入样例 #1
5
3 1 2 3 1
输出样例 #1
5
输入样例 #2
8
4 23 75 0 23 96 50 100
输出样例 #2
221
说明提示

1 ≤ n ≤ 100
0 ≤ hᵢ ≤ 100
所有输入均为整数

限制

时间限制:1000ms
内存限制:256MiB

30分

C0558
登录后作答