CCF编程能力等级认证GESP—C++1级—20240316

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

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

A. -13
B. 8 
C. 2 
D. 0

正确答案:B
( 3 − 2 ) ∗ 3 + 5 (3 - 2) * 3 + 5 (32)3+5
= 1 ∗ 3 + 5 =1 * 3 + 5 =13+5
= 3 + 5 =3 + 5 =3+5
= 8 =8 =8

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

A. 2 2
B. 1 1
C. 5%2=2 
D. 5%2=1

正确答案:D
该语句首先输出字符串 “5%2=”,然后输出 5 % 2 的结果,即 1。

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

A. 变量a将被赋值为整数7
B. 变量a将被赋值为字符串,字符串内容为5+2
C. 语句执行将报错,不能输入表达式
D. 依赖于变量a的类型。如果没有定义,会有编译错误

正确答案:D
如果变量 a 是整数类型,那么 cin >> a 会尝试从输入流中读取一个整数。在这种情况下,输入 5+2 会将5赋值给a。如果 a 定义为字符串类型,那么会读取整个 5+2 作为字符串。如果没有定义变量 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

正确答案:A
代码先输出字符串 "a+1= ",然后输出 a+1 的结果,即 2。

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

正确答案:B
printf 函数用于格式化输出。代码中的 %d 是一个占位符,表示要输出一个整数。因此,输出会是 a+1=2。

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

intN;
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()输入为字符串

正确答案:A
当输入21时,N = 21, N % 3 == 0成立,直接执行第四行代码,执行完第四行代码后直接跳出多分支语句

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

for(int i=-10; i<10; i++) 
	cout << i << " ";
A. 10 
B. 19 
C. 20 
D. 21

正确答案:C
循环从 i = -10 开始,到 i < 10 为止,每次迭代 i 增加 1。因此,循环会执行 20次(从 -10 到 9)。

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

正确答案:D

ii%3 && i%7tnt
0False
1true1
2true3
3false
4true7
5true12
6false
7false
8true 20 \color{red}{20} 20
9false

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#

正确答案:B

NN % 3 == 0输出列表
9true9#
8false
7false
6true9#6#
5false
4false
3true9#6#3#
2false
1false
0true9#6#3#0#

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

正确答案:B
要检查一个数是否为质数,需要检查它是否能被除了 1 和它本身以外的任何数整除。因此,应检查 N % i == 0 是否成立,以确定 N 是否能被 i 整除。

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

A. x=(3.16);
B. x=3.16;
C. x=int(3.16); 
D. x=3.16 int;

正确答案:D

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

A. printf语句
B. scanf语句 
C. default语句 
D. cout语句

正确答案:B
A选项:这是C++(以及C语言)中用于输出的函数,它用于格式化输出数据到标准输出设备(通常是屏幕),而不是用于输入。
B选项:这是C++(以及C语言)中用于从标准输入设备(通常是键盘)读取格式化输入的函数。因此,它可以完成数据输入。
C选项:这是switch语句中的一个关键字,用于处理switch语句中未被其他case匹配的情况,与数据输入无关。
D选项:在C++中,cout是与流插入运算符<<一起使用的,用于将数据输出到标准输出设备。它也不是用于输入的。

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

A. 创建
B. 编辑 
C. 编译 
D. 调试

正确答案:C
A选项:这通常指的是创建一个新的源文件或项目,而不是将源文件编译成可执行程序。
B选项:这是修改或编写源代码的过程,也不是生成可执行程序的直接步骤。
C选项:这是将源代码(如C++源文件)转换为可执行程序的过程。编译器读取源代码,检查语法和语义错误,并将代码转换为机器语言,生成可执行文件。
D选项:这是在代码存在错误或不符合预期行为时进行的步骤,用于找出并修复问题。它不是生成可执行程序的必要步骤。

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

A. 小程序
B. 计时器 
C. 操作系统 
D. 神话人物

正确答案:C
A选项:小程序通常指的是在微信、支付宝等平台上运行的小型应用程序,与鸿蒙无关。
B选项:计时器是一种用于测量时间的工具或功能,不是操作系统。
C选项:鸿蒙是华为开发的操作系统,用于其智能设备,包括手表。
D选项:鸿蒙在中国传统文化中有时被用作指代混沌初开、天地未分的状态,但这与华为手表上的鸿蒙操作系统无关。

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

A. 制造自动驾驶汽车
B. 创立培训学校
C. 发明汉字激光照排系统
D. 成立方正公司

正确答案:C
王选先生是中国计算机汉字激光照排技术的创始人,被誉为“汉字激光照排系统之父”。他的这项发明对中国印刷出版业产生了深远影响,极大地提高了印刷质量和效率。

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

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

正确答案:正确
% 是取模运算符,用于求余数。当变量 n 被赋值为 27 时,n % 10 的结果是 7,因为 27 除以 10 的余数是 7。因此,cout << n % 10 执行后会输出 7。

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

正确答案:正确
printf 函数是C++(以及C语言)中用于格式化输出的函数。在这个语句中,%d 是整数格式化占位符,它会被后面的参数值替换。因此,printf(“%d#%d&”,2,3) 会输出 2#3&。

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

正确答案:错误
scanf 函数在C++(以及C语言)中用于从标准输入设备读取格式化输入。scanf 的第一个参数确实是一个字符串型字面量,但它不是一个提示信息,而是一个格式控制字符串,用于指定输入数据的格式。后续的参数是指向变量的指针,用于存储输入的数据。scanf 函数本身并不提供提示输入的功能。

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

正确答案:正确
用双引号括起来的 “10” 是一个字符串字面量,而不是整数。字符串和整数不能直接进行乘法运算。尝试执行这样的运算会导致编译错误,因为编译器不知道如何对字符串和整数进行乘法运算。

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

正确答案:错误
无论是 while 循环还是 for 循环,都有可能成为死循环,取决于循环条件是否有可能变为 false。如果循环条件始终为 true,或者循环体内有代码会改变循环条件但始终不会使其变为 false,那么循环就会无限执行下去,形成死循环。

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

正确答案:错误
break 语句确实用于提前终止当前层次的循环,无论是 while 循环还是 for 循环。当 break 语句被执行时,循环会立即终止,程序会继续执行循环之后的代码。

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

正确答案:错误
3.0 是一个浮点数,而 3 是一个整数。虽然它们的值在数学意义上是相等的,但它们在计算机中的表示方式是不同的,因此它们占用的存储空间也可能不同。浮点数通常需要更多的存储空间来存储精度信息。

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

正确答案:正确
cin 是预定义的标准输入流对象,用于从标准输入设备(通常是键盘)读取数据。虽然 cin 看起来像是一个变量名,但它实际上是一个对象,而不是变量。然而,从语法的角度来看,cin 本身是一个合法的标识符,可以用作变量名(尽管这样做会覆盖预定义的 cin 对象,通常是不推荐的)。

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

正确答案:正确
根据描述,奶奶家的数字电视能够通过遥控器输入电视剧名称来查找和播放电视剧,这确实表明电视内部运行着某种交互式程序。这种程序能够接收和处理用户的输入,并根据输入执行相应的操作(如搜索和播放电视剧)。

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

正确答案:正确
for 循环和 while 循环在功能上是等价的,这意味着任何一个 for 循环都可以被重写为一个功能相同的 while 循环。for 循环的初始化、条件判断和迭代部分可以分别放在 while 循环之前、条件和循环体内部来实现相同的效果。

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

小杨买书

【问题描述】
小杨同学积攒了一部分零用钱想要用来购买书籍,已知一本书的单价是13元,请根据小杨零用钱的金额,编写程序
计算最多可以购买多少本书,还剩多少零用钱。
【输入描述】
输入一个正整数 ,表示小杨拥有的零用钱数。
【输出描述】
输出包含两行,第一行,购买图书的本书,第二行剩余的零用钱数。
【样例输入 1】
100
【样例输出 1】
7
9
【样例输入 2】
199
【样例输出 2】
15
4
对于全部数据,保证有 0 < m < 200。

#include <iostream>

using namespace std;

int main(){
    int a;
    cin >> a;
    cout << a / 13 << endl;
    cout << a % 13 << endl;
    return 0;
}

找因数

【问题描述】
小A最近刚刚学习了因数的概念,具体来说,如果一个正整数a可以被另一个正整数b整除,那么我们就说b是a的因数。
请你帮忙写一个程序,从小到大输出正整数a的所有因数。
【输入描述】
输入一行一个正整数a。保证a<=1,000。
【输出描述】
输出若干行,为a的所有约数,从小到大排列。
【特别提醒】
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
【样例输入 1】
1
【样例输出 1】
1
【样例输入 2】
6
【样例输出 2】
1
2
3
6
【样例输入 3】
10
【样例输出 3】
1
2
5
10

#include <iostream>

using namespace std;

int main(){
    int a;
    cin >> a;
    for (int i = 1; i <= a; i++){
        if (a % i == 0)
            cout << i << endl;
    }
    return 0;
}
  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青岛少儿编程-王老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值