1
以下C++ 不可以作为变量的名称的是( )。
A. CCF GESP
B. ccfGESP
C. CCFgesp
D. CCF_GESP
解答:因为C++在定义变量时只能用字母,数字,符号作为变量名,空格是不能作为变量名的,所以选A。
2
下面C++ 代码执行后的输出是( )。
下图所示C++ 代码对大写字母’A’ 到’Z’ 分组,对每个字母输出所属的组号,那么输入’C’ 时将输出的组号是?( )。
char c;
while(1) {
cin >> c;
if(c=='q') break;
switch(c) {
case 'A': cout << "1 "; break;
case 'B': cout << "3 ";
case 'C': cout << "3 ";
case 'D': cout << "5 "; break;
case 'E': cout << "5 "; break;
default: cout << "9 ";
}
cout << endl;
A. 3
B. 3 5
C. 3 5 9
D. 以上都不对
解答:因为switch里写的数就是case要判断的(case只能判断相等关系),这里要求’C’,C先输入了一个3和空格,后面没有break就接着输出5,5后面有break了,跳出循环输出空行就结束了,所以选B。
3
现代计算机是指电⼦计算机,它所基于的是( )体系结构。
A. 艾伦·图灵
B. 冯·诺依曼
C. 阿塔纳索夫
D. 埃克特-莫克利
解答:
诺依曼体系结构的五大组成部分
诺依曼体系结构是由现代计算机科学之父约翰·冯·诺依曼提出的,它奠定了现代计算机的基本结构,这一结构主要由五大组成部分构成。
- 运算器:这是计算机的数学大脑,负责执行算术和逻辑运算。它处理数据,帮助计算机理解和执行各种命令。
- 控制器:作为计算机的指挥中心,控制器负责读取指令,解码并执行它们。它协调计算机的所有其他部分,确保它们协同工作。
- 存储器:存储器是计算机的记忆系统,负责存储数据和程序。它分为短期和长期两种类型,短期存储器通常称为RAM(随机存取存储器),长期存储器则称为ROM(只读存储器)或硬盘驱动器。
- 输入设备:输入设备允许用户向计算机提供信息,例如键盘、鼠标、扫描仪等。这些设备将现实世界的信息转换为计算机可以理解的数字信号。
- 输出设备:输出设备将计算机处理后的信息返回给用户,例如显示器、打印机等。这些设备将计算机的数字信号转换为人类可以理解的格式。
所以选B。
4
C++ 语句cout << (2 * 3, 3 % 10, 2+3)
的输出为6,3,5。 ( )
A. 正确
B. 错误
解答:错误,因为逗号表达式只会输出他们的和。
5
C++ 表达式010+100+001的值为111。( )
A. 正确
B. 错误
解答:错误,因为开头为零的数在C++里被默认为是八进制数,所以 010 为八进制的10,即十进制的8,001 为八进制的1,所以表达式的值为8 + 100 + 1 = 109。
6
C++ 表达式 ('1'+'1'=='2'? flag=1:flag=2)
的结果值和表达式 (flag==2)的相同。( )
A. 正确
B. 错误
解答:错误,因为’1’+'1’的ascll码等于98,不等于’2’的50,因此表达式 ('1'+'1'=='2'? flag=1:flag=2)
的结果是 flag
=2,与 flag==2
的结果不同,条件表达式的格式是条件?表达式1:表达式2,当条件为真时,取表达式1的结果,否则,取表达式2的结果。
7
在C++ 的程序中,不能用scanf作为变量名。( )
A. 正确
B. 错误
解答:错误,因为scanf不是关键字,所以可以用scanf作为变量名,但最好不要用,避免混淆。
8
定义变量char c,下面对c赋值的语句,不符合语法的是( )。
A. c = (char)66;
B. c = (char)(66);
C. c = char(66);
D. c = char 66;
解答:选D,因为D缺少括号,导致语法错误。
9
小杨最近在准备考GESP,他用的Dev C++ 来练习和运⾏程序,所以Dev C++ 也是⼀个⼩型操作系统。( )
A. 正确
B. 错误
解答:错误,因为Dev C++ 是一个集成开发环境(IDE),不是操作系统。
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。
10
ENIAC 是世界上第一台计算机,其在设计时采用了集成电路作为主要元器件。()
解答:错误,因为世界上第一台电子数字式计算机的名称叫ENIAC (埃尼阿克),第一台电脑用的是真空管,而第三代计算机才用集成电路。
11
以下选项中不符合 C++ 变量命名规则的是?(B)
A.
s
t
u
d
e
n
t
student
student
B.
2
2
2_
f
r
o
m
from
from
C. _
t
o
to
to
D.
T
e
x
t
Text
Text
解答:众所周知,变量不能用数字开头,所以选B。
12
以下选项中,不能用于表示分支结构的C++ 保留字是?(B)
A.
s
w
i
t
c
h
switch
switch
B.
r
e
t
u
r
n
return
return
C.
e
l
s
e
else
else
D.
i
f
if
if
解答:因为
r
e
t
u
r
n
return
return是用来结束程序的,而其它的都是分支结构,所以选B。
13
小杨今年春节回奶奶家了,奶奶家的数字电视要设置ip地址并接⼊到WIFI盒子才能收看节目,那这个WIFI盒子具有路由器的功能。(A)
A. 正确
B. 错误
解答:路由器是可以连接外网的设备,WIFI就是连接外网。
14
如果变量 a 的值使得C++ 表达式 sqrt(a)==abs(a) ,则 a 的值为0。(B)
A. 正确
B. 错误
解答:也有可能是1
15
小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?(C)
A. 1
B. 2
C. 3
D. 4
解答:GESP认证考试可以选择
S
c
r
a
t
c
h
Scratch
Scratch,
P
y
t
h
o
n
Python
Python,
C
C
C++
16
下面流程图在yr输入2024时,可以判定yr代表闰年,并输出 2月是29天 ,则图中菱形框中应该填(B)
A. (yr%400==0) || (yr%4==0)
B. (yr%400==0) || (yr%4==0 && yr%100!=0)
C. (yr%400==0) && (yr%4==0)
D. (yr%400==0) && (yr%4==0 && yr%100!=0)
解答:众所周知闰年是四年一闰,百年不闰,四百又闰,所以选
B
B
B。
编程题
[GESP202406 一级] 休息时间
题目描述
小杨计划在某个时刻开始学习,并决定在学习 k k k 秒后开始休息。
小杨想知道自己开始休息的时刻是多少。
输入格式
前三行每行包含一个整数,分别表示小杨开始学习时刻的时
h
h
h、分
m
m
m、秒
s
s
s(
h
,
m
,
s
h,m, s
h,m,s 的值符合
1
<
h
≤
12
,
0
≤
m
≤
59
,
0
≤
s
≤
59
1 < h \le 12,0 \le m\le 59,0 \le s\le59
1<h≤12,0≤m≤59,0≤s≤59)。
第四行包含一个整数 k k k,表示小杨学习的总秒数(注: k k k 的值符合 1 ≤ k ≤ 3600 1 \le k \le 3600 1≤k≤3600)。
输出格式
输出一行,包含三个整数,分别表示小杨开始休息时刻的时、分、秒。
样例 #1
样例输入 #1
12
59
59
10
样例输出 #1
13 0 9
提示
小杨在时刻 12:59:59 开始学习,学习 10 秒后开始休息,即在 13:0:9 时刻开始休息。
对于全部数据,保证有 1 < h ≤ 12 1 < h \le 12 1<h≤12, 0 ≤ m ≤ 59 0 \le m\le 59 0≤m≤59, 0 ≤ s ≤ 59 0 \le s\le 59 0≤s≤59, 1 ≤ k ≤ 3600 1 \le k \le 3600 1≤k≤3600。
#include <bits/stdc++.h>
using namespace std;
int main() {
int h,m,s,k;
cin>>h>>m>>s>>k;
h*=3600,m*=60;
int ans=h+m+s+k;
cout<<ans/3600<<" "<<ans%3600/60<<" "<<ans%3600%60;
return 0;
}
[GESP202406 二级] 平方之和
题目描述
小杨有 n n n 个正整数 a 1 , a 2 , … , a n a_1,a_2,\dots,a_n a1,a2,…,an,他想知道对于所有的 i ( 1 ≤ i ≤ n ) i (1\le i\le n) i(1≤i≤n),是否存在两个正整数 x x x 和 y y y 满足 x × x + y × y = a i x\times x+y \times y=a_i x×x+y×y=ai。
输入格式
第一行包含一个正整数
n
n
n,代表正整数数量。
之后
n
n
n 行,每行包含一个正整数,代表
a
i
a_i
ai。
输出格式
对于每个正整数 a i a_i ai,如果存在两个正整数 x x x 和 y y y 满足 x × x + y × y = a i x\times x+y \times y=a_i x×x+y×y=ai,输出 Y e s Yes Yes,否则输出 N o No No。
样例 #1
样例输入 #1
2
5
4
样例输出 #1
Yes
No
提示
对于第一个正整数,存在
1
×
1
+
2
×
2
=
5
1\times 1+2 \times 2=5
1×1+2×2=5,因此答案为 Yes
。
对于全部数据,保证有 1 ≤ n ≤ 10 , 1 ≤ a i ≤ 1 0 6 1 \le n \le 10,1 \le a_i \le 10^6 1≤n≤10,1≤ai≤106。
#include <bits/stdc++.h>
using namespace std;
int a[1000010];
int main()
{
int n,flag=0;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++)
{
flag=0;
for(int x=1;x<=sqrt(a[i]);x++)
{
for(int y=1;y<=sqrt(a[i]);y++) if(x*x+y*y==a[i]){flag=1;break;}
}
if(flag==1) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
[GESP202309 二级] 数字黑洞
题目描述
给定一个三位数,要求各位不能相同。例如, 352 352 352 是符合要求的, 112 112 112 是不符合要求的。将这个三位数的三个数字重新排列,得到的最大的数,减去得到的最小的数,形成一个新的三位数。对这个新的三位数可以重复上述过程。神奇的是,最终一定会得到 495 495 495!
试试看,重新排列 352 352 352,得到的最大数为 532 532 532,最小数为 235 235 235,它们的差是 297 297 297;变换 297 297 297,得到 972 − 279 = 693 972-279=693 972−279=693;变换 693 693 693, 962 − 369 = 594 962-369=594 962−369=594;变换 594 594 594, 954 − 459 = 495 954-459=495 954−459=495。因此,经过 4 4 4 次变换得到了 495 495 495。
现在,输入的三位数,你能通过编程得出,这个三位数经过多少次变换能够得到 495 495 495 吗?
输入格式
输入一行,包含一个符合要求的三位数 N N N。
输出格式
输出一行,包含一个整数 C C C,表示经过 C C C 次变换得到 495 495 495。
样例 #1
样例输入 #1
352
样例输出 #1
4
#include<bits/stdc++.h>
using namespace std;
int n,g,s,b,ma,mi,cnt;
int main(){
cin>>n;
while(n!=495){
if(ma-mi==495) break;
cnt++;
g=n%10;
s=n/10%10;
b=n/100;
if(s>b) swap(s,b);
if(g>s) swap(s,g);
if(s>b) swap(s,b);
ma=b*100+s*10+g;
mi=g*100+s*10+b;
n=ma-mi;
}
cout<<cnt;
return 0;
}