GESP编程能力等级认证C++编程真题解析 | 2024年6月一级

学习C++从娃娃抓起!记录下CCF-GESP备考学习过程中的题目,记录每一个瞬间。

附上汇总贴:GESP编程能力等级认证C++编程真题解析 | 汇总


单选题

第1题

在C++中,下列不可做变量的是( )。

A.five-Star

B.five_star

C.fiveStar

D._fiveStar

【答案】:A

【解析】

C++的变量命名只能由字母、数字、下划线组成,并且数字不能作为开头

第2题

C++表达式3 - 3 * 3 / 5的值是( )。

A.-1.2

B.1

C.0

D.2

【答案】:D

【解析】

根据优先级,首先计算3 * 3 / 5得到1,3 - 1的结果为2

第3题

在C++中, 假设N为正整数, 则表达式cout<<(N%3+N%7) 可能输出的最大值是( )。

A.6

B.8

C.9

D.10

【答案】:B

【解析】

N%3的最大值为2,N%7的最大值为6

第4题

C++语句printf(“5%%2={%d} \n”, 5%2) 执行后的输出是( )。

A.1={1}

B.5%2={5%2}

C.5%2={1}

D.5 ={1}

【答案】:C

【解析】

printf(“%%”) 的输出为%,"%d"为5%2的计算结果

第5题

对整型变量i, 执行C++语句cin>>i, cout<<i如果输入5+2, 下述说法正确的是( )。

A.将输出整数7

B.将输出5

C.语句执行将报错,输入表达式不能作为输出的参数

D.语句能执行,但输出内容不确定

【答案】:B

【解析】

cin首先将5识别为有效的整数部分, +不是数字部分, 停止读入, 此时i为5

第6题

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

float a;
a = 101.101;
a = 101;
print("a+1=(%.0f)", a+1);

A.101={102}

B.a+1={a+1}

C.a+1={102}

D.a先被赋值为浮点数,后被赋值为整数,执行将报错

【答案】:C

【解析】

a在第二次赋值后变为101,a+1的计算结果为102,%.0f需要将浮点数的小数部分四舍五入

第7题

表达式9/4-6%(6-2)*10的值是( )。

A.-17.75C

B.-18

C.-14

D.-12.75

【答案】:B

【解析】

9/4的结果为2,6%(6-2)*10的结果为20,2-20的结果为-18

第8题

下面C++代码执行时输入10后,正确的输出是( )。

int N;
cout << "请输入正整数:";
cin >> N;
if (N % 3)
	printf("第5行代码%2d", N % 3);
else
	printf("第6行代码%2d", N % 3);

A.第5行代码1

B.第6行代码1

C.第5行代码 1

D.第6行代码 1

【答案】:C

【解析】

10%3的结果为1,表达式为真,%2d表示输出数字占两位,不足两位的在数字前用空格补全

第9题

下面C++代码执行后输出是( )

int Sum = 0, i = 0;
for ( ; i<10; )
	Sum += i++;
cout << i << " " << Sum;

A.9 45

B.10 55

C.10 45

D.11 55

【答案】:C

【解析】

在for循环中, Sum+=i++等价于Sum=i, i++, 循环执行的条件为i <10, 所以输出的i为10, Sum为1+2+…+9的结果为45

第10题

下面C++代码用于判断N是否为质数(只能被1和它本身整除的正整数)。程序执行后,下面有关描述正确的是( )。

int N;
cout << "请输入整数:";
cin >> N;

bool Flag = false;

if (N>=2) {
	Flag = true;
	for (int i=2; i<N; i++)
		if (N % i == 0) {
			Flag = false;
			break;
		}
}

if (Flag)
	cout << "是质数";
else
	cout << "不是质数";

A.如果输入负整数,可能输出“是质数”

B.如果输入2,将输出“不是质数”,因为此时循环不起作用

C.如果输入2,将输出“是质数”,即便此时循环体没有被执行

D.如果将if(N>=2)改为if(N>2)将能正确判断N是否质数

【答案】:C

【解析】

A选项,如果输入负整数,不满足N>=2,输出“不是质数”;B选项,输入2, 满足N>=2, 执行Flag=true; , 不满足for循环条件, 最终输出“是质数”;C选项同B选项;D选项,如果输入2,不满足N>2。输出“不是质数”,与实际不符

第11题

下面的C++代码用于求1~N之间所有奇数之和,其中N为正整数,如果N为奇数,则求和时包括N。有关描述错误的是( )。

int N;
cout << "请输入正整数:";
cin >> N;

int i=1, Sum=0;

while (i<=N) {
	if (i%2==1)
		Sum += i;
	i += 1;
}

cout << i << " " << Sum;

A.执行代码时如果输入10,则最后一行输出将是11 25

B.执行代码时如果输入5,则最后一行输出将是6 9

C.将i+=1移到if(i % 2 == 1) 前一行,同样能实现题目要求

D.删除 if (i % 2 == 1),并将i+=1改为i+=2,同样可以实现题目要求

【答案】:C

【解析】

C选项,移动后,循环开始时i为1,执行i+=1;后i为2,此时奇数1没有被加到Sum中

第12题

如果一个整数N能够表示为X*X的形式,那么它就是一个完全平方数,下面C++代码用于完成判断N是否为一个完全平方数,在横线处应填入的代码是( )。

int N;

cin >> N;
for (int i=0; i<=N; i++)
	if (____)
		cout << N << "是一个完全平方数\n";

A.i == N * N

B.i * 10 == N

C.i + i == N

D.i * i == N

【答案】:D

【解析】

从0开始循环枚举,当找到满足i*i==N的i时,证明N是一个完全平方数

第13题

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

int cnt = 0;

for (int i=0; i*i<64; i+=2)
	cnt++;
cout <<cnt;

A.8

B.7

C.4

D.1

【答案】:C

【解析】

在for循环中, i的值分别为0, 2, 4, 6, 所以循环4次, 执行4次cnt++; , 最终cnt为4

第14题

小杨父母带他到某培训机构给他报名参加CCF组织的G ESP认证考试的第1级, 那他可以选择的认证语言有几种?( )

A.1

B.2

C.3

D.4

【答案】:C

【解析】

GESP一级可选择的认证语言有图形化、Python、C++三种语言

第15题

ENIAC于1946年投入运行, 是世界上第一台真正意义上的计算机, 它的主要部件都是( )组成的。

A.感应线圈口

B.电子管

C.晶体管

D.集成电路

【答案】:B

【解析】

ENIAC的主要部件为电子管

判断题

第16题

在C++代码中变量X被赋值为16.44, 则cout<<X / 10执行后输出的一定是1。( )

A.正确

B.错误

【答案】:B

【解析】

double类型与int类型进行运算时, 结果会隐式转换为double类型,结果为1.644

第17题

C++的整型变量N被赋值为10, 则语句cout<<N/4<<“->”<<N%4<<“->”<<N/4.0执行后输出是2->2->2.0。( )

A.正确

B.错误

【答案】:B

【解析】

double类型与int类型进行运算时, 结果会隐式转换为double类型,结果为2.5

第18题

定义C++的float型变量N, 则语句c in>>N; cout<<int(float(N)) 可以输入正负整数和浮点数,并将其转换为整数后输出。( )

A.正确

B.错误

【答案】:B

【解析】

double类型与int类型进行运算时, 结果会隐式转换为double类型,结果为2.5

第19题

C++的整型N被赋值为5, 语句printf(“%d*2”, N) 执行后将输出10。( )

A.正确

B.错误

【答案】:B

【解析】

如果想输出10, 应写为printf(“%d”, N * 2) , 题目中输出5 * 2

第20题

在C++中, break语句用于终止当前层次的循环, 循环可以是for循环, 也可以是while循环。( )

A.正确

B.错误

【答案】:A

【解析】

break可以终止当前层的循环

第21题

在C++, continue语句通常与if语句配合使用。( )

A.正确

B.错误

【答案】:A

【解析】

continue为结束本次循环, 直接开始下一次循环一般在满足某些指定条件时使用

第22题

在C++代码中, 不可以将变量命名为printf, 因为printf是C++语言的关键字。( )

A.正确

B.错误

【答案】:B

【解析】

printf是一个标准库函数, 不是关键字

第23题

在C++中有整型变量N,则表达式N+=8/4//2相当于N+=8/(4/2)。( )

A.正确

B.错误

【答案】:B

【解析】

// 并不是C++的算数运算符

第24题

C++中定义变量int N, 则表达式(!!N) 的值也是N的值。( )

A.正确

B.错误

【答案】:B

【解析】

逻辑非!的结果为1或0,如果N初始不是1或0,则运算结果不等于N

第25题

GESP测试是对认证者的编程能力进行等级认证, 同一级别的能力基本上与编程语言无关。( )

A.正确

B.错误

【答案】:A

【解析】

作为能力认证考试,GESP不仅做到了拉开不同等级之间的试题难度,同时也保证了不同编程语言之间的难度一致性。

编程题

第26题

【题目描述】

小杨计划在某个时刻开始学习,并决定在学习k秒后开始休息。

小杨想知道自己开始休息的时刻是多少。

【输入】

前三行每行包含一个整数,分别表示小杨开始学习时刻的时h、分m、秒s(h,m,s的值符合1≤h≤12,0≤m≤59,0≤s≤59)。

第四行包含一个整数k、表示小杨学习的总秒数(注:k的值符合1≤k≤3600)

【输出】

输出一行,包含三个整数,分别表示小杨开始休息时刻的时、分、秒。

【输入样例】

12
59
59
10

【输出样例】

13 0 9

【代码详解】

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int h,m,s;
    cin >> h >> m >>s;
    int k;
    cin >> k;
    int now = h * 60 * 60 + m * 60 + s;
    now += k;
    int hh = now/3600;
    now %= 3600;
    int mm = now/60;
    now %= 60;
    cout << hh << " " << mm << " " << now << endl;
    return 0;
}

【运行详解】

12  
59
59
10
13 0 9

第27题

【题目描述】

小杨有一个正整数n,他想知道n是否是一个立方数。

一个正整数n是立方数当且仅当存在一个正整数x满足 x × x × x = n x \times x \times x = n x×x×x=n

【输入】

第一行包含一个正整数n。

【输出】

如果正整数n是一个立方数, 输出Yes, 否则输出No。

【输入样例】

8

【输出样例】

Yes

【代码详解】

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin >> n;
    int fl = 0;
    for (int i=1; i<=n; i++) {
        if (i * i * i == n) {
            fl = 1;
            break;
        }
    }  
    if (fl) cout << "Yes" << endl;
    else cout << "No" << endl;
    return 0;
}

【运行结果】

8
Yes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值