GESP2023年3月 c++一级考试答案详解

本文详细解析了2023年3月C++一级考试中的单选题和判断题,涵盖输入设备、数据类型、变量、标识符、运算符、逻辑判断等内容,并提供了编程题的解题思路,帮助考生理解和巩固知识点。
摘要由CSDN通过智能技术生成

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

1.以下不属于计算机输入设备的有(B )。
A.键盘
B.音箱
C.鼠标
D.传感器
解释:这一题没什么好说的,A、C、D都是输入设备,而音箱不是输入设备,所以选B。

2.计算机系统中存储的基本单位用 B 来表示,它代表的是(A )。
A. Byte
B. Block
C. Bulk
D. Bit
解释:A Byte是字节,计算机存储信息的大小;B Block是数据库中的最小存储和处理单位;C Bulk是英文单词,意思为体积;D Bit是描述电脑数据量的最小单位。所以答案选择A。

3.常量 7.0 的数据类型是(A)。
A. double
B. float
C. void
D. int
解释:首先排除C与D,剩下A与B。c++中一般定义常量小数都是用double定义,在代码中也很少会用float。

4.下列关于 C++语言的叙述,不正确的是(C)。
A. 变量定义时可以不初始化
B. 变量被赋值之后的类型不变
C. 变量没有定义也能够使用
D. 变量名必须是合法的标识符
解释:c++的变量必须要经过定义才能使用,否则会出现代码错误。

5.以下不可以作为 C++标识符的是(B)。
A. x321 B. 0x321 C. x321_ D. _x321
解释:c++标识符定义规则:(1)只能包括英文字母,下划线与数字;(2)不能以数字开头;(3)不能定义已经是关键字的标识符(黑体字),如using、return等。

6.以下哪个不是 C++语言的关键字? (D)
A. int
B. for
C. do
D. cout
解释:关键字很好认,在编译器中是黑体的就是关键字。

7.如果 a、b 和 c 都是 int 类型的变量,下列哪个语句不符合 C++语法? (D)
A. c = a + b;
B. c += a + b;
C. c = a = b;
D. c = a ++ b;
解释:D选项中出现了两个加号,不符合c++语法。

8.如果用两个 int 类型的变量 a 和 b 分别表达长方形的长和宽,则下列哪个表达式不能用来计算长方形的周长? (A)
A. a + b * 2
B. 2 * a + 2 * b
C. a + b + a + b
D. b + a * 2 + b
解释:长方形周长=(长+宽)X2。

  1. 表达式((3 == 0) + ‘A’ + 1 + 3.0)的结果类型为(A)。
    A. double
    B. int
    C. char
    D. bool
    解释:(3==0)为bool型,'A’为字符型,’1‘为整形,’3.0‘为double型,因为式子中含有double型,所以最后的输出结果也会为double型。

10.如果 a 为 int 类型的变量,且 a 的值为 6,则执行 a = 3;之后,a 的值会是(D)。
A. 3
B. 6
C. 9
D. 18
解释:a
=3 == a=a*3

11.如果 a 和 b 均为 int 类型的变量,下列表达式不能正确判断“a 等于 0 且 b等于 0”的是(B)
A. (a == 0) && (b == 0)
B. (a == b == 0)
C. (!a) && (!b)
D. (a == 0) + (b == 0) == 2
解释:
A意思为:a等于0且b等于0
C意思为:a等于0且b等于0
D意思为:判断式a等于0+判断式b等于0等

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是C++代码实现: ``` #include <iostream> #include <algorithm> #include <cstring> using namespace std; const int MAXN = 55; struct Rectangle{ int w, h; }rect[MAXN]; int n, ans = 0; bool used[MAXN]; void dfs(int cnt, int w1, int h1, int w2, int h2){ if(cnt == 3){ if(w1 == w2 && h1 + h2 == w1) ans++; //判断是否符合条件 return; } for(int i = 1; i <= n; i++){ if(!used[i]){ used[i] = true; if(w1 >= rect[i].w && h1 >= rect[i].h) dfs(cnt+1, w1, h1, w2, h2); //放入第一块矩形 if(w1 >= rect[i].h && h1 >= rect[i].w) dfs(cnt+1, w1, h1, w2, h2); //放入第一块矩形 if(w2 >= rect[i].w && h2 >= rect[i].h) dfs(cnt+1, max(w1, rect[i].w), h1+rect[i].h, w2, h2); //放入第二块矩形 if(w2 >= rect[i].h && h2 >= rect[i].w) dfs(cnt+1, max(w1, rect[i].h), h1+rect[i].w, w2, h2); //放入第二块矩形 used[i] = false; } } } int main(){ cin >> n; for(int i = 1; i <= n; i++){ cin >> rect[i].w >> rect[i].h; } memset(used, false, sizeof(used)); dfs(0, 0, 0, 0, 0); cout << ans << endl; return 0; } ``` 思路解析: 这道题目可以使用 DFS(深度优先搜索)实现,对于每一个矩形,我们可以选择将其放入第一块矩形或者第二块矩形,然后递归搜索下一个矩形的情况,直到选出三个矩形为止。最后,我们只需要判断选出的三个矩形是否符合条件即可。 代码实现,我们使用一个结构体表示每个矩形的长和宽,用一个布尔数组记录每个矩形是否被使用过,然后使用 dfs 函数进行模拟。dfs 函数的参数 cnt 表示已经选出的矩形个数,参数 w1 和 h1 表示第一块矩形的长和宽,参数 w2 和 h2 表示第二块矩形的长和宽。在 dfs 函数,我们首先判断当前选出的矩形个数是否达到了三个,如果是,则判断是否符合条件,如果符合,则方案数加一。接着,我们遍历每一个矩形,如果该矩形没有被使用过,则分别考虑将其放入第一块矩形或者第二块矩形,然后递归搜索下一个矩形的情况。最后,记得将该矩形的使用状态重置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值