C++ ⼀级 2023 年06 ⽉

C++ ⼀级 2023 年06 ⽉

GESP CCF 编程能力等级认证 C++ 一级(2023 年 6 月)

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

题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
答案 A C C D A D D C C B B A C B D

第 1 题

以下不属于计算机输出设备的有( )。

A. 麦克风

B. 音箱

C. 打印机

D. 显示器

【考纲知识点】计算机基础(一级)【解析】本题考察计算机基础知识中的 "输入" 和 "输出" 概念。"输入" 指外界向机器内部传递信息,"输出" 指计算机内部信息向外界展示信息。"麦克风" 用于向计算机输入声音,属于输入设备,因此正确答案为 A。

第 2 题

ChatGPT 是 OpenAI 研发的聊天机器人程序,它能通过理解和学习人类的语言来进行对话,还能根据聊天的上下文进行互动,完成很多工作。请你猜猜看,下面任务中,ChatGPT 不能完成的是( )。

A. 改邮件

B. 编剧本

C. 擦地板

D. 写代码

【考纲知识点】计算机基础(一级)【解析】本题考察计算机在现代社会中的常见应用。ChatGPT 作为聊天机器人程序,可完成改邮件、编剧本、写代码等计算机端操作,而擦地板是物理操作,无法直接实现,因此正确答案为 C。

第 3 题

常量 '3' 的数据类型是( )。

A. double

B. float

C. char

D. int

【考纲知识点】基本数据类型(一级)【解析】本题考察 C++ 中的基本数据类型。C++ 基本数据类型包括整型(int、long long)、实数型(float、double)、字符型(char)、布尔型(bool)。'3' 是用单引号引起来的单个字符,属于字符型 char,因此正确答案为 C。

第 4 题

下列关于 C++ 语言变量的叙述,正确的是( )。

A. 变量可以没有定义

B. 对一个没有定义的变量赋值,相当于定义了一个新变量

C. 执行赋值语句后,变量的类型可能会变化

D. 执行赋值语句后,变量的值可能不会变化

【考纲知识点】变量的定义与使用(一级)【解析】本题考察变量相关概念。A、B 错误,变量需 "先定义,再使用",未定义的变量无法直接赋值;C 错误,赋值操作不会改变变量数据类型;D 正确,若赋值语句右侧表达式结果与变量原值相同,变量值不变,因此正确答案为 D。

第 5 题

以下可以作为 C++ 标识符的是( )。

A. number_of_Chinese_people_in_millions

B. 360AntiVirus

C. Man&Woman

D. break

【考纲知识点】变量的定义与使用(一级)【解析】本题考察标识符命名规则。C++ 标识符只能包含字母、数字、下划线,且不能以数字开头,同时不能使用关键字。B 以数字开头,C 包含非法字符 &,D 是关键字,均不符合要求,因此正确答案为 A。

第 6 题

以下哪个不是 C++ 语言的关键字?( )

A. double

B. else

C. while

D. endl

【考纲知识点】计算机基础与编程环境(一级)【解析】本题考察 C++ 关键字识别。C++ 关键字包括 auto、bool、char、double、else、while 等,endl 是输出流操作符,并非关键字,因此正确答案为 D。

第 7 题

如果 a、b 和 c 都是 int 类型的变量,下列哪个语句不符合 C++ 语法?( )

A. a = (b == c);

B. a = 3.14;

C. a = b + c;

D. a + c = b + c;

【考纲知识点】基本运算(一级)【解析】本题考察赋值运算符使用规则。赋值运算符左侧必须是变量,右侧是表达式或常量。D 选项左侧是算术运算(a + c),并非变量,不符合语法,因此正确答案为 D。

第 8 题

如果用一个 int 类型的变量 a 表达正方形的边长,则下列哪个表达式不能用来计算正方形的面积?( )

A. a * a

B. 1 * a * a

C. a ^ 2

D. a * 2 * a / 2

【考纲知识点】基本运算(一级)【解析】本题考察 C++ 基本运算。正方形面积为 aa,A、B、D 运算结果均为 aa;C 选项中 ^ 在 C++ 中是 "异或运算符",并非乘方,因此正确答案为 C。

第 9 题

表达式 (4 * (11 + 12) / 4) 的计算结果为( )。

A. 47

B. 20

C. 23

D. 56

【考纲知识点】基本运算(一级)【解析】本题考察运算优先级。先计算括号内 11+12=23,再按从左到右顺序计算 4*23=92,92/4=23,因此正确答案为 C。

第 10 题

如果 a 为 int 类型的变量,且 a 的值为 6,则执行a %= 4;之后,a 的值会是( )。

A. 1

B. 2

C. 3

D. 4

【考纲知识点】基本运算(一级)【解析】本题考察复合赋值运算符。a %= 4等价于a = a % 4,6 除以 4 的余数为 2,因此正确答案为 B。

第 11 题

如果 a 和 b 均为 int 类型的变量,下列表达式能正确判断 "a 等于 0 且 b 等于 0" 的是( )。

A. (a == b == 0)

B. !(a || b)

C. (a + b == 0)

D. (a == 0) + (b == 0)

【考纲知识点】基本运算(一级)【解析】本题考察逻辑运算。A 选项先判断 a==b,再与 0 比较,无法判断 a 和 b 均为 0;B 选项中,若 a 和 b 均为 0,则 a||b 为 0,!(a||b) 为 1,符合要求;C 选项 a 和 b 互为相反数时也成立;D 选项 a 或 b 任一为 0 时结果即大于 0,因此正确答案为 B。

第 12 题

如果 a 和 b 为 int 类型的变量,且值分别为 7 和 2,则下列哪个表达式的计算结果不是 3.5?( )

A. 0.0 + a /b

B. (a + 0.0) /b

C. (0.0 + a) /b

D. a / (0.0 + b)

【考纲知识点】基本运算(一级)【解析】本题考察实数算术运算。B、C、D 选项中,至少有一个操作数为实数,除法结果为实数 3.5;A 选项中 a/b 是整数除法(7/2=3),再加 0.0 结果为 3.0,因此正确答案为 A。

第 13 题

在下列代码的横线处填写( ),使得输出是 "20 10"。

cpp 复制代码
#include <iostream>
using namespace std;
int main(){
    int a = 10, b = 20;
    a = _; // 在此处填入代码
    b = a + b;
    a = b - a;
    cout << a << " " << b << endl;
    return 0;
}

A. a + b

B. b

C. a - b

D. b - a

【考纲知识点】基本运算(一级)【解析】本题可通过结果反推。输出要求 a=20、b=10。第 7 行执行后 a=20,此时 b=10,可知第 7 行执行前 a=-10、b=10;第 6 行执行后 b=10,可知第 6 行执行前 a=-10、b=20。因此第 5 行需将 a 赋值为 - 10,10-20=-10,对应选项 C,正确答案为 C。

第 14 题

在下列代码的横线处填写( ),可以使得输出是 "147"。

cpp 复制代码
#include <iostream>
using namespace std;
int main(){
    for (int i = 1; i <= 8; i++)
        if (_) // 在此处填入代码
            cout << i;
    return 0;
}

A. i % 2 == 1

B. i % 3 == 1

C. i = i + 3

D. i + 3

【考纲知识点】循环结构、基本运算(一级)【解析】本题考察 for 循环与求余运算。A 选项输出奇数 1357;B 选项中 1、4、7 除以 3 余 1,输出 147,符合要求;C 选项是赋值表达式,输出 48;D 选项表达式恒为真,输出 12345678,因此正确答案为 B。

第 15 题

执行以下 C++ 语言程序后,输出结果是( )。

cpp 复制代码
#include <iostream>
using namespace std;
int main(){
    int sum;
    for (int i = 1; i <= 20; i++)
        if (i % 3 == 0 || i % 5 == 0)
            sum += i;
    cout << sum << endl;
    return 0;
}

A. 63

B. 98

C. 113

D. 无法确定

【考纲知识点】变量的定义与使用(一级)【解析】本题考察变量初始化。变量 sum 定义后未初始化,其初始值不确定,累加结果也无法确定,因此正确答案为 D。

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

题号 1 2 3 4 5 6 7 8 9 10
答案 × × × ×
  1. 计算机硬件主要包括运算器、控制器、存储器、输入设备和输出设备。( )

    【考纲知识点】计算机基础(一级)【解析】本题考察计算机组成五大部分,题干描述正确,答案为√。

  2. 诞生于 1958 年的 103 机是中国第一台通用数字电子计算机,比 1946 年在美国诞生的第一台通用电子计算机 ENIAC 晚了十多年。( )

    【考纲知识点】计算机的历史(一级)【解析】中国 103 机研制于 1958 年,ENIAC 诞生于 1946 年,时间差符合描述,答案为√。

  3. 在 C++ 语言中,计算结果必须存储在变量中才能输出。( )

    【考纲知识点】输入输出语句(一级)【解析】输出语句可直接输出表达式结果(如cout << 1+2;),无需存储在变量中,答案为 ×。

  4. 在 C++ 语言中,标识符的命名不能完全由数字组成,至少有一个字母就可以。( )【考纲知识点】变量的定义与使用(一级)

    【解析】标识符可由下划线 + 数字组成(如_123),无需字母;但不能以数字开头(如2ab非法),答案为 ×。

  5. 10 是一个 int 类型常量。( )

    【考纲知识点】基本数据类型(一级)【解析】10 是整型常量,默认数据类型为 int,答案为√。

  6. if 语句可以没有 else 子句。( )

    【考纲知识点】选择结构(一级)【解析】if 语句可独立存在,条件满足时执行后续代码,不满足则跳过,无需 else 子句,答案为√。

  7. do ... while 语句的循环体至少会执行一次。( )

    【考纲知识点】循环结构(一级)【解析】do...while 语句先执行循环体,再判断条件,因此循环体至少执行一次,答案为√。

  8. 如果 a 和 b 为 int 类型的变量,则表达式 a = b 可以判断 a 和 b 是否相等。( )

    【考纲知识点】基本运算(一级)【解析】a = b是赋值语句,将 b 的值赋给 a;判断相等需用a == b,答案为 ×。

  9. 如果 a 为 int 类型的变量,则表达式(a % 4 == 2)可以判断 a 的值是否为偶数。( )

    【考纲知识点】基本运算(一级)【解析】偶数是能被 2 整除的数,a % 2 == 0才是判断偶数的正确表达式;a % 4 == 2的数是偶数,但偶数不一定满足该条件(如 4),答案为 ×。

  10. 表达式 (37 / 4) 的计算结果为 9,且结果类型为 int。( )

    【考纲知识点】基本运算(一级)【解析】C++ 中整数除法向下取整,37/4=9,结果类型为 int,答案为√。

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

1. 时间规划

问题描述

小明在为自己规划学习时间。现在他想知道两个时刻之间有多少分钟,你能通过编程帮他做到吗?

输入描述

输入 4 行,第一行为开始时刻的小时,第二行为开始时刻的分钟,第三行为结束时刻的小时,第四行为结束时刻的分钟。输入保证两个时刻是同一天,开始时刻一定在结束时刻之前。时刻使用 24 小时制,即小时在 0 到 23 之间,分钟在 0 到 59 之间。

输出描述

输出一行,包含一个整数,从开始时刻到结束时刻之间有多少分钟。

样例输入 1
plaintext 复制代码
9
5
9
6
样例输出 1
plaintext 复制代码
1
样例输入 2
plaintext 复制代码
9
5
10
0
样例输出 2
plaintext 复制代码
55
考纲知识点

变量的定义与使用、顺序结构、基本运算、输入输出语句(一级)

解题思路
  1. 定义变量存储开始时刻(h1、m1)和结束时刻(h2、m2);
  2. 计算小时差对应的分钟数:(h2 - h1) * 60;
  3. 计算分钟差:m2 - m1;
  4. 两者相加即为总分钟数,输出结果。
参考程序
cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int h1, m1, h2, m2;
    cin >> h1 >> m1;
    cin >> h2 >> m2;
    cout << (h2 - h1) * 60 + (m2 - m1);
    return 0;
}
c++ 复制代码
#include<iostream>
using namespace std;
int main()
{
	int kh,km,jh,jm;
	cin>>kh>>km>>jh>>jm;
	int f1=kh*60+km;
	int f2=jh*60+jm;
	int f3=(f2-f1);
	cout<<f3;
	return 0;
}

2. 累计相加

问题描述

输入一个正整数 n,求形如:1 + (1+2) + (1+2+3) + (1+2+3+4) + ... + (1+2+3+...+n) 的累计相加。

输入描述

输入一个正整数 n,约定 1 ≤ n ≤ 100。

输出描述

输出累计相加的结果。

样例输入 1
plaintext 复制代码
3
样例输出 1
plaintext 复制代码
10
样例输入 2
plaintext 复制代码
4
样例输出 2
plaintext 复制代码
20
样例输入 3
plaintext 复制代码
10
样例输出 3
plaintext 复制代码
220
考纲知识点

循环结构、基本运算、输入输出语句(一级)

解题思路
  1. 分析规律:第 i 项为 1+2+...+i,可通过等差数列求和公式表示为 (i+1)*i/2;
  2. 定义累加变量 sum 并初始化为 0;
  3. 用 for 循环遍历 1 到 n,将每一项的结果累加到 sum 中;
  4. 输出 sum 的值。
参考程序
cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int sum = 0;
    for (int i = 1; i <= n; i++)
        sum += (i + 1) * i / 2;
    cout << sum << endl;
    return 0;
}

方法2

c++ 复制代码
#include<iostream>
using namespace std;
int main()
{
	int n,sum=0;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=i;j++)
			sum+=j;
	}
	cout<<sum;
	return 0;
}
相关推荐
Mr.Jessy2 小时前
JavaScript高级:深入对象与内置构造函数
开发语言·前端·javascript·ecmascript
charlie1145141912 小时前
编写INI Parser 测试完整指南 - 从零开始
开发语言·c++·笔记·学习·算法·单元测试·测试
mmz12072 小时前
前缀和问题2(c++)
c++·算法
忘记9262 小时前
session的工作原理
开发语言
java_logo3 小时前
LinuxServer.io LibreOffice 容器化部署指南
java·开发语言·docker·dubbo·openoffice·libreoffice·opensource
꧁坚持很酷꧂3 小时前
Windows安装Qt Creator5.15.2(图文详解)
开发语言·windows·qt
Alpha first3 小时前
C++核心知识点梳理:类型兼容、多继承与虚基类
开发语言·c++
.小小陈.3 小时前
C++初阶9:list使用攻略
开发语言·c++·学习·list
qq_589568103 小时前
@NotBlank与@NotEmpty注解无法导入
java·开发语言