试卷总分: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

E1062 电子学会青少年软件编程等级考试-C++ -CIE电子学会-202606-C++三级-模拟1-考试

选择题 共10道

01 C++中,定义函数时若不指定返回值类型,则默认返回值类型为?( ) 2分
登录后查看选项
02 已知函数声明为 char grade(int score);,以下调用正确的是?( ) 2分
登录后查看选项
03 关于C++函数参数传递,以下描述正确的是?( ) 2分
登录后查看选项
04 执行以下代码,输出结果是?( )
void swap(int &a, int &b) {
    int t = a;
    a = b;
    b = t;
}
int main() {
    int x = 5, y = 9;
    swap(x, y);
    cout << x << " " << y;
    return 0;
}
2分
登录后查看选项
05 以下递归函数用于计算n的阶乘,横线处应填入的代码是?( )
int fact(int n) {
    if(n == 0)
        return 1;
    else
        ________;
}
2分
登录后查看选项
06 假设已包含头文件 ,以下代码执行后,字符串 str 的内容是?( )
char str[20] = "Hello";
strcat(str, " World");
strcpy(str, "C++");
cout << str;
2分
登录后查看选项
07 执行 strcmp("apple", "Apple"),返回值满足?( ) 2分
登录后查看选项
08 要计算 sqrt(9) + pow(2, 3) 的结果,需要包含的头文件是?( ) 2分
登录后查看选项
09 使用枚举法找出100~200之间各位数字之和为10的所有整数,以下循环条件最合适的是?( ) 2分
登录后查看选项
10 运行以下程序,输出的结果是?( )
int total = 0;
for(int day = 1; day <= 30; day++) {
    if(day % 3 == 1) total += 2;
}
cout << total;
2分
登录后查看选项

判断题 共10道

11 C++中,函数可以嵌套定义,即在一个函数体内可以定义另一个函数。 2分
登录后查看选项
12 在调用函数时,传递给函数的实参个数可以多于形参的个数。 2分
登录后查看选项
13 如果函数的返回类型不是 void,那么函数体内必须有 return 语句返回一个该类型可隐式转换的值。 2分
登录后查看选项
14 引用传递方式下,形参会为实参起别名,在函数内对形参的修改会直接影响到实参的值。 2分
登录后查看选项
15 递归函数调用时,每次进入更深一层的递归都会在栈上创建一套新的局部变量。 2分
登录后查看选项
16 abs() 函数可以用于计算浮点数的绝对值。 2分
登录后查看选项
17 strcpy() 函数的功能是比较两个字符串是否相等。 2分
登录后查看选项
18 使用模拟法解决问题时,必须严格按照问题的规则逐步模拟,不能跳过任何步骤。 2分
登录后查看选项
19 使用枚举法时,枚举的范围应尽量小,以提高程序运行效率,但必须确保所有可能的解都包含在内。 2分
登录后查看选项
20 对于同一个问题,使用枚举法和模拟法总可以得到正确结果,但模拟法通常效率更高。 2分
登录后查看选项

编程题 共2道

21

差数

给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的差(总是用较大数减小数)。
比如,对于数列1 2 3 4,其他两个数的差有:2-1=1、3-1=2、3-2=1、4-1=3、4-2=2、4-3=1,这些差包括1、2、3。数列中恰有1、2、3这三个数,因此这三个数都满足条件,答案输出3。

输入格式

共两行,第一行是数列中数的个数n (1 <= n <= 100),第二行是由n个不大于10000的正整数组成的数列,相邻整数之间用单个空格隔开。

输出格式

一个整数,即数列中等于其他两个数之差的数的个数。

输入样例 #1
4
1 2 3 4
输出样例 #1
3
输入样例 #2
4
1 3 5 7
输出样例 #2
0
输入样例 #3
4
2 2 4 6
输出样例 #3
3
提示

注意判断时要去掉自身,用其他两个不同位置的元素进行计算。同一数值可能出现多次,每个满足条件的位置都要计数。

30分

C0657
登录后作答
22

键盘打字距离

小新有一个特殊的键盘,上面只有一排按键,共26个,分别标有字母 A 到 Z。但这26个字母的排列顺序并不是常规的,而是按照某种乱序排列,用一个长度为26的字符串 K 表示。

小新想要输入一个单词 W(由大写字母组成)。开始时,他的手指位于键盘上字母 'A' 的位置。每次输入一个字母时,他需要将手指移动到该字母在键盘上的位置,然后按下按键。移动的距离为两个字母在键盘上的位置索引之差的绝对值。

请你计算,输入完整个单词 W,小新总共需要移动的距离是多少?

注意:手指一开始在字母 'A' 的位置,不计入单词输入,只是初始位置。然后依次移动到单词 W 的每个字符,并累加移动距离。

输入格式

共两行:

第一行是一个长度为 26 的大写字母字符串 K,由 A 到 Z 各出现一次,表示键盘上从左到右的字母排列。

第二行是一个长度至少为 1 的大写字母字符串 W,表示要输入的单词。

输出格式

共一行,输出一个整数,表示从字母 A 的位置开始,依次移动到单词 W 中每个字母位置所需的总移动距离。

输入样例#1
ABCDEFGHIJKLMNOPQRSTUVWXYZ
HELLO
输出样例#1
20
输入样例#2
VENFLQURTCWOAXMGJYIZDKSBHP
WORLD
输出样例#2
26
输入样例#3
QWERTYUIOPASDFGHJKLZXCVBNM
CODER
输出样例#3
39
提示

数据范围:字符串 K 长度固定为 26,W 长度不超过 1000。

30分

C0658
登录后作答