内容正文:
CCF 编程能力等级认证(2023
年 6 月) C++ 2 级
一、选择题
共有 15 道题目,已完成 0 道题目
第 1 题 高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执
行代码。
编辑
保存
调试
编译
第 2 题 能够实现下面流程图功能的伪代码是( )。
if 条件判断 then 语句块
if 条件判断 then 什么也不做 else 语句块
while 条件判断 do 语句块
while not 条件判断 do 语句块
第 3 题 下列关于 C++语言的叙述,正确的是()。
char类型变量不能赋值给 int类型的变量。
两个 int类型变量相乘,计算结果还是 int类型。
计算两个 int类型变量相乘时,如果乘积超出了 int类型的取值范围,程序会报错
崩溃。
计算两个 double类型变量相除时,如果除数的值为 0.0,程序会报错崩溃。
第 4 题 下列关于 C++语言的叙述,不正确的是()。
if语句中的判断条件必须用小括号(和)括起来。
for语句中两个;之间的循环条件可以省略,表示循环继续执行的条件一直满足。
循环体包含多条语句时,可以用缩进消除二义性。
除了“先乘除、后加减”,还有很多运算符优先级。
第 5 题 以下哪个是 C++语言的关键字?
main
max
double
sqrt
第 6 题 以下哪个不是 C++语言的运算符?
>=
/=
||
<>
第 7 题 如果 a为 int类型的变量,b为 char类型的变量,则下列哪个语句不符合 C++
语法?
a = a + 1.0;
a = (int)(b - '0');
b = (char)(a + '0');
(int)b = a;
第 8 题 如果用两个 int类型的变量 a和 b分别表达平行四边形的两条边长,用 int类
型的变量 h表达 a边对应的高,则下列哪个表达式不能用来计算 b边对应的高?
a / b * (0.0 + h)
(0.0 + a * h) / b
a * h / (b + 0.0)
(a + 0.0) * h / b
第 9 题 以下哪个循环语句会无限次执行?
for (int a = 0; a; a++) ;
for (bool b = false; b <= true; b++) ;
for (char c = 'A'; c < 'z'; c++) ;
for (double d = 0.0; d < 10.0; d += 0.001) ;
第 10 题 如果 a为 char类型的变量,且 a的值为'C'(已知'C'的 ASCII 码为 67),则
执行 cout << (a + 2);会输出()。
E
C+2
C2
69
第 11 题 如果 a和 b均为 int类型的变量,下列表达式能正确判断“a等于 1 且 b 等于
1”的是()
(a == b) && (b == 1)
(a && b)
(a == b == 1)
(a * b == 1)
第 12 题 如果 a为 char类型的变量,下列哪个表达式可以正确判断“a是数字”?
'0' <= a && a <= '9'
'1' <= a && a <= '0'
'0' <= a <= '9'
'1' <= a <= '0'
第 13 题 在下列代码的横线处填写(),使得输出是 9。
(a + b)
(a + b - '0')
(char)(a + b)
(char)(a + b - '0')
第 14 题 在下列代码的横线处填写(),可以使得输出是 42。
i % 3 == 0
20 % i == 0
i <= 8
i >= 18
第 15 题 执行以下 C++语言程序后,输出结果是()。
A
B
C
D
二、判断题
共有 10 道题目,已完成 0 道题目
第 1 题 诞生于 1986 年的中华学习机 CEC-I 入选了 2021 年的 CCF 计算机历史记
忆(一类),它的内存只有 64KB。当时的汉字编码字符集 GB2312 中共有 6763
个汉字,假如每个汉字用 2 个字节编码,将整个 GB2312 汉字字符集都放入 CEC-
I 的内存,也只占用了不超过 1/5 的内存空间。
正确
错误
第 2 题 域名是由一串用点分隔的名字来标识互联网上一个计算机或计算机组的名
称,CCF 编程能力等级认证官方网站的域名是 gesp.ccf.org.cn,其中顶级域名是
gesp。
正确
错误
第 3 题 在使用 C++语言编写程序时,不能使用 sqrt、abs等数学函数,包含
<cmath>或<math.h>头文件后就能够使用了。
正确
错误
第 4 题 在 C++语言中,标识符中可以有下划线_。同时,_也是 C++语言的运算
符。
正确
错误
第 5 题 如果 a是 double类型的变量,而且值为 3.5,则表达式 a * 10的计算结果
为 35,且结果类型为 int。
正确
错误
第 6 题 在 if语句中,如果条件成立时需要执行多条语句,可以使用大括号{和}将
这些语句括起来。
正确
错误
第 7 题 循环语句的循环体有可能无限制地执行下去。
正确
错误
第 8 题 ++和==都是 C++语言的运算符,但+=不是。
正确
错误
第 9 题 如果 a为 char类型的变量,且取值为大写字母'F',则执行语句 a = a +
1;后,a的值会变为大写字母'G'。
正确
错误
第 10 题 表达式 sqrt(9.0)的计算结果为 3,且结果类型为 int。
正确
错误
三、找素数
试题编号:2023-06-11-02-C-01
试题名称:找素数
时间限制: 1.0s
内存限制: 128.0MB
【问题描述】
小明刚刚学习了素数的概念:如果一个大于 1 的正整数,除了 1 和它自身外,
不能被其他正整数整除,则这个正整数是素数。现在,小明想找到两个正整数 A 和 B 之
间(包括 A 和 B)有多少个素数。
【输入描述】
输入 2 行,第一行包含正整数 A,第二行包含正整数 B。约定 2≤A≤B≤1000。
【输出描述】
输出一行,包含一个整数 C,表示找到 C 个素数。
【样例输入 1】
2
10
【样例输出 1】
4
【样例解释 1】
在 2 和 10 之间有 4 个素数,分别为:2、3、5、7。
【样例输入 2】
98
100
【样例输出 2】
0
四、自幂数判断
试题编号:2023-06-11-02-C-02
试题名称:自幂数判断
时间限制: 1.0s
内存限制: 128.0MB
【问题描述】
自幂数是指,一个 N 位数,满足各位数字 N 次方之和是本身。例如,153 是 3
位数,其每位数的 3 次方之和,13+53+33=153,因此 153 是自幂数;1634 是 4 位数,
其每位数的 4 次方之和,14+64+34+44=1634,因此 1634 是自幂数。
现在,输入若干个正整数,请判断它们是否是自幂数。
【输入描述】
输入第一行是一个正整数 M,表示有 M 个待判断的正整数。约定 1≤M≤100。
从第 2 行开始的 M 行,每行一个待判断的正整数。约定这些正整数均小于
108。
【输出描述】
输出 M 行,如果对应的待判断正整数为自幂数,则输出英文大写字母 T,否则
输出英文大写字母 F。
提示:不需要等到所有输入结束在依次输出,可以输入一个数就判断一个数并
输出,再输入下一个数。
【样例输入 1】
3
152
111
153
【样例输出 1】
F
F
T
【样例输入 2】
5
8208
548834
88593477
12345
5432
【样例输出 2】
T
T
T
F
F