2024-06 GESP C++ 一级试题及答案解析

2024-06 GESP C++ 一级试题及答案解析
1 单选题(每题 2 分,共 30 分)
第 1 题 在C++中,下列不可做变量的是( )。
A. five-Star
B. five_star
C. fiveStar
D. _fiveStar
【答案】A  减号不能出现在变量名中。
第 2 题 C++表达式 3 - 3 * 3 / 5 的值是( )。
A. -1.2
B. 1
C. 0
D. 2
【答案】D 
第 3 题 在C++中,假设N为正整数,则表达式 cout << (N % 3 + N % 7) 可能输出的最大值是( )。
A. 6
B. 8
C. 9
D. 10
【答案】B  假设N为正整数,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
第 5 题 对整型变量i,执行C++语句 cin >> i, cout << i 时如果输入 5+2 ,下述说法正确的是()。
A. 将输出整数7
B. 将输出 5
C. 语句执行将报错,输入表达式不能作为输出的参数
D. 语句能执行,但输出内容不确定
【答案】B
第 6 题 下面C++代码执行后的输出是( )。

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

A. 102={102}
B. a+1={a+1}
C. a+1={102}
D. a先被赋值为浮点数,后被赋值为整数,执行将报错
【答案】C
第 7 题 表达式 9/4 - 6 % (6 - 2) * 10 的值是( )。
A. -17.75
B. -18
C. -14
D. -12.75
【答案】B
第 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    注意2位右对齐。 
第 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   i=10时循环结束,Sum=0+0+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
第 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   将 i += 1 移到 if (i % 2 == 1) 前一行,得到的结果将会少个1。
第 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 
第 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   i的变化为:0,2,4,6。
第 14 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?( )
A. 1
B. 2
C. 3
D. 4
【答案】C  图形化、C++、Python。
第 15 题 ENIAC于1946年投入运行,是世界上第一台真正意义上的计算机,它的主要部件都是   (  )组成的。
A. 感应线圈
B. 电子管
C. 晶体管
D. 集成电路
【答案】B

2 判断题(每题 2 分,共 20 分)
第 1 题 在C++代码中变量 X 被赋值为16.44,则 cout << X / 10 执行后输出的一定是 1 。( )
【答案】错误  X为double 时输出的是1.644。
第 2 题 C++的整型变量 N 被赋值为10,则语句 cout << N / 4 << "->" << N % 4 << "->" << N / 4.0 执行后输出是 2->2->2.0 。 ( )
【答案】错误  输出是2->2->2.5。
第 3 题 定义C++的 float 型变量 N ,则语句 cin >> N; cout << int(float(N)) 可以输入正负整数和浮点数,并将其转换为整数后输出。( )
【答案】正确
第 4 题 C++的整型 N 被赋值为5,语句 printf("%d*2",N) 执行后将输出 10 。( )
【答案】错误  将输出 5*2。 
第 5 题 在C++中, break 语句用于终止当前层次的循环,循环可以是 for 循环,也可以是 while 循环。( )
【答案】正确
第 6 题 在C++, continue 语句通常与 if 语句配合使用。( )
【答案】正确
第 7 题 在C++代码中,不可以将变量命名为 printf ,因为 printf 是C++语言的关键字。( )
【答案】错误  printf 是 C 和 C++ 语言中用于输出的标准库函数,而不是关键字。
第 8 题 在C++中有整型变量N,则表达式 N += 8/4//2 相当于 N += 8/(4/2) 。( )
【答案】错误  表达式 N += 8/4//2 和 N += 8/(4/2) 的结果不相同。前者相当于 N += 1,后者相当于 N += 4。
第 9 题 C++中定义变量 int N ,则表达式 (!!N) 的值也是 N 的值。 ( )
【答案】错误  !!N 的结果并不是 N 的原始整数值,而是 N 的布尔值表示(true 或 false)。
第 10 题 GESP测试是对认证者的编程能力进行等级认证,同一级别的能力基本上与编程语言无关。( )
【答案】正确

3 编程题(每题 25 分,共 50 分)
3.1 编程题 1
试题名称:休息时间
时间限制:1.0 s
内存限制:512.0 MB
3.1.1 题面描述
小杨计划在某个时刻开始学习,并决定在学习k秒后开始休息。
小杨想知道自己开始休息的时刻是多少。
3.1.2 输入格式
前三行每行包含一个整数,分别表示小杨开始学习时刻的时h、分m、秒s(h,m,s的值符合1<h<12,0<m<59,0<s<59)。
第四行包含一个整数 k,表示小杨学习的总秒数(注:k 的值符合 1 ≤ k ≤ 3600)。
3.1.3输出格式
输出一行,包含三个整数,分别表示小杨开始休息时刻的时、分、秒。
3.1.4样例1
输入:
12
59
59
10
输出:
13 0 9
3.1.5样例解释
小杨在时刻12:59:59开始学习,学习10秒后开始休息,即在13:0:9 时刻开始休息。
3.1.6数据范围
对于全部数据,保证有1<=h<=12,0≤m≤59,0≤s≤59,1≤k≤3600。

// 3.1 样例代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int h,m,s,k;
	cin>>h>>m>>s>>k;
	s+=k;
	m+=s/60;
	s%=60;
	h+=m/60;
	m%=60;
	cout<<h%24<<" "<<m<<" "<<s<<endl;
    return 0;
}

3.2 编程题 2
试题名称:立方数
时间限制:1.0 s
内存限制:512.0 MB
3.2.1 题面描述
小杨有一个正整数n,他想知道n是否是一个立方数。
一个正整数n是立方数当且仅当存在一个正整数x满足x xx x x = n。
3.2.2输入格式
第一行包含一个正整数 n。
3.2.3 输出格式
如果正整数 n 是一个立方数,输出 Yes,否则输出 No。
3.2.4 样例1
输入:
8
输出:
Yes
3.2.5 样例2
输入:
9
输出:
No
3.2.6样例解释
对于样例1,存在正整数2使得8=2×2×2,因此8为立方数。
对于样例2,不存在满足条件的正整数,因此9不为立方数。
3.2.7数据范围
对于全部数据,保证有1<=n<=1000。

// 3.2  样例代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	for(int i=1;i*i*i<=n;i++){
		if(i*i*i==n){
			cout<<"Yes";
			return 0;
		}
	}
	cout<<"No";
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

宏阳李老师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值