2023年3月GESP C++一级考试真题及详解

发表时间: 2023-11-28 10:06

考试流程

程序编写

答题流程

认证大纲

单选题(每题2分,共30分)

答案:B

解析:音响属于输出设备

答案:A

解析:字节是计算机的基础单位,比特是最小单位。

答案:A

解析:C++ 中浮点型默认为 double 类型。

答案:C

解析:如果未定义变量,编译时会报错:error: 'xxx' was not declared in this scope

答案:C

解析:0x321 以数字开头。

答案:D

解析:std::cout 是 C++ 语言的关键字。没有指定 std 域,cout 可以作为变量名。

#include <iostream>  // using namespace std; int main(){		int cout = 123;    std::cout << cout << std::endl;		return 0;}输出:123

答案:D

解析:++ 为自增运算符,且 ++ 优先级高于 +。

#include <iostream>  using namespace std; int main(){		int a = 1, b = 2;        int c = a +++ b;    cout << a << " " << b << " " << c << endl;		return 0;}输出:2 2 3

答案:A

解析:乘法优先级高于加法。

答案:A

解析:小数据类型和大数据类型进行运算,结果会向大数据类型做隐式转换。

答案:D

解析:a *= 3 相当于 a = a * 3。

答案:B

解析:C++ 中不支持比较运算符连写。

答案:C

解析:a % 4 的值 为 0 至 3 之间,如果 a % 4 的值为 0,结果恰好就是 a,即使 a + 3 也不会改变结果,如果 a % 4 的值非 0,那么 (a + 3) / 4 的值会加 1。

答案:D

解析:逐个选项代入。

答案:B

解析:i 每次扩大 2 倍。

答案:C

解析:3 + 5 + 6 + 9 + 10 + 12 + 15 + 18 + 20 = 98

判断题(每题2分,共20分)

答案:

1. ✅ 先剪切文本,再粘贴文本。

2. ❌ 计算机只能识别机器语言。

3. ❌ 程序运行不会执行注释。

4. ✅

5. ❌ '3' 是字符型常量。

6. ❌ 结果不一定为 bool 型,但是最终会被隐式转换为 bool 而类型进行判断。

7. ❌ for 语句中条件可以一次都不成立。

8. ❌ “=”为赋值符号,并不是“相等”。

9. ✅

10. ✅

编程题(每题25分,共50分)

每月天数

解析:枚举 12 个月的天数,二月特殊判断,下面程序使用多组 else if,可以通过 或 逻辑运算符进行行数简化。

#include <iostream>using namespace std;int main(){        int a, b;    cin >> a >> b;        if(b == 1) cout << 31 << endl;    else if(b == 2){        if(a % 4 == 0 && a % 100 || a % 400 == 0)            cout << 29 << endl;        else             cout << 28 << endl;    }    else if(b == 3) cout << 31 << endl;    else if(b == 4) cout << 30 << endl;    else if(b == 5) cout << 31 << endl;    else if(b == 6) cout << 30 << endl;    else if(b == 7) cout << 31 << endl;    else if(b == 8) cout << 31 << endl;    else if(b == 9) cout << 30 << endl;    else if(b == 10) cout << 31 << endl;    else if(b == 11) cout << 30 << endl;    else if(b == 12) cout << 31 << endl;        return 0;}

长方形面积

解析:求约数问题。

#include <iostream>using namespace std;int main(){        int n;    cin >> n;        int res = 0;    for(int i = 1; i <= n / i; i++)    	if(n % i == 0)    		res++;    			cout << res << endl;        return 0;}