image

编辑人: 流年絮语

calendar2025-06-15

message6

visits607

2024年3月CCF-GESP编程能力等级认证C++编程一级真题答案及解析

一、单选题

1、C++表达式 (3 - 2) * 3 + 5 的值是(   )。

A -13

B 8

C 2

D 0

解析:【喵呜刷题小喵解析】
表达式(3 - 2) * 3 + 5 的计算步骤如下:
1. 先进行括号内的计算,3 - 2 = 1。
2. 将结果乘以3,即 1 * 3 = 3。
3. 最后将3加上5,即 3 + 5 = 8。
所以,表达式(3 - 2) * 3 + 5 的值是8。

2、C++语句 cout << "5%2=" << 5 % 2 执行后的输出是(   )。

A 2 2

B 1 1

C 5%2=2

D 5%2=1

解析:【喵呜刷题小喵解析】在C++中,`%`是取模运算符,用于计算两个数相除后的余数。在这个语句中,`5 % 2`计算的是5除以2的余数,结果是1。然后,`cout << "5%2=" << 5 % 2;`语句会先输出字符串"5%2=",然后输出5除以2的余数1。因此,执行后的输出是"5%2=1"。选项D正确。

3、执行C++语句 cin >> a 时如果输入5+2,下述说法正确的是(   )。

A 变量a将被赋值为整数7

B 变量a将被赋值为字符串,字符串内容为5+2

C、语句执行将报错,不能输入表达式

D、依赖于变量a的类型。如果没有定义,会有编译错误

解析:【喵呜刷题小喵解析】在C++中,`cin`是用于从标准输入读取数据的流对象,`>>`是插入运算符,用于从`cin`读取数据。当执行`cin >> a;`时,程序期望从标准输入读取一个值,并将其赋给变量`a`

4、下面C++代码执行后的输出是(   )。

int a = 1;
cout << "a+1= " << a+1 << endl;

A a+1= 2

B a+1=2

C 2=2

D 2= 2

解析:【喵呜刷题小喵解析】:C++代码执行后,会先输出字符串"a+1= ",然后输出变量a的值加1,即1+1=2,最后输出endl,即换行。所以,输出结果为"a+1= 2"。选项A中的输出与代码执行结果一致,故选A。

5、下面C++代码执行后的输出是(   )。

int a = 1;
printf("a+1=%d\n", a+1);

A a+1= 2

B a+1=2

C 2=2

D 2= 2

解析:【喵呜刷题小喵解析】:在C++中,printf函数的第一个参数是一个格式化字符串,其中的%d会被后面的参数替换。在这个例子中,printf函数的第二个参数是a+1,即2。因此,printf函数会输出"a+1=2",而不是"2=2"。所以,选项A是正确的。

6、下面C++代码执行时输入21后,有关描述正确的是(   )。

int N;
cin >> N;
if(N% 3 == 0)
cout << "能被3整除";
else if (N % 7 == 0)
cout << "能被7整除";
else
cout << "不能被3和7整除";
cout << endl;

A 代码第4行被执行

B 第4和第7行代码都被执行

C 仅有代码第7行被执行

D 第8行代码将被执行,因为input()输入为字符串

解析:【喵呜刷题小喵解析】根据给定的C++代码,程序首先读取用户输入的整数N,然后检查N是否能被3整除。如果N能被3整除,则执行第4行代码,输出“能被3整除”。由于输入的N为21,可以被3整除,所以第4行代码将被执行。接下来,程序不会进入else if语句,因此第7行代码不会被执行。最后,程序会执行第8行代码,输出结束符endl。因此,正确答案是A,即代码第4行被执行。

7、下面C++代码第2行,总共被执行次数是( C )。

for(int i=-10; i<10; i++)
	cout << i << " ";

A 10

B 19

C 20

D 21

解析:【喵呜刷题小喵解析】:for循环的初始化语句中,i的初始值为-10,终止条件为i<10,所以循环会执行从-10到9的循环,总共执行20次。所以,第2行的代码总共被执行20次,选项C正确。

8、下面C++代码执行后的输出是(   )。

int tnt = 0;
for(int i=0; i<10; i++)
	if(i%3 && i%7)
		tnt +=i;
cout << tnt << endl;

A 0

B 7

C 18

D 20

解析:【喵呜刷题小喵解析】:代码中存在语法错误,导致无法正确编译。但在假设代码没有语法错误的情况下,我们来分析代码的执行过程。

首先,定义了一个整型变量`tnt`并初始化为0。

然后,有一个for循环,循环变量为`i`,从0到9。

在循环体内,有一个if语句,条件是`i%3 && i%7`。这个条件的意思是`i`除以3的余数不为0且`i`除以7的余数不为0。

当`i`为3或7的倍数时,`i%3`或`i%7`的结果为0,`&&`运算的结果为0,所以if语句不成立,`tnt`的值不会改变。

当`i`不是3或7的倍数时,`i%3`和`i%7`的结果都不为0,`&&`运算的结果为1,所以if语句成立,执行`tnt += i;`,将`i`的值加到`tnt`上。

因此,在循环结束后,`tnt`的值应为所有满足条件的`i`值的和。经过计算,满足条件的`i`有0, 2, 4, 5, 8,它们的和为18。

最后,输出`tnt`的值,即18。

但是,由于题目中的代码存在语法错误,无法编译和运行,所以实际上无法得到任何输出。正确的代码应该是:


```cpp
#include
using namespace std;

int main() {
int tnt = 0;
for(int i=0; i<10; i++)
if(i%3 && i%7)
tnt +=i;
cout << tnt << endl;
return 0;
}
```
这样,程序会输出18。

9、下面C++代码执行后的输出是(   )。

int N = 10;
while(N){
	N -= 1;
	if(N%3 == 0)
		cout << N << "#";
}

A 9#6#3#

B 9#6#3#0#

C 8#7#5#4#2#1#

D 10#8#7#5#4#2#1#

解析:【喵呜刷题小喵解析】:在C++代码中,定义了一个整数N并初始化为10。然后,进入while循环,每次循环N减1,直到N为0。在循环中,判断N是否为3的倍数,如果是,则输出N和"#"。

当N=10时,N不是3的倍数,所以什么也不输出。

当N=9时,N不是3的倍数,所以什么也不输出。

当N=8时,N不是3的倍数,所以什么也不输出。

当N=7时,N不是3的倍数,所以什么也不输出。

当N=6时,N是3的倍数,所以输出6#。

当N=5时,N不是3的倍数,所以什么也不输出。

当N=4时,N不是3的倍数,所以什么也不输出。

当N=3时,N是3的倍数,所以输出3#。

当N=2时,N不是3的倍数,所以什么也不输出。

当N=1时,N不是3的倍数,所以什么也不输出。

当N=0时,N不是3的倍数,所以什么也不输出。

因此,输出的结果是"6#3#",但选项中并没有这个选项,所以可能是题目或选项出错了。从逻辑上分析,如果选项正确,那么应该是8#5#2#,因为当N为8,5,2时,N是3的倍数。但是,题目给出的选项C是"8#7#5#4#2#1#",这与逻辑分析不符。所以,可能需要重新检查题目或选项。

10、下面C++代码用于判断键盘输入的整数是否为质数。质数是只能被1和它本身整除的数。在横线处应填入代码是(   )。

int N;
cin >> N;
int cnt = 0; // 记录N被整除的次数
for(int i=1; i<N+1; i++)
	if(________________)
		cnt +=1;
if(cnt == 2)
	cout << N << "是质数";
else
	cout << N << "不是质数";

A N % i

B N % i == 0

C N / i == 0

D N / i

解析:【喵呜刷题小喵解析】:在判断一个数是否为质数时,我们需要检查这个数是否能被1和它本身以外的其他数整除。在C++中,判断一个数是否能被另一个数整除,通常使用模运算符(%)来判断余数是否为0。因此,在横线处应填入的代码是"N % i == 0",即选项B。如果N能被i整除(N % i == 0),则将计数器cnt加1。最后,如果计数器cnt等于2(即N只能被1和它本身整除),则输出N是质数,否则输出N不是质数。

11、下面关于整型变量int x的赋值语句不正确是(   )。

A x=(3.16);

B x=3.16;

C x=int(3.16);

D x=3.16 int;

解析:【喵呜刷题小喵解析】在C语言中,整型变量只能存储整数,不能存储浮点数。对于选项D,“x=3.16 int”这样的赋值语句是不正确的,因为这里尝试将浮点数3.16赋值给整型变量x,而C语言没有这种将浮点数直接转换为整型的写法。选项A、B和C都是正确的赋值语句,分别表示将3.16截断为整数3赋值给x,将浮点数3.16赋值给x,以及将浮点数3.16转换为整数3并赋值给x。

12、C++语言中下面可以完成数据输入的语句是(   )。

A printf语句

B scanf语句

C default语句

D cout语句

解析:【喵呜刷题小喵解析】:在C++语言中,用于数据输入的语句是scanf语句。printf语句用于输出数据,cout语句也用于输出数据,但它们与scanf不同,不是用于输入的。default语句是switch语句中的一个特殊标签,用于指定当所有其他case标签都不匹配时要执行的代码块,与输入无关。因此,正确答案是scanf语句。

13、在Dev C++中对一个写好的C++源文件要生成一个可执行程序需要执行下面哪个处理步骤?(   )

A 创建

B 编辑

C 编译

D 调试

解析:【喵呜刷题小喵解析】:在Dev C++中,对一个写好的C++源文件要生成一个可执行程序,需要执行编译步骤。这是因为编译是将源代码转换为机器语言的过程,生成可执行文件需要编译器将源代码翻译成机器语言,然后链接器将各个编译单元链接在一起,生成可执行文件。因此,选项C“编译”是正确的。其他选项如创建、编辑和调试虽然也是软件开发过程中的重要步骤,但不是生成可执行文件所必需的步骤。

14、小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?(   )

A 小程序

B 计时器

C 操作系统

D 神话人物

解析:【喵呜刷题小喵解析】:题目中提到小杨的手表上跑的是“鸿蒙”,而选项中只有“操作系统”与“鸿蒙”相关。因此,正确答案是C,即“操作系统”。

15、中国计算机学会(CCF)在2024年1月27日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是( )。

A、

制造自动驾驶汽车

B、

创立培训学校

C、

发明汉字激光照排系统

D、

成立方正公司

解析:【喵呜刷题小喵解析】:王选先生是中国计算机学会的重要人物,他在计算机领域做出了重大贡献。根据题目中的选项,我们需要找到与王选先生相关的重大贡献。制造自动驾驶汽车、创立培训学校、成立方正公司都不是王选先生的主要贡献。而发明汉字激光照排系统是与王选先生紧密相关的,这是他在计算机领域的重要成就之一。因此,正确答案是C。

二、判断题

16、在C++代码中变量n被赋值为27,则 cout << n%10 执行后输出的是7。(   )

A 正确

B 错误

解析:【喵呜刷题小喵解析】在C++中,`n%10`表示取n除以10的余数。在本题中,n的值为27,所以27除以10的余数为7。因此,`cout << n%10`的执行结果应该是7,所以该题判断正确。

17、C++语句 printf("%d#%d&",2,3) 执行后输出的是2#3&。 (   )

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在C++中,printf函数用于格式化输出。在printf函数中的"%d"是一个占位符,用于表示要输出的整数。在printf("%d#%d&",2,3)中,第一个%d会被2替换,第二个%d会被3替换。同时,&符号在printf中需要被转义,所以需要使用&来表示&。因此,printf("%d#%d&",2,3)的输出结果是2#3&,所以答案是A。

18、C++函数scanf()必须含有参数,且其参数为字符串型字面量,其功能是提示输入。(   )

A 正确

B 错误

解析:【喵呜刷题小喵解析】:C++中的scanf函数是用于从标准输入(通常是键盘)读取格式化输入的函数。它的参数通常包括一个格式字符串和一个或多个变量地址,而不是字符串型字面量。格式字符串用于指定输入数据的格式,而变量地址用于存储输入的数据。因此,题目中的描述是不准确的。

19、C++表达式 "10"*2 执行时将报错,因为 "10" 是字符串类型而2是整数类型,它们数据类型不同,不能在一起运算。(   )

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在C++中,表达式"10"*2实际上是将字符串"10"当作字符数组来处理,然后执行乘法操作。每个字符在ASCII码表中对应一个数值,'1'的ASCII值是49,'0'的ASCII值是48。因此,"10"在内存中被当作一个字符数组,其首字符的ASCII值是49,次字符的ASCII值是48,整个字符数组(即字符串"10")的ASCII值总和是 98(49+49)。执行"10"*2操作,实际上是计算98的两倍,即196。所以,这个表达式并不会报错,它会得到结果196。因此,题目中的说法是错误的。

20、在C++中,while可能是死循环,而for循环不可能是死循环。(   )

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在C++中,while和for循环都有可能成为死循环。死循环是指循环条件永远为真,导致循环无法结束。对于while循环,如果循环条件始终为真,那么循环就会无限进行下去,形成死循环。同样,对于for循环,如果循环条件始终为真,或者循环体内修改了用于控制循环的变量,使得循环条件始终为真,那么也会形成死循环。因此,说"for循环不可能是死循环"是不准确的。

21、在C++,break语句用于提前终止当前层次循环,适用于while循环,但不适用于for循环。(   )

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在C++中,`break`语句确实用于提前终止当前层次循环,不仅适用于`while`循环,也适用于`for`循环。这个语句可以在`while`循环和`for`循环中使用,来中断循环的执行并跳出循环体。因此,题目中的说法是不准确的。

22、C++语言中3.0和3的值相等,所以它们占用的存储空间也相同。(   )

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在C++语言中,3.0和3的值虽然相等,但它们的数据类型不同。3.0是一个浮点数(double类型),而3是一个整数(int类型)。由于数据类型不同,它们在计算机中存储的方式和所占用的存储空间也不同。浮点数需要更多的存储空间来保存其精度,因此3.0占用的存储空间通常比3要多。因此,题目的陈述是错误的。

23、在C++的程序中,cin是一个合法的变量名。(   )

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在C++中,`cin`不是一个合法的变量名。`cin`是C++标准库中的一个流对象,用于从标准输入(通常是键盘)读取数据。它不是一个变量,而是一个预定义的输入流对象。因此,题目中的说法是错误的。

24、小杨今年春节回奶奶家了,奶奶家的数字电视可以通过遥控器输入电视剧名称来找到想播放的电视剧,所以可以推知里面有交互式程序在运行。(   )

A 正确

B 错误

解析:【喵呜刷题小喵解析】:小杨奶奶家的数字电视可以通过遥控器输入电视剧名称来找到想播放的电视剧,说明这个电视系统有能够识别并响应用户输入的功能,这种功能通常需要交互式程序来实现。因此,可以推断出小杨奶奶家的数字电视中有交互式程序在运行。

25、任何一个for循环都可以转化为等价的while循环(   )。

A 正确

B 错误

解析:【喵呜刷题小喵解析】:在编程中,for循环和while循环都是用来重复执行一段代码块的。虽然它们的语法和用法有所不同,但它们在逻辑上是等价的。也就是说,任何一个for循环都可以转化为等价的while循环,反之亦然。因此,题目的陈述是正确的。

三、实操题

26、小杨买书

题面描述

小杨同学积攒了一部分零用钱想要用来购买书籍,已知一本书的单价是13元,请根据小杨零用钱的金额,编写程序

计算最多可以购买多少本书,还剩多少零用钱。

输入格式

输入一个正整数m,表示小杨拥有的零用钱数。

输出格式

输出包含两行,第一行,购买图书的本书,第二行剩余的零用钱数。


样例输入1

100

样例输出1

7
9

样例输入2

199

样例输出2

15
4

参考答案:br />```pythonm = int(input())count = m // 13remain = m % 13print(count)print(remain)```

解析:【喵呜刷题小喵解析】
这个问题可以使用整除和取余来解决。输入零用钱m,除以一本书的单价13,得到的商即为最多可以购买的书的数量,用m对13取余,得到的即为剩余的零用钱。由于Python的除法默认为整除,因此直接用"/"进行除法运算即可得到最多可以购买的书的数量。最后将计算结果分别打印即可。

27、找因数

问题描述

小 A 最近刚刚学习了因数的概念,具体来说,如果一个正整数a可以被另一个正整数b整除,那么我们就说b是a的因数。

请你帮忙写一个程序,从小到大输出正整数a的所有因数。

输入描述

输入一行一个正整数a。保证a≤1000。

输出描述

输出若干行,为a的所有约数,从小到大排列。

特别提醒

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。


样例输入 1

1

样例输出 1

1


样例输入 2

6

样例输出 2

1
2
3
6

样例输入 3

10

样例输出 3

1
2
5
10


参考答案:br />```pythonn = int(input())for i in range(1, n+1):if n % i == 0:print(i)```

解析:【喵呜刷题小喵解析】

题目要求从小到大输出正整数a的所有因数。首先,需要读入一个正整数a,然后从小到大遍历从1到a的所有整数,判断是否能被a整除,如果能,则输出该整数。

具体来说,代码实现如下:

1. 读入一个正整数n,表示需要找因数的数。
2. 使用for循环遍历从1到n的所有整数,判断是否能被n整除。
3. 如果能整除,则输出该整数。

需要注意的是,在输出时,不要附带任何提示信息,直接输出即可。

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2024年3月CCF-GESP编程能力等级认证C++编程一级真题答案及解析

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share