GESP一级直通车

一篇梳理GESP编程能力等级考试一级C++语言全部知识架构,掌握重点,吃透难点,摆平易错点。

你需要预先知道的:

GESP一级考什么?

  1. 计算机基础与计算机历史

  2. 变量的定义与输入,输出语句

  3. 基本数据类型(整型、浮点型、字符型、布尔型)

  4. 控制语句结构(顺序、循环、选择)

  5. 基本运算(算数运算、关系运算、逻辑运算)

  6. 一级考试中的程序设计题目

GESP一级题型有哪些?

15个单选题,10个判断题,每题2分,共50分。

2个编程题,每题25分,共50分。

考场小贴士

一、计算机基础与编程

复习目标:这部分内容考察的范围广应用浅,属于了解知道即可。

小技巧:时不必死记硬背,多读几遍就行。

1.1 计算机的分类

1.2 重要计算机科学家

1.3 计算机的组成

要想实现计算机的基础功能,计算机必须由运算器、存储器、控制器、输入设备、输出设备构成,缺少前两者就无法正常启动计算机,即为“冯·诺依曼结构”。

计算机的核心部件,被称为计算机的“大脑”,又称“微处理器”。

💻 点击进入“计算机的组成”题单,开始真题训练

1.4 计算机语言常识

💻点击进入“计算机语言常识”,开始真题训练

1.5 真题解析

单选题:

1.以下奖项与计算机领域最相关的是()。

A. 奥斯卡奖

B. 图灵奖

C. 诺贝尔奖

D. 普利策奖

 

【解析】:

图灵奖(Turing Award),是由美国计算机协会(ACM)于1966年设立的计算机奖项,名称取自阿兰·图灵(Alan M. Turing),旨在奖励对计算机事业作出重要贡献的个人。图灵奖一般每年仅授予一名计算机科学家。图灵奖是计算机领域的国际最高奖项,被誉为“计算机界的诺贝尔奖”。

从1966年至2021年,图灵奖共授予75名获奖者,以美国、欧洲科学家为主。2000年,华人科学家姚期智获图灵奖,是华人第一次也是唯一一次获得图灵奖。

正确选项B。

 

2.提出“存储程序”的计算机工作原理的是()。

A. 冯·诺依曼

B. 克劳德·香农

C. 戈登·摩尔

D. 查尔斯·巴比奇

 

【解析】:

美籍匈牙利数学家:冯.诺依曼提出了计算机“存储程序”的计算机设计理念,即将计算机指令进行编码后存储在计算机的存储器中,需要的时候可以顺序地执行程序代码,从而控制计算机运行。

早期的计算机设计中,程序和数据是俩个截然不同的概念,数据放在存储器中,而程序作为控制器的一部分,这样的计算机计算效率低,灵活性较差。冯.诺依曼结构中,将程序和数据一样看待,将程序编码为数据,然后与数据一同存放在存储器中,这样计算机就可以调用存储器中的程序来处理数据了。意味着,无论什么程序,最终都是会转换为数据的形式存储在存储器中,要执行相应的程序只需要从存储器中依次取出指令、执行。这种设计思想导致了硬件和软件的分离,即硬件设计和程序设计可以分开执行。

克劳德·香农是美国数学家,密码学家。1948年,他发表了划时代的论文——《通讯的数学理论》,奠定了现代信息论的基础。 还被认为是数字计算机理论和数字电路设计理论的创始人。

戈登·摩尔是英特尔的创始人之一,他将自己的经验总结为“摩尔定律”,其核心内容为:集成电路上可以容纳的晶体管数目在大约每经过18个月到24个月便会增加一倍。换言之,处理器的性能大约每两年翻一倍,同时价格下降为之前的一半。

查尔斯·巴贝奇,19世纪英国数学家、发明家兼机械工程师。由于提出了差分机与分析机的设计概念(并有部份实做机器),被视为计算机先驱。

正确选项A。

 

3.以下不是存储设备的是()。

A. 光盘

B. 磁盘

C. 固态硬盘

D. 鼠标

 

【解析】:

存储设备是用于储存信息的设备或装置。通常是将信息数字化后再以利用电、磁或光学等方式的媒体加以储存。

常见的储存设备有:

利用电能方式储存信息的装置如:各式随机存取存储器(RAM)、只读存储器(ROM)、固态硬盘(SSD)等 利用光学方式储存信息的装置如:CD、DVD、Blu-ray 利用其他实体物如纸卡、纸带等储存信息的装置如:打孔卡、打孔带等

正确选项D。

 

4.以下不属于操作系统的是()。

A. Windows

B. photoshop

C. Linux

D. Mac OS

 

【解析】:

操作系统(Operating System)是一组用来控制计算机运行、调度软件资源的软件程序,是计算机系统的核心与基石。

操作系统需要

-管理与配置内存

-决定系统资源供需的优先次序

-控制输入与输出装置

-操作网络与管理文件系统等等。

操作系统也提供一个让使用者与系统互动的操作界面。常见的操作系统有Unix,Linux,Mac OS,windows。

正确选项B。

 

5.下列不属于面向对象编程语言的是( )

A. C

B. C++

C. JAVA

D. Python

 

【解析】:

面向对象程式设计(Object-oriented programming)是一种程式开发的抽象方针。对象指的是类别(class)的实例。比如小黑是只哈士奇,哈士奇是类,小黑是哈士奇类的实例,即对象。

常见的面向对象编程语言包括 Python、C++、Java、Swift、C#、Ruby、JavaScript 与 PHP等。

特别需要注意的是 C语言是面向过程的编程语言。

正确选项A。

 

判断题

1.第一台现代电子计算机是 ENIGMA。

 

【解析】:

非常容易做错的题目。

ENIGMA是一种用于加密与解密文件的密码机。它是二战时期纳粹德国使用的一系列相似的转子机械加解密机器的统称。

ENIAC才是世界上第一台计算机的名字。它于1946年2月14日在美国宾夕法尼亚大学诞生。发明人是美国人莫克利(JohnW.Mauchly)和艾克特(J.PresperEckert)。它是一个庞然大物,用了18000个电子管,占地170平方米,重达30吨,耗电功率约150千瓦,每秒钟可进行5000次运算。 ENIAC以电子管作为元器件,所以又被称为电子管计算机,是计算机的第一代。美国国防部用它来进行弹道计算。

错误。

 

2.只要计算机不连接互联网,就不可能感染计算机病毒。

 

【解析】:

计算机病毒主要传播途径有以下四种:

①通过软盘等存储介质传播

②通过游戏软件传播

③通过网络传播

④通过计算机硬件传播

所以不联网也有可能感染计算机病毒。

错误。

 

3.C++程序中必须要有 main 函数。

 

【解析】:

main() 函数是 C++ 程序的入口函数,C++ 标准规定 main() 函数的返回值类型为 int,返回值用于表示程序的退出状态,返回 0 表示程序正常退出,返回非 0,表示出现异常。

正确。

 

二、变量定义与输入输出语句

复习目标:能写出C++语言的程序基本框架,能写一个定义变量,读入,输出的简单程序。

2.1 变量名命名规则

1.不能用数字开头 (起名的时候,可以叫张三,李四,但基本没有叫三张,四李,变量可以是a3, b4, 但别是3a, 4b)

2.不能有除了_之外的其他字符

3.不能使用系统保留字(关键字)

所谓保留字,指C++系统中预定义的,在语言或编译系统的实现中具有特殊含义的单词。打个比方,保留字就是比你先进班级的同学,他们有个英文名字,你后进入这个班级,如果叫一样的名字,就会让所有人感到困惑。

小贴士:在一级考试中,你应该能识别出下面这些保留字

      
ifelsewhilereturnsizeofswitch
intchardoubledolongcase
forfloatbreakconst  

 

2.2 输入输出语句

先来温习一下C++语言的基本框架。

C++语言因为继承了C语言的绝大多数特性和语法,所以包含两种风格的输入和输出:C风格的printfscanf在头文件中,C++风格的coutcin中。

易错点 1

scanf函数总是忘记写取地址符&.

易错点 2

scanf 和 printf 的括号里面双引号括住的格式化区域要和变量区域用逗号隔开。

 

2.3 真题解析

单选题

1.不可以作为 C++标识符的是()

A. Printf

B. _123

C. While

D. case

 

判断题

1.常量是在整个程序运行过程中不能改变的量。

 

【解析】

常量是不变化的量。在计算机程序运行时,不会被程序修改的量。

正确。

 

三、基本数据类型(整型、浮点型、字符型、布尔型)

复习目标:掌握数值和数据类型之间的对应关系。

类型意义类型名占位符 
32位整型int%d 
单精度浮点型float%f 
双精度浮点型double%lf 
字符型char输入时%c,输出时%c, %d都行 
布尔型boolNA 

 

真题解析

1.常量 3.14 的数据类型是()

A. double

B. char

C. void

D. int

 

【解析】

只有double类型能够保存小数。

正确答案A。

 

判断题

1."A"是一个字符常量。

 

【解析】

C++语言中单引号括号的是字符,而双引号括住的是字符串,两者类型不同。

错误。

四、控制语句(顺序、选择、循环)

复习方法:顺序、选择、循环的编程题目各写5个,加深理解。

💻 点击进入“控制语句”题单,开始真题训练

4.1 顺序结构

顺序执行就像跑步喊口号

1 ~ 2~ 3~ 4~

 

4.2 选择结构

if ... else ...语句就如同走到了一个丁字路口,或者“往左”或者“往右”。

多个分支的if ... else if ... else语句可以理解为一个多通的路口,选择了一个,就不需要考虑其他的路了。

 

4.3 循环结构

while 循环

while是最基本的循环样式,可以理解为“当”型循环,即当小括号里的值为真时,就要一直做大括号里的事情。

 

do ... while 循环

和while循环的不同在于,do...while更像一位“莽夫”,先干一次再说。

 

for 循环

for循环可以理解为一种循环的简单写法。因为for的开始和结束条件都并列在一起,通常明确要做多少次的时候,采用for循环更清晰。

 

4.4 真题解析

判断题

1.下列代码会输出 50 个 1。

 

【解析】

因为i *= 2这句,i的取值为 {1, 2, 4, 8, 16, 32, 64, 128},所以循环只能被运行7次,只能打印7个1。

错。

 

2.在 if…else 语句中,配对规则是 else 总是与最近的未配对的 if 配对。

 

【解析】

正确。

 

3.在 while 语句中,while 后的()中的表达式只能是逻辑或者关系表达式。

 

【解析】

while后的()本质是上需要一个值,无论何种表达式,while只看最后的结果是真还是假。所以像while (1)这样的语句,就是一直循环,也是允许的。

错误。

 

4.for 语句的语法为:for (表达式 1; 表达式 2; 表达式 3) 语句。其中的三个 表达式均可以为空。

 

【解析】

三个表达式都空表示一直循环。

正确。

 

5.C++中,while 和 do…while 语句的功能完全相同。

 

【解析】

do...while循环会做一次再判断,while是上来就判断,所以功能并不是完全相同。

错误。

 

五、基本运算(算数运算、关系运算、逻辑运算)

 

💻 点击进入“基本运算”题单,开始真题训练

5.1 算术运算

加,减,乘,除,取模

 

5.2 关系运算

大于,小于,等于,大于等于,小于等于,不等于

超级易错点!!!

C语言中的一个经典陷阱就是容易把赋值符号 = 和 比较相等符号 == 搞混。

 

5.3 逻辑运算符

&& 与

|| 或

! 非

 

5.4 真题解析

 

1.如果 x 和 y 均为 int 类型的变量,且 x 的值为 1、y 的值为 2,则下列哪个表 达式的结果为 true?

A. (x + y > 7) && (x - y < 1)

B. !(x + y)

C. (x > y - 1) || x

D. x && (!y)

 

【解析】

首先表达式运算结果非零为真(true),零为假(false)。

逐个分析选项。

A选项表达式用&&连接,两边都要为真,结果才为真。显然 x + y > 7 为假。结果为假。

B选项 !(x+y) 的值为假。

D选项 !y 为假,结果为假。

正确答案C

 

2.如果输入数据为 99 和 100,下列代码的输出结果为()。

A. 99 100

B. 99 99

C. 100 100

D. 100 99

 

【解析】

题目中的代码给出了一种交换两变量值的方法。

正确答案D。

 

3.如果 a 为 int 类型的变量,且 a 的值为奇数,则下列哪个表达式的结果一定 为 false?

A. a % 2 == 1

B. !(a % 2 == 0)

C. !(a % 2)

D. a % 2

 

【解析】

对四个选项逐个计算。

A选项奇数对2取余结果一定为1,所以表达式值为真。

B选项 a % 2 == 0结果为0,对0取反,结果为真。

D选项 a % 2值为1,结果为真。

正确选项C。

 

4.下列表达式能够正确判断“a 不等于 0 且 b 不等于 0”的是()

A. !a == 0 || !b == 0

B. !((a == 0) && (b == 0))

C. !(a == 0 && b == 0)

D. a && b

 

【解析】

对四个选项逐个计算。

A选项判断的是 “a不等于0 或 b不等于0”

B选项判断的是“a不等于0 或 b不等于0”

C选项判断的和B相同。

正确选项D。

 

5.若 a、b、c、d 均为 int 类型的变量,并且初值均为 0,以下不是正确的赋 值语句是()。

A. a = b = c = d = 100;

B. d++;

C. c + b;

D. d = (c = 22) - (b++);

 

【解析】

A选项为同时为多个变量赋值。

B选项 d++; 是赋值语句 d = d + 1;的简写。

D选项 (c=22)虽然看起来不合理,但是C++中赋值语句有返回值为真,所以最终也能完成对d的赋值。

只有C选项没有赋值符号,表达式不完整。

正确答案C。

 

6.A、B、C 是三个 int 类型的变量,如果已知表达式(A >= B && B >= C)的结 果为 true,则表达式(A > C || B == C)的结果()。

A. 为 true

B. 为 false

C. 无法判定结果

D. 当 A、B、C 都相等时为 true,否则为 false

 

【解析】

根据题意A >= B && B >= C 为真,则根据A,B,C关系的几种情况,判断表达式真假

A == B && B == C 那么 表达式中B==C为真,整个表达式为真。

A > B && B > C,显然有A > C 表达式为真。

A == B && B > C 或 A > B && B == C,都有表达式A > C,结果为真。

故正确答案A。

六、考试中的程序设计题目

一级考试中除了50分的单选+判断,还有2个程序设计题目,总计是50分,可以说拿到了一级基本通过。

这里给的建议是将下面两个题单的题目完全刷完,相信通过后面两个题目还是比较容易的。

💻点击进入“顺序结构”题单

💻点击进入“选择结构”题单

考场小贴士:

1.提前一天准备好准考证,身份证,铅笔,橡皮,签字笔收到一个小袋中,随走随拿。

2.考试时间安排:

报名时间:即日起至3月10日24点截止

模拟测试:2023年3月13-14日(具体时间请关注GESP官网通知)

认证时间:2023年3月18日,正常考试90分钟,10点开始,11点半结束