河南商丘网站,网站空间 按流量计费,重庆网站建设找承越,wordpress 主题 破解C ⼀级 2023 年03⽉
GESP CCF 编程能力等级认证 C 一级试卷
#xff08;满分#xff1a;100 分 考试时间#xff1a;90 分钟#xff09;学校#xff1a;__________ 姓名#xff1a;__________题目一二三总分得分一、单选题#xff08;每题 2 分#xff0c;共 30 分 ⼀级 2023 年03⽉GESP CCF 编程能力等级认证 C 一级试卷满分100 分 考试时间90 分钟学校__________ 姓名__________题目一二三总分得分一、单选题每题 2 分共 30 分题号123456789101112131415答案BAACBDDAADBCDBC第 1 题以下不属于计算机输入设备的有 。A. 键盘B. 音箱C. 鼠标D. 传感器【解析】本题属于考察计算机基础知识中的“输入”和“输出”概念;“输入”指外界 向机器内部传递信息,“输出”指计算机内部信息向外界展示此题中,“音箱”属 于向外部播放声音,故属于输出概念,所以本题正确答案为B第 2 题计算机系统中存储的基本单位用 B 来表示它代表的是 。A. ByteB. BlockC. BulkD. Bit【解析】本题属于考察计算机基础知识中,关于存储的基本单位;计算机中,表 示存储大小的最小单位为“字节”,英文为“Byte”,表示一个字节存储空间大小的 单位,用大写字母B 表示,所以本题正确答案为A第 3 题常量 7.0 的数据类型是 。A. doubleB. floatC. voidD. int【解析】本题考察考生对于C基本数据类型的了解:关于基本数据类型,有整 型int,浮点型doublefloat,字符型char,布尔型bool,本题中7.0 是小数形 式,属于浮点型,C中浮点型默认是double,所以本题正确答案为A第 4 题下列关于 C 语言的叙述不正确的是 。A. 变量定义时可以不初始化B. 变量被赋值之后的类型不变C. 变量没有定义也能够使用D. 变量名必须是合法的标识符【解析】本题考察C语言中变量的定义与使用;关于变量的定义与使用,变量 在定义时可以不初始化,变量名必须是合法的标识符,并且变量被赋值之后的类 型不变,均不符合题意,故ABD 排除;选项C 变量必须定义才能使用,没 有定义变量就使用会造成编译错误,所以本题正确答案为C第 5 题以下不可以作为 C 标识符的是 。A. x321B. 0x321C. x321_D. _x321【解析】本题察C语言中变量的定义与使用;根据变量的命名规则:1.只能包 含大小写字母数字下划线;2.必须以大小写字母或者下划线开头;3.不能使 用C的指令或关键字选项B 为0x321,以数字开头,违反变量的命名规则, 所以本题正确答案为B第 6 题以下哪个不是 C 语言的关键字 A. intB. forC. doD. cout【解析】本题考察输入输出语句及变量的定义与使用两部分内容;输入输出的 cin 和cout 都是C的常对象,但不是关键字C的关键字如下图所示:所以本题正确答案为Dautofalsestaticusing$ if $gotostatic_castbooltruepublicnamespaceelseandconst_castcharenumprotectedinlinefornotdynamic_castintunionprivatenewwhile$ or $reinterpret_castshortstructvirtualdelete$ do $xorstatic_assertlongclassoverridethisswitchreturnregisterfloatwchar_tfinalnullptrcasetryexplicitdoublesizeofoperatorvoiddefaultcatchexternsignedtypeidconstfriendbreakthrowunsignedtypedefconstexprtemplatecontinuenoexcept第 7 题如果 a、b 和 c 都是 int 类型的变量下列哪个语句不符合 C 语法 A.c a b;B.c a b;C.c a b;D.c ab;【解析】本题属于考察C基本运算中的算术运算;选项A 是将a 加b 的和赋值 给c;选项B 等价于 (cc(ab)) ,将a 和b 的值相加,再加上c 的值之后,赋给c 选项C 是将b 赋给a,再将a 赋给c;选项D 中是自增运算符,a表示的是a 在原本的值上自增1,后面跟上b 不符合C语法,所以本题正确答案为D第 8 题如果用两个 int 类型的变量 a 和 b 分别表达长方形的长和宽则下列哪个表达式不能用来计算长方形的周长 A.2 * (a b)B.2 * a 2 * bC.a b a bD.b a * 2 b【解析】本题主要考察基本运算中的算术运算;长方形的周长公式是(长宽)2 或者长2宽2 或四条边相加;选项A 根据运算规则,先算乘法 (b2) ,后算加 法ab*2,不能用来计算长方形的周长,所以本题正确答案为A第 9 题表达式(((3 0) A 1 3.0))的结果类型为 。A. doubleB. intC. charD. bool【解析】本题考察C基本运算过程中的隐式类型转换;算式中, ((30)) 的计算 结果为bool 类型 (‘A’) 为char 类型常量1 为int 类型常量3.0 为double 类型常量,将它们相加时会从低精度的高精度的进行类型转换,最终结果为double 类 型,所以本题正确答案为A第 10 题如果 a 为 int 类型的变量且 a 的值为 6则执行a * 3;之后a 的值会是 。A. 3B. 6C. 9D. 18【解析】本题考察C基本运算; (a*3) 相当于 (aa * 3) ,a 的值一开始是6,所以 (6*318) ,将这个结果再赋给a,a 的值变为18,所以本题正确答案为D第 11 题如果 a 和 b 均为 int 类型的变量下列表达式不能正确判断 “a 等于 0 且 b 等于 0” 的是 。A.(a 0) (b 0)B.(a b 0)C.(!a) (!b)D.(a 0) (b 0) 2选项A 条件1 是 (a0) ,条件2 是 (b0) ,两个条件之间用逻辑与,两个条件都 满足,整个条件就满足,符合a 等于0 且b 等于0;选项B 是先判断a 和b 是否相等,若相等表达式 (ab) 的值为1,若不相等 (ab) 的值为0,再判断表达式 (ab) 的值是否等于0,只有a 和b 不相等时,整个表达 式成立;选项C 条件1 是!a,a 为0 时,!a 为1,条件成立,条件2 是!b,b 为0 时,!b 为1,条件成立,两个条件之间是逻辑与关系,两个条件都满足,整个条件 就满足,符合a 等于0 且b 等于0;选项D 中 (a0) 条件满足为1, (b0) 条件满足也为1,两个都满足相加结果为2 两个条件有任意不满足则相加结果可能为0 或 (1 。) 因此,判断相加结果是否等于 2,符合a 等于0 且b 等于0;第 12 题如果 a 为 int 类型的变量下列哪个表达式可以正确求出满足 “大于等于 a 且是 4 的倍数” 的整数中最小的 A.a * 4B.a / 4 * 4C.(a 3) / 4 * 4D.a - a % 4 4选项A,假设a 为3,a4 即为 (3412,12) 虽然满足大于等于a 且是4 的倍数,但 不是满足条件的整数中最小的,排除A;选项B,假设a 为3,a/3 结果为0,因为a 为int 类型,int 类型进行计算,结果 还是int,会把小数部分舍去,故 (a/3*4) 结果为0,不满足条件,排除B选项C,令 (a4kt) ,k 是一个整数, (0t3) ,则 ((a3) / 4(4 kt3) / 4k(t3) / 4) 如 果a 是4 的倍数,则 (t0) , ((a3) / 4 * 4k^{} 4a) ,等于a 且是4 的倍数;否则 (t1) ,((4 k4) / 4^{} 4(a3) / 4^{} 4(4 k6) / 4^{} 4) ,即 ((4 k4)(a3) / 4^{*} 4(4 k4)) ,结果为 4k4,大于a 且是4 的倍数的整数中最小的,满足题意;选项D,假设a 为 (4,4%40) (a-a%448) ,8 虽然满足大于等于a 且是4 的倍数, 但不是满足条件的整数中最小的,排除D;第 13 题在下列代码的横线处填写 可以使得输出是 “20 10”。#includeiostreamusingnamespacestd;intmain(){inta10,b20;a;// 在此处填入代码ba/100;aa%100;couta bendl;return0;}A.a bB.(a b) * 100C.b * 100 aD.a * 100 b【解析】由于题目中没有分支循环语句,可以尝试由结果反推已知在第8 行,输出“20 10”,因此此时a 为20b 为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 为10b 为20,四个选项中,只有选项D 的表达式的计算结果为1020所以本题正确 答案为D第 14 题在下列代码的横线处填写 可以使得输出是 “1248”。#includeiostreamusingnamespacestd;intmain(){for(inti1;i8;)// 在此处填入代码couti;return0;}A.iB.i * 2C.i 2D.i * 2【解析】本题考察控制语句结构中的循环结构变量i 的初始值是1,循环条件 是i 小于等于8,循环范围是从1 到8,循环体中输出i,得到的输出是1248,规 律是在前一个的基础上乘2,每次i*2 之后赋给i,所以本题正确答案为B【解析】本题考察循环结构和选择结构循环范围是从1 到20,每次循环结束 后i,i 自增1;循环内判断当前数是3 或者是5 的倍数,就将i 累加到sum 当 中,故从1 到20,满足条件的数有3 5 6 9 10 12 15 18 20,相加结果为98,所以 本题正确答案为C第 15 题执行以下 C 语言程序后输出结果是 。#includeiostreamusingnamespacestd;intmain(){intsum0;for(inti1;i20;i)if(i%30||i%50)sumi;coutsumendl;return0;}A. 210B. 113C. 98D. 15【解析】本题考察计算机基础中快捷键的使用CtrlX 表示剪切文件(复制并从原 位置删除),CtrlV 表示粘贴所剪切的文件所以本题正确二、判断题每题 2 分共 20 分题号12345678910答案√××√××××√√在 Windows 系统中通过键盘完成对选定文本移动的按键组合是先 CtrlX移动到目标位置后按 CtrlV。 【解析】本题考察计算机基础中快捷键的使用CtrlX 表示剪切文件(复制并从原 位置删除),CtrlV 表示粘贴所剪切的文件所以本题正确程序员用 C、C、Python、Scratch 等编写的程序能在 CPU 上直接执行。 【解析】本题属于对编程语言特点的考察题目中所列举的编程语言,均无法在 CPU 上直接执行,而是需要通过各自的方式,转换成机器语言后才能被CPU 识 别和执行,所以本题错误在 C 语言中注释不宜写得过多否则会使得程序运行速度变慢。 【解析】本题考察计算机的编程环境注释信息是写在代码当中方便程序阅读者 理解代码的,养成书写注释的好习惯能够为编写更大规模的程序及团队合作打好 基础注释信息会在编译过程中被去掉,不会产生机器指令,也就不会影响程序 运行速度,所以本题错误在 C 语言中标识符中可以有数字但不能以数字开头。 【解析】本题考察C语言中变量的定义与使用根据变量的命名规则:1.只能 包含大小写字母数字下划线;2.必须以大小写字母或者下划线开头;3.不能 使用C的关键字故标识符中可以有数字,但不能以数字开头,所以本题正确‘3’ 是一个 int 类型常量。 【解析】本题主要考察基本数据类型int 是整型,例如3 是一个int 类型常量 但3 加上单引号之后’3’在C语言中表示字符,它是char 类型常量所以本题错 误if 语句中的条件表达式的结果必须为 bool 类型。 【解析】本题主要考察控制语句结构if 语句的条件表达式不一定是bool 类型, 也可能是其他类型,任何非零值都会被视为真,而零值会被视为假例如,如果 a 为int 类型变量,则if (a) ; 是否符合C语法的if 语句,表示判断a 是否为0:a 不等于0 时,则视为真,if 条件成立;反之,如果a 等于0,则视为假,if 条件 不成立但a 的类型为int 类型,并不是bool 类型,所以本题错误for 语句的循环体至少会执行一次。 【解析】本题主要考察for 循环结构,for 循环分四步走:1. 执行第一个分号前 的初始表达式;2. 判断两个分号之间的循环条件表达式结果是否为真;3. 执行 循环体;4. 执行第二个分号后的步进表达式,并回到第2 步重新判断其中第2 步,如果执行初始表达式后的状态循环条件表达式为假,则不会执行循环体此 时循环体一次也没有执行就结束了循环,所以本题错误如果 a 为 int 类型的变量则赋值语句a a 3;是错误的因为这条语句会导致 a 无意义。 【解析】本题主要考察变量的定义与使用尽管数学上aa3 是无解的,但在 C语言中aa3 并不表示方程或恒等式a 为int 类型的变量,执行 (aa3) ;,会 让a 的值变为在原值的基础上增加3,不会导致a 无意义所以本题错误如果 a 为 int 类型的变量则表达式(a / 4 2)和表达式(a 8 a 11)的结果总是相同的。 【解析】本题考察基本运算由于a 为int 类型,表达式a/4 中的除号/为整除运 算因此表达式 ((a/42)) 表示a 除以4 的商为2,于是a 的值从8 到11 时表达式结果为真,否则为假。这与表达式(a 8 (a11) 的结果总是相同的,所以本 题正确表达式 (3.5 * 2) 的计算结果为 7.0且结果类型为 double。 【解析】本题考察了基本运算中的算术运算,在C语言中,3.5 为double 类型 常量,2 为int 类型的常量,double 类型与int 类型做乘法运算的结果是double 类型,结果为7.0,所以本题正确三、编程题每题 25 分共 50 分1. 每月天数问题描述小明刚刚学习了每月有多少天以及如何判断平年和闰年想到可以使用编程方法求出给定的月份有多少天。你能做到吗输入描述输入一行包含两个整数分别表示一个日期的年、月。输出描述输出一行包含一个整数表示输入月份有多少天。样例输入 12022 1样例输出 131样例输入 22020 2样例输出 229【题目大意】条件判断问题,主要分清平年和闰年,平年2 月28 天,闰年2 月 29 天,其余按照大小月取分,输出对应的天数1.定义变量:年份y月份m 为int 类型判断是否为闰年的bool 类型leap 并赋 值为false(一开始让它为平年);2.输入年份月份;3.判断是否为闰年,如果是400 的倍数,或者是4 的倍数但不是100 的倍数,就 是闰年,将leap 改为true;4.判断是否为大月:135781012 月为大月,输出31;小月:46 911 月为小月,输出30;如果不是大月也不是小月,看下是否为闰年,闰年输 出29,否则输出28参考程序#includeiostreamusingnamespacestd;intmain(){inty0,m0;cinym;boolleapfalse;// 判断闰年if(y%4000)leaptrue;if(y%40y%100!0)leaptrue;if(m1||m3||m5||m7||m8||m10||m12)cout31endl;// 大月elseif(m4||m6||m9||m11)cout30endl;// 小月elseif(leap)cout29endl;// 闰年2月elsecout28endl;// 平年2月return0;}2. 长方形面积问题描述小明刚刚学习了如何计算长方形面积。他发现如果一个长方形的长和宽都是整数它的面积一定也是整数。现在小明想知道如果给定长方形的面积有多少种可能的长方形满足长和宽都是整数如果两个长方形的长相等、宽也相等则认为是同一种长方形。约定长方形的长大于等于宽。正方形是长方形的特例即长方形的长和宽可以相等。输入描述输入一行包含一个整数 A表示长方形的面积。约定 2 ≤ A ≤ 1000。输出描述输出一行包含一个整数 c表示有 c 种可能的长方形。样例输入 14样例输出 12样例解释 12 种长方形面积为 4它们的长宽分别为 2×2、4×1。样例输入 26样例输出 22样例解释 22 种长方形面积为 6它们的长宽分别为 3×2、6×1。【题目大意】统计长方形的个数两个长方形的长和宽相等算一种情况,所以规 定长大于宽;长和宽相等是正方形,是长方形的特例,算一种情况统计完个数 之后输出1.定义变量:面积area计数变量cnt宽w;2.利用循环列举所有宽的可能性,从1 开始,到宽*宽小于等于面积即可,后面 大于宽的就是长了,和前面统计过的算一种情况,所以不用往后遍历3.每次循环判断面积对宽取余是不是为0,如果为0,说明长宽都是整数,满 足题意,计数变量cnt;4.for 循环结束后输出计数变量cnt【解题思路】参考程序#include iostream using namespace std; int main() { int area 0, cnt 0; //面积area计数变量cnt cin area; //输入面积 for (int w 1; w * w area; w) { //宽从1 开始到宽*宽面积 if (area % w 0) //如果面积是宽的倍数,说明满足题意,cnt cnt; } cout cnt endl; //输出cnt return 0; } 用循环列举所有宽的可能性,从1 开始,到宽*宽小于等于面积即可,后面 大于宽的就是长了,和前面统计过的算一种情况,所以不用往后遍历 3.每次循环判断面积对宽取余是不是为0,如果为0,说明长宽都是整数,满 足题意,计数变量cnt; 4.for 循环结束后输出计数变量cnt 【解题思路】 #### 参考程序 c #include iostream using namespace std; int main() { int area 0, cnt 0; //面积area计数变量cnt cin area; //输入面积 for (int w 1; w * w area; w) { //宽从1 开始到宽*宽面积 if (area % w 0) //如果面积是宽的倍数,说明满足题意,cnt cnt; } cout cnt endl; //输出cnt return 0; }