GESP C++ 2024年03月一级真题卷

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

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

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

答案:B

解析:略

2 C++ 语句 cout << "5%2=" << 5 % 2 执行后的输出是 (  )。
A. 2 2
B. 1 1
C. 5%2=2
D. 5%2=1

答案:D

解析:略

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

答案:D

解析:

4 下面 C++ 代码执行后的输出是( )。
A. a+1= 2
B. a+1=2
C. 2=2
D. 2= 2

答案:A

解析:粗看感觉A,B都对,主要选项A 等于号后面多了个空格,因为代码中的双引号

"a+1= "是这样的
5 下面 C++ 代码执行后的输出是( )。
A. a+1= 2
B. a+1=2
C. 2=2
D. 2= 2

答案:B

解析:参考第4题,主要是仔细看

6 下面 C++ 代码执行时输入 21 后,有关描述正确的是( )。
A. 代码第 4 行被执行
B. 4 和第 7 行代码都被执行
C. 仅有代码第 7 行被执行
D. 8 行代码将被执行,因为 input() 输入为字符串

答案:A

解析:分支结构,选择符合要求的语句执行,21能被3整除,所以执行第4行

7 下面 C++ 代码第 2 行,总共被执行次数是( )。
A. 10
B. 19
C. 20
D. 21

答案:B

解析:从-10到9,注意中间还有0

8 下面 C++ 代码执行后的输出是( )。
A. 0
B. 7
C. 18
D. 20

答案:D

解析:

分析:

  1. 初始化变量 tnt = 0

  2. for 循环从 i = 0 开始,i 每次递增 1,直到 i = 9(因为 i < 10)。

  3. 在每次循环中,检查 i % 3i % 7 的结果是否都不为零。

    • i % 3 计算 i 除以 3 的余数。
    • i % 7 计算 i 除以 7 的余数。
    • 如果 i % 3 不为零且 i % 7 不为零,则执行 tnt += i;

逐步计算:

  • i = 0 时,i % 3 = 0,条件不满足,不执行加法。
  • i = 1 时,i % 3 = 1i % 7 = 1,条件满足,tnt += 1tnt = 1
  • i = 2 时,i % 3 = 2i % 7 = 2,条件满足,tnt += 2tnt = 3
  • i = 3 时,i % 3 = 0,条件不满足,不执行加法。
  • i = 4 时,i % 3 = 1i % 7 = 4,条件满足,tnt += 4tnt = 7
  • i = 5 时,i % 3 = 2i % 7 = 5,条件满足,tnt += 5tnt = 12
  • i = 6 时,i % 3 = 0,条件不满足,不执行加法。
  • i = 7 时,i % 7 = 0,条件不满足,不执行加法。
  • i = 8 时,i % 3 = 2i % 7 = 1,条件满足,tnt += 8tnt = 20
  • i = 9 时,i % 3 = 0,条件不满足,不执行加法。
9 下面 C++ 代码执行后的输出是( )。
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

解析:

分析:

  1. 初始化变量 N = 10
  2. while(N) 循环在 N 不为零的情况下持续执行。
  3. 每次循环中,N 减 1,然后检查 N % 3 == 0
    • N % 3 计算 N 除以 3 的余数。
    • 如果 N % 3 == 0,则输出 N 的值,后跟 #

逐步计算:

  • 初始 N = 10
    • N -= 1 -> N = 9
    • N % 3 == 0 (因为 9 % 3 == 0),输出 9#
  • N = 9
    • N -= 1 -> N = 8
    • N % 3 != 0 (因为 8 % 3 == 2),不输出。
  • N = 8
    • N -= 1 -> N = 7
    • N % 3 != 0 (因为 7 % 3 == 1),不输出。
  • N = 7
    • N -= 1 -> N = 6
    • N % 3 == 0 (因为 6 % 3 == 0),输出 6#
  • N = 6
    • N -= 1 -> N = 5
    • N % 3 != 0 (因为 5 % 3 == 2),不输出。
  • N = 5
    • N -= 1 -> N = 4
    • N % 3 != 0 (因为 4 % 3 == 1),不输出。
  • N = 4
    • N -= 1 -> N = 3
    • N % 3 == 0 (因为 3 % 3 == 0),输出 3#
  • N = 3
    • N -= 1 -> N = 2
    • N % 3 != 0 (因为 2 % 3 == 2),不输出。
  • N = 2
    • N -= 1 -> N = 1
    • N % 3 != 0 (因为 1 % 3 == 1),不输出。
  • N = 1
    • N -= 1 -> N = 0
    • N % 3 == 0 (因为 0 % 3 == 0),输出 0#
  • N = 0
    • 循环结束(因为 N = 0,条件 while(N) 不再满足)。
10 下面 C++ 代码用于判断键盘输入的整数是否为质数。质数是只能被 1 和它本身整除的数。在横线处应填入代码是( )。
A. N % i
B. N % i == 0
C. N / i == 0
D. N / i

答案:B

解析:根据题目横线上应该填写,N是否能被i整除,质数是只能被1和它本身整除的数,如果cnt是2,那么就是质数,否则就不是质数

11 下面关于整型变量 int x 的赋值语句不正确是 ( )
A. x=(3.16);
B. x=3.16;
C. x=int(3.16);
D. x=3.16 int;

答案:D

解析:

  • A. x=(3.16); 虽然有括号,但没有语法错误,这将把 3.16 隐式转换为整数 3,然后赋值给 x
  • B. x=3.16; 将 3.16 隐式转换为整数 3,然后赋值给 x
  • C. x=int(3.16); 先将 3.16 显式转换为整数 3,再赋值给 x
12 C++ 语言中下面可以完成数据输入的语句是( )。
A. printf 语句
B. scanf 语句
C. default 语句
D. cout 语句

答案:B

解析:略

13 Dev C++ 中对一个写好的 C++ 源文件要生成一个可执行程序需要执行下面哪个处理步骤?( )
A. 创建
B. 编辑
C. 编译
D. 调试

答案:C

解析:略

14 小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?()
A. 小程序
B. 计时器
C. 操作系统
D. 神话人物

答案:C

解析:略

15 中国计算机学会( CCF )在 2024 1 27 日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是( )。
A. 制造自动驾驶汽车
B. 创立培训学校
C. 发明汉字激光照排系统
D. 成立方正公司

答案:C

解析:略

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

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

答案:对

解析:略

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

答案:对

解析:略

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

答案:错

解析:

在 C++ 中,scanf() 函数的参数必须是格式化字符串,用于指定如何读取输入的数据。虽然格式化字符串通常是一个字符串型字面量,但这个字符串不是用来提示输入的,而是用来指定如何解释输入数据。例如,"%d" 用于读取一个整数,"%f" 用于读取一个浮点数。

另外,scanf() 的功能不是提示输入,而是从标准输入中读取数据并将其存储到指定的变量中。提示输入通常是通过 printf()cout 实现的,而不是 scanf()

因此,正确的说法应该是:scanf() 函数的参数必须包含一个格式化字符串,用于指定如何读取输入的数据。scanf() 的功能是从标准输入读取数据,并将其存储到相应的变量中,而不是提示输入。

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

答案:对

解析:略

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

答案:错

解析:while可能是死循环,而for循环也可能是死循环。

#include <iostream>

int main() {
    for (;;) {
        std::cout << "This is an infinite loop!" << std::endl;
    }
    return 0;
}
6 C++ break 语句用于提前终止当前层次循环,适用于 while 循环,但不适用于 for 循环。( )

答案:错

解析:

在 C++ 中,break 语句可以用于提前终止当前层次的循环,并且它不仅适用于 while 循环,还同样适用于 for 循环。

正确的解释:

  • break 语句用于立即退出包含它的循环,不论该循环是 for 循环、while 循环还是 do-while 循环。
  • 一旦执行了 break 语句,程序会跳出当前循环,继续执行循环后面的代码。
7 C++ 语言中 3.0 3 的值相等,所以它们占用的存储空间也相同。( )

答案:错

解释:

  • 在 C++ 中,33.0 是不同的数据类型。3 是一个整数(int 类型),而 3.0 是一个浮点数(double 类型)。
  • 虽然在数值上它们是相等的,但由于它们的数据类型不同,所占用的存储空间也不同。

存储空间:

  • int 类型通常占用 4个字节(32位),但这可能会因平台或编译器的不同而有所不同。
  • double 类型通常占用 8个字节(64位),用来表示更大的范围和更精确的数值。

因此,虽然 33.0 在值上相等,但它们的数据类型和所占用的存储空间是不同的。

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

答案:对

解析:

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

答案:对

解析:略

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

答案:对

解析:略

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

编程题 1

试题名称 :小杨买书
3.1.1
题面描述
小杨同学积攒了一部分零用钱想要用来购买书籍,已知一本书的单价是 13 元,请根据小杨零用钱的金额,编写程序计算最多可以购买多少本书,还剩多少零用钱。
3.1.2 输入格式
输入一个正整数m ,表示小杨拥有的零用钱数。
3.1.3 输出格式
输出包含两行,第一行,购买图书的本书,第二行剩余的零用钱数。
3.1.4 样例 1
3.1.5 样例 2
3.1.6 参考程序
#include<bits/stdc++.h>
using namespace std;
int main(){
	int m;
	cin >> m;
	cout << m / 13 << endl;
	cout << m % 13 << endl;
	return 0;
} 

编程题 2

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

 

3.2.11 参考程序
#include<bits/stdc++.h>
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;
} 

 

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值