C++ ⼀级 2023 年 12 ⽉

C++ ⼀级 2023 年 12 ⽉

一、单选题

1.【单选题】以下C++不可以作为变量的名称的是( )。

ACCF GESP

BccfGESP

CCCFgesp

DCCF_GESP

正确答案:A

c++标识符(变量等)的定义规则:

(1)只能包括英文字母,下划线与数字;当然绝对不能有空格;

(2)不能以数字开头;

(3)不能定义已经是关键字/保留字的标识符(黑体字),如using、return等,详见C++保留字。

注意:关键字很好认,在编译器中是黑体的就是关键字,拿不准就放到编译器里面试试看。答案选A。

2.【单选题】C++表达式 10 - 3 * (2 + 1) % 10的值是( )。

A0

B1

C2

D3

正确答案:B

根据C++中的运算符优先级,表达式的计算过程如下:

首先,计算括号内的表达式(2+1),结果为3。

接下来,计算乘法运算3*3,结果为9。

然后,计算减法运算10-9,结果为1。

最后,计算取模运算1%10,结果为1。

因此,表达式10-3*(2+1)%10的值是1。答案选B。

3.【单选题】假设现在是上午⼗点,求出N⼩时(正整数)后是第⼏天⼏时,如输⼊20⼩时则为第2天6点,如N输⼊4则为今天14点。为实现相应功能,应在横线处填写代码是( )。

复制代码
int N, dayX, hourX;
cin >> N;
dayX = , hourX = ;
if (dayX == 0)
    cout << "今天" << hourX << "点";
else
    cout << "第" << (dayX + 1) << "天" << hourX << "点";

A(10 + N) % 24 , (10 + N) / 24

B(10 + N) / 24 , (10 + N) % 24

CN % 24, N / 24

D10 / 24 , 10 % 24

正确答案:B

4.【单选题】下⾯的程序⽤于判断N是否为偶数,横线处应填写代码是( )。

复制代码
cin >> N;
if ( )
    cout << "偶数";
else
    cout << "奇数";

AN % 2 == 0

BN % 2 = 0

CN % 2

DN % 2 != 0

正确答案:A

5.【单选题】下⾯对C++代码执⾏后输出的描述,正确的是( )。

复制代码
cin >> N;
cnt = 0;
for (int i = 1; i < N; i++)
    cnt += 1;
cout << cnt;

A如果输⼊的N是⼩于等于2整数,第5⾏将输出0

B如果输⼊的N是⼤于等于2整数,第5⾏将输出N-1

C如果输⼊的N是⼤于等于2整数,第5⾏将输出N

D以上说法均不正确

正确答案:B

6.【单选题】下⾯C++代码执⾏后的输出是( )。

复制代码
cnt = 0;
for (int i = 1; i < 10; i++) {
    cnt += 1;
    i += 2;
}
cout << cnt;

A10

B9

C3

D1

正确答案:C

7.【单选题】下⾯C++代码执⾏后的输出是( )。

复制代码
cnt = 0;
for (int i = 1; i < 20; i++) {
    if (i % 2) continue;
    else if (i % 3 == 0 && i % 5 == 0) {
        cnt += i;
        break;
    }
}
cout << cnt;

A90

B44

C20

D10

正确答案:A

8.【单选题】下⾯C++代码执⾏后的输出是( )。

复制代码
N = 10;
cnt = 0;
while (1) {
    if (N == 0) break;
    cnt += 1;
    N -= 2;
    cout << cnt;
}

A11

B10

C5

D4

正确答案:C

9.【单选题】下⾯C++代码⽤于判断⼀个数是否为质数(素数),在横线处应填⼊代码是( )。

复制代码
cin >> N;
cnt = 0;
for (int i = 1; i < N + 1; i++) {
    if (N % i == 0)
        ;
}
if (cnt == 2)
    cout << N << "是质数。";
else
    cout << N << "不是质数。";

Acnt = 1

Bcnt = 2

Ccnt =+ 1

Dcnt += 1

正确答案:D

10.【单选题】对下⾯的代码,描述正确的是( )。

复制代码
#include <stdlib.h>
using namespace std;

int main() {
    int arr[] = {2, 6, 3, 5, 4, 8, 1, 0, 9, 10};
    for (int i = 0; i < 10; i++)
        cout << arr[i] << " ";
    cout << i << endl;
    cout << endl;
    return 0;
}

A输出 2 6 3 5 4 8 1 0 9 10 10

B输出2 6 3 5 4 8 1 0 9 9

C输出2 6 3 5 4 8 1 0 9 10

D提⽰有编译错误

正确答案:D

for()循环结束后,()内的变量会回收。答案选D。

11.【单选题】执⾏下⾯C++代码后输出是( )。

复制代码
cnt = 0;
for (i = 10; i > 3; i -= 3) {
    cout << cnt;
    cnt = cnt + i;
}

A3

B21

C27

D49

正确答案:B

12.【单选题】定义变量char c ,下⾯对c赋值的语句,不符合语法的是( )。

Ac = (char)66;

Bc = (char)(66);

Cc = char(66);

D c = char 66;

正确答案:D

在C++中,类型转换使用圆括号()或者使用static_cast等显式类型转换运算符来完成。选项D中的赋值语句c= char 6,缺少了圆括号,无法正确进行类型转换。答案选D。

13.【单选题】下图所⽰C++代码对⼤写字母'A' 到 'Z' 分组,对每个字母输出所属的组号,那么输⼊ 'C' 时将输出的组号是?( )。

复制代码
cnt = 0;
for (i = 10; i > 3; i -= 3) {
    cout << cnt;
    cnt = cnt + i;
}

A3

B3 5

C3 5 9

D以上都不对

正确答案:B

察switch(){case: ... ;}知识点。答案选B。

switch语句必须遵循下面的规则:

● switch 语句中的 expression 是一个常量表达式,必须是一个整型或枚举类型。

● 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。

● case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。

● 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。

● 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行,即,跳出switch()。

●不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。

●一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。

14.【单选题】 某公司新出了⼀款⽆⼈驾驶的⼩汽车,通过声控智能驾驶系统,乘客只要告诉汽车⽬的地,车⼦就能⾃动选择⼀条优化路线,告诉乘客后驶达那⾥。请问下⾯哪项不是驾驶系统完成选路所必须的。( )

A麦克风

B扬声器

C油量表

D传感器

正确答案:C

15.【单选题】现代计算机是指电⼦计算机,它所基于的是( )体系结构。

A艾伦·图灵

B冯·诺依曼

C阿塔纳索夫

D埃克特·莫克利

正确答案:B

二、判断题

16.【判断题】C++表达式int(3.14)的值为3。( )

A正确

B错误

正确答案:A

正确。在C++中,使用int关键字可以进行整数类型的强制类型转换。在表达式int(3.14)中,将浮点数3.14强制转换为整数类型,会截断小数部分,结果为3。因此,该表达式的值为3。

17.【判断题】C++语句cout << (2 * 3, 3 % 10, 2+3)的输出为6,3,5。 ( )

A正确

B错误

正确答案:B

错误。在该语句中,使用逗号运算符,将多个表达式组合在一起。逗号运算符的规则是依次计算每个表达式,并返回最后一个表达式的结果。对于表达式(23,3%10,2+3),逗号运算符会按顺序计算每个表达式。首先计算23,结果为6。然后计算3%10,结果为3。最后计算2+3,结果为5。

18.【判断题】for(int i = 1; i < 10; i += 3) ;表⽰i从1开始到10结束间隔为3,相当于1、4、7、10。( )

A正确

B错误

正确答案:B

错误。在给定的for循环语句中,循环体部分为空,即只有一个分号;。这意味着在每次循环迭代时,循环体内不执行任何操作,直接跳过。循环的迭代过程如下:

初始化:i=1

条件判断:检查<10,条件为真,继续循环

循环体:为空,跳过

循环迭代:i+=3,即i=i+3,此时i的值变为4

条件判断:检查i<10,条件为真,继续循环

循环体:为空,跳过

循环迭代:i+=3,即i=i+3,此时i的值变为7

条件判断:检查i<10,条件为真,继续循环

循环体:为空,跳过

循环迭代:i+=3,即i=i+3,此时i的值变为10

条件判断:检查i<10,条件为假,循环结束

因此,该循环语句中的实际迭代结果为1、4、7,而不包括10。所以给定的判断是错误的。

19.【判断题】C++表达式010+100+001的值为111。( )

A正确

B错误

正确答案:B

错误。在C++中,以0开头的整数字面值表示的是八进制数。因此,010、100和001分别表示八进制数8、64和1。计算表达式010+100+001的值时,按照十进制数相加的规则,得到的结果是8+64+1,即73。所以,C++表达式010+100+001的值为73,而不是111。给定的判断是错误的。

20.【判断题】if语句中的条件表达式的结果可以为int类型。( )

A正确

B错误

正确答案:A

正确。在C++中,if语句中的条件表达式可以是任何可以转换为布尔值的表达式。C++中将数字0、null、false等统一视为false,其他视为true。当条件表达式的结果为int类型时,根据上述规则,非零的int值会被视为true,而0会被视为false。因此,条件表达式的结果可以是int类型。

21.【判断题】在下⾯的C++代码while(1) continue;中,由于循环中的continue是⽆条件被执⾏,因此将导致死循环。( )

A正确

B错误

正确答案:A

正确。在给定的代码中,while循环的条件是1,它被视为true。而在循环体中,continue语句会导致程序跳过当前循环迭代的剩余部分,直接进入下一次循环。由于continue语句是无条件被执行的,每次循环迭代都会跳过循环体的剩余部分,从而导致无限循环。程序将永远在循环中执行continue语句,而不会终止循环。因此,给定的代码会产生一个死循环,不会自动退出循环。

22.【判断题】C++表达式 ('1'+'1''2'? flag=1:flag=2) 的结果值和表达式 (flag2)的相同。( )

A正确

B错误

正确答案:B

错误。在给定的表达式('1'+'1''2'?flag=1:flag=2)中,首先进行字符之间的加法运算。由于字符'1'和字符'1'的ASCII码值分别为49,因此'1'+'1'的结果为98。接下来,比较结果值98是否等于字符'2'的ASCII码值50。由于98不等于50,条件表达式的结果为 false。因此,flag的值将被赋为2。因此,表达式('1'+'1''2'?flag=1:flag=2)的结果为2。另一方面,表达式(flag2)检查变量flag 是否等于2。根据上述计算,flag的值为2。因此,表达式(flag2)的结果为 true。因此,C++表达式('1'+'1''2'?flag=1:flag=2)的结果值和表达式(flag2)的结果值不相同。给定的判断是错误的。

23.【判断题】在C++的程序中,不能⽤scanf作为变量名。( )

A正确

B错误

正确答案:B

错误。在C++的程序中,可以使用 scanf作为变量名。尽管 scanf是一个标准库函数名,但它并不属于C++的关键字。在C++中,标识符的选择是灵活的,只要遵循命名规则,就可以使用 scanf或其他类似的名称作为变量名;但是,强烈不建议这么做。

24.【判断题】⼩杨最近在准备考GESP,他⽤的Dev C++来练习和运⾏程序,所以Dev C++也是⼀个⼩型操作系统。( )

A正确

B错误

正确答案:B

错误。Dev C++是一个集成开发环境(IDE),而不是一个操作系统。它是为了方便C++编程而设计的软件工具,提供了代码编辑、编译、调试和运行等功能,使开发者能够更便捷地编写和测试C++程序。操作系统是一种系统软件,它管理计算机硬件和软件资源,提供用户与计算机之间的接口。常见的操作系统包括Windows、Linux、macOS等。Dev C++运行在支持的操作系统上(如Windows),并提供了一个用户友好的界面来编写、编译和运行C++代码。它本身并不是一个操作系统,而只是在操作系统上提供的工具之一。因此,给定的判断是错误的。Dev C++不是一个小型操作系统,而是一个用于C++开发的集成开发环境。

25.【判断题】任何⼀个while循环都可以转化为等价的for循环( )。

A正确

B错误

正确答案:A

正确。任何一个while 循环都可以转化为等价的for循环。for循环和 while 循环都是用于控制程序的循环执行的结构,它们可以互相替代。

三、编程题

26.【编程题】小杨的考试

时间限制:1.0 s

内存限制:128.0 MB

问题描述:

今天是星期 X,小杨还有 N 天就要考试了,你能推算出小杨考试那天是星期几吗?(本题中使用 7 表示星期日)

3.1.2 输入描述

输入 2 行,第一行一个整数 X(1≤X≤7);第二行一个整数 N(1≤N≤364)。

3.1.3 输出描述

输出一个整数,表示小杨考试那天是星期几。

3.1.4 特别提醒

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

3.1.5 样例输入 1
复制代码
1
6
3.1.6 样例输出 1
复制代码
7
3.1.7 样例解释 1

今天是星期 1,那么 6 天后就是星期日,星期日在本题中用 7 表示。

复制代码
5
3
3.1.9 样例输出 2
复制代码
1
3.1.10 样例解释 2

今天是星期 5,那么 3 天后就是星期 1。

第一种

c++ 复制代码
#include <stdio.h>
int main(int argc, char **argv) {
    int x, n;
    scanf("%d%d", &x, &n);
    printf("%d\n", (x - 1 + n % 7) % 7 + 1);
    return 0;
}

第二种

c++ 复制代码
#include<iostream>
using namespace std;
int main()
{
	int n,x;
	cin>>x>>n;
	n=(x+n)%7;
	if(n==0)
		cout<<7;
	else
		cout<<n;
	return 0;
}

编程题 2

试题名称:小杨报数
时间限制:1.0s
内存限制:128.0MB
3.2.1 问题描述

小杨需要从 1 到 n 报数。在报数过程中,小杨希望跳过 m 的倍数。例如,如果 n=5,m=2,那么小杨就需要依次报出 1、3、5;如果 n=10,m=3,那么小杨就需要依次报出 1、2、4、5、7、8、10。现在,请你依次输出小杨报的数。

3.2.2 输入描述

输入 2 行,第一行一个整数 n(n≥1);第二行一个整数 m(m≥2)。

3.2.3 输出描述

输出若干行,依次表示小杨报的数。

3.2.4 特别提醒

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

3.2.5 样例输入 1
plaintext 复制代码
5
2
3.2.6 样例输出 1
plaintext 复制代码
1
3
5
3.2.7 样例输入 2
plaintext 复制代码
10
3
3.2.8 样例输出 2
plaintext 复制代码
1
2
4
5
7
8
10
c++ 复制代码
#include <stdio.h>
int main(int argc, char **argv) {
    int n, m, i;
    scanf("%d%d", &n, &m);
    for (i = 1; i <= n; i++) {
        if (i % m != 0)
            printf("%d\n", i);
    }
    return 0;
}

第二种

c++ 复制代码
#include<iostream>
using namespace std;
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		if(i%m==0)
			continue;
		else
			cout<<i<<endl;
	}
	return 0;
}
相关推荐
FMRbpm2 小时前
顺序表实现队列
数据结构·c++·算法·新手入门
飞天狗1112 小时前
G. Mukhammadali and the Smooth Array
数据结构·c++·算法
罗湖老棍子2 小时前
Knight Moves(信息学奥赛一本通- P1257)
c++·算法·bfs
stanleyrain3 小时前
c++指针问题
开发语言·c++
如意.7593 小时前
【C++】从 I0 库到缓冲区,一篇吃透输入输出
开发语言·c++
小李小李快乐不已3 小时前
哈希表理论基础
数据结构·c++·哈希算法·散列表
AuroraWanderll3 小时前
C++11(二)核心突破:右值引用与移动语义(上)
c语言·数据结构·c++·算法·stl
广府早茶3 小时前
机器人重量
c++·算法
神仙别闹3 小时前
基于QT(C++)实现宠物小精灵对战游戏
c++·qt·宠物