CCF-GESP 等级考试 2023年3月认证C++一级真题解析
2023年3月真题
一、单选题(每题2分,共30分)
正确答案:B
解析:考察知识点:计算机基础
本题属于考察计算机基础知识中的“输入”和“输出”概念;“输入”指外界向机器内部传递信息,“输出”指计算机内部信息向外界展示。此题中,“音箱”属于向外部播放声音,故属于输出概念,所以本题正确答案为B。
正确答案:A
解析:考察知识点:计算机基础
本题属于考察计算机基础知识中,关于存储的基本单位;计算机中,表示存储大小的最小单位为“字节”,英文为“Byte”,表示一个字节存储空间大小的单位,用大写字母 B 表示,所以本题正确答案为 A。
正确答案:A
解析:考察知识点:基本数据类型
本题考察考生对于 C++基本数据类型的了解:关于基本数据类型,有整型 int,浮点型 double、float,字符型 char,布尔型 bool,本题中7.0 是小数形式,属于浮点型,C++中浮点型默认是 double,所以本题正确答案为A。
正确答案:C
解析:考察知识点:变量的定义与使用
本题考察 C++语言中变量的定义与使用;关于变量的定义与使用,变量在定义时可以不初始化,变量名必须是合法的标识符,并且变量被赋值之后的类型不变,均不符合题意,故 A、B、D 排除;选项 C 变量必须定义才能使用,没有定义变量就使用会造成编译错误,所以本题正确答案为C。
正确答案:B
解析:考察知识点:变量的定义与使用
本题察 C++语言中变量的定义与使用;根据变量的命名规则:1.只能包含大小写字母、数字、下划线;2.必须以大小写字母或者下划线开头;3.不能使用 C++的指令或关键字。选项 B 为 0x321,以数字开头,违反变量的命名规则,所以本题正确答案为 B。
正确答案:D
解析:考察知识点:计算机基础与编程环境
本题考察输入输出语句及变量的定义与使用两部分内容;输入输出的cin 和 cout 都是 C++的常对象,但不是关键字。C++的关键字如下图所示:
所以本题正确答案为 D。
正确答案:D
解析:考察知识点:基本运算
本题属于考察 C++基本运算中的算术运算;选项A 是将a 加b 的和赋值给 c;选项 B 等价于 c=c+(a+b),将 a 和 b 的值相加,再加上c 的值之后,赋给c;选项 C 是将 b 赋给 a,再将 a 赋给 c;选项 D 中++是自增运算符,a++表示的是a在原本的值上自增 1,后面跟上 b 不符合 C++语法,所以本题正确答案为D。
正确答案:A
解析:考察知识点:基本运算
本题主要考察基本运算中的算术运算;长方形的周长公式是(长+宽)2 或者长2+宽2 或四条边相加;选项 A 根据运算规则,先算乘法b2,后算加法 a+b*2,不能用来计算长方形的周长,所以本题正确答案为A。
正确答案:A
解析:考察知识点:基本运算
本题考察 C++基本运算过程中的隐式类型转换;算式中,(3==0)的计算结果为 bool 类型、’A’为 char 类型常量、1 为 int 类型常量、3.0 为double 类型常量,将它们相加时会从低精度的高精度的进行类型转换,最终结果为double类型,所以本题正确答案为 A。
正确答案:D
解析:考察知识点:基本运算
本题考察 C++基本运算;a*=3 相当于 a=a3,a 的值一开始是6,所以63=18,将这个结果再赋给 a,a 的值变为 18,所以本题正确答案为D。
正确答案:B
解析:考察知识点:基本运算
本题主要考察 C++基本运算中的逻辑运算;
选项 A 条件 1 是 a==0,条件 2 是 b==0,两个条件之间用逻辑与&&,两个条件都满足,整个条件就满足,符合 a 等于 0 且 b 等于 0;
选项 B 是先判断 a 和 b 是否相等,若相等表达式 a==b 的值为1,若不相等a==b的值为 0,再判断表达式 a==b 的值是否等于 0,只有 a 和b 不相等时,整个表达式成立;
选项 C 条件 1 是!a,a 为 0 时,!a 为 1,条件成立,条件2 是!b,b 为0 时,!b为 1,条件成立,两个条件之间是逻辑与&&关系,两个条件都满足,整个条件就满足,符合 a 等于 0 且 b 等于 0;
选项 D 中 a==0 条件满足为 1,b==0 条件满足也为 1,两个都满足相加结果为2,两个条件有任意不满足则相加结果可能为 0 或 1。因此,判断相加结果是否等于2,符合 a 等于 0 且 b 等于 0;
所以本题正确答案为 B。
正确答案:C
解析:考察知识点:基本运算
本题考察 C++基本运算中的算术运算;
选项 A,假设 a 为 3,a4 即为 34=12,12 虽然满足大于等于a 且是4 的倍数,但不是满足条件的整数中最小的,排除 A;
选项 B,假设 a 为 3,a/3 结果为 0,因为 a 为 int 类型,int 类型进行计算,结果还是 int,会把小数部分舍去,故 a/34 结果为 0,不满足条件,排除B;选项 C,令 a=4k+t,k 是一个整数,0<=t<=3,则(a+3)/4=(4k+t+3)/4=k+(t+3)/4。如果 a 是 4 的倍数,则 t=0 , (a+3)/44=k4=a,等于 a 且是4 的倍数;否则t>=1,(4k+4)/44 <= (a+3) /44 <= (4k+6)/44,即(4k+4) <= (a+3) /4*4 <= (4k+4),结果为4k+4,大于 a 且是 4 的倍数的整数中最小的,满足题意;选项 D,假设 a 为 4,4%4=0,a-a%4+4=8,8 虽然满足大于等于a 且是4 的倍数,但不是满足条件的整数中最小的,排除 D;
所以本题正确答案为 C。
正确答案:D
解析:考察知识点:基本运算
由于题目中没有分支、循环语句,可以尝试由结果反推。已知在第8行,输出“20 10”,因此此时 a 为 20、b 为 10。第 7 行对a 赋值后得到的就是第 8 行时 a 的值 20,可知第 7 行语句执行前 a 除以 100 的余数为20。由于第7行未改变 b 的值,第 6 行对 b 赋值后得到的就是第 8 行时b 的值10,可知第6行语句执行前 a 除以 100 的商为 10。由于第 6 行未改变a 的值,综合第7 行得到的线索,可知第 6 行语句执行前,a 应为 1020。第 5 行语句执行前,a 为10、b 为 20,四个选项中,只有选项 D 的表达式的计算结果为1020。所以本题正确答案为 D。
正确答案:B
解析:考察知识点:控制语句结构
本题考察控制语句结构中的循环结构。变量 i 的初始值是1,循环条件是 i 小于等于 8,循环范围是从 1 到 8,循环体中输出 i,得到的输出是1248,规律是在前一个的基础上乘 2,每次 i*2 之后赋给 i,所以本题正确答案为B。
正确答案:C
解析:考察知识点:控制语句结构
本题考察循环结构和选择结构。循环范围是从1 到20,每次循环结束后 i++,i 自增 1;循环内判断当前数是 3 或者是 5 的倍数,就将i 累加到sum当中,故从 1 到 20,满足条件的数有 3 5 6 9 10 12 15 18 20,相加结果为98,所以本题正确答案为 C。
二、判断题(每题2分,共20分)
正确答案:正确
解析:考察知识点:计算机基础
本题考察计算机基础中快捷键的使用。Ctrl+X 表示剪切文件(复制并从原位置删除),Ctrl+V 表示粘贴所剪切的文件。所以本题正确。
正确答案:错误
解析:考察知识点:计算机基础
本题属于对编程语言特点的考察。题目中所列举的编程语言,均无法在CPU 上直接执行,而是需要通过各自的方式,转换成机器语言后才能被CPU识别和执行,所以本题错误。
正确答案:错误
解析:考察知识点:计算机编程环境
本题考察计算机的编程环境。注释信息是写在代码当中方便程序阅读者理解代码的,养成书写注释的好习惯能够为编写更大规模的程序及团队合作打好基础。注释信息会在编译过程中被去掉,不会产生机器指令,也就不会影响程序运行速度,所以本题错误。
正确答案:正确
解析:考察知识点:变量的定义与使用
本题考察 C++语言中变量的定义与使用。根据变量的命名规则:1.只能包含大小写字母、数字、下划线;2.必须以大小写字母或者下划线开头;3.不能使用 C++的关键字。故标识符中可以有数字,但不能以数字开头,所以本题正确。
正确答案:错误
解析:考察知识点:基本数据类型
本题主要考察基本数据类型。int 是整型,例如3 是一个int 类型常量。但 3 加上单引号之后’3’在 C++语言中表示字符,它是 char 类型常量。所以本题错误。
正确答案:错误
解析:考察知识点:控制语句结构
本题主要考察控制语句结构。if 语句的条件表达式不一定是bool 类型,也可能是其他类型,任何非零值都会被视为真,而零值会被视为假。例如,如果a 为 int 类型变量,则 if (a) ; 是否符合 C++语法的 if 语句,表示判断a 是否为0:a 不等于 0 时,则视为真,if 条件成立;反之,如果 a 等于0,则视为假,if 条件不成立。但 a 的类型为 int 类型,并不是 bool 类型,所以本题错误。
正确答案:错误
解析:考察知识点:控制语句结构
本题主要考察 for 循环结构,for 循环分四步走:1. 执行第一个分号前的初始表达式;2. 判断两个分号之间的循环条件表达式结果是否为真;3. 执行循环体;4. 执行第二个分号后的步进表达式,并回到第2 步重新判断。其中第2步,如果执行初始表达式后的状态循环条件表达式为假,则不会执行循环体。此时循环体一次也没有执行就结束了循环,所以本题错误。
正确答案:错误
解析:考察知识点:变量的定义与使用
本题主要考察变量的定义与使用。尽管数学上a=a+3 是无解的,但在C++语言中 a=a+3 并不表示方程或恒等式。a 为 int 类型的变量,执行a=a+3;,会让 a 的值变为在原值的基础上增加 3,不会导致 a 无意义。所以本题错误。
正确答案:正确
解析:考察知识点:基本运算
本题考察基本运算。由于 a 为 int 类型,表达式a/4 中的除号/为整除运算。因此表达式(a/4==2)表示 a 除以 4 的商为 2,于是a 的值从8 到11 时表达式结果为真,否则为假。这与表达式(a >= 8 && a <= 11)的结果总是相同的,所以本题正确。
正确答案:正确
解析:考察知识点:基本运算
本题考察了基本运算中的算术运算,在 C++语言中,3.5 为double 类型常量,2 为 int 类型的常量,double 类型与 int 类型做乘法运算的结果是double类型,结果为 7.0,所以本题正确。
三、编程题(每题25分,共50分)
本题考察流程控制结构-分支语句、每月的天数、闰年判断
#include<iostream>
using namespace std;
int main() {
int a, b;
cin>>a>>b;
if(b==1 || b==3 || b==5 || b==7 || b==8 || b==10 || b==12) cout<<31;
else if(b==4 || b==6 || b==9 || b==11) cout<<30;
else{
if(a%4==0 && a%100!=0 || a%400==0) cout<<29; //闰年判断
else cout<<28;
}
return 0;
}
本题考察流程控制结构-循环语句、分支语句、长方形的面积与长宽关系
#include<iostream>
using namespace std;
int main() {
int s, cnt=0;
cin>>s;
//w表示宽,规定长大于等于宽,所以宽的最大值要满足w*w<=s
for(int w=1; w*w<=s; w++){
if(s%w==0) cnt++; //如果可以整除,说明找到了一个可行的答案
}
cout<<cnt;
return 0;
}