一、单选题(每题2分,共30分)
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
答案 | A | D | B | C | B | C | B | C | C | C | C | D | C | C | B |
1、在C++中 ,下列不可做变量的是( )。
A. five-Star
B. five_star
C. fiveStar
D. _fiveStar
答案【A】
题目解析:依据变量名的命名规则,组成部分只有数字、字母和下划线,选项A是错误的变量命名方式,B选项和C选项为常规命名方式均正确,依据命名规则数字不能作为开头,但是下划线是可以作为开头的所以D选项也正确,故答案为A选项
2、C++表达式3-3*3/5的值是( )。
A. -1.2
B. 1
C. 0
D. 2
答案【D】
题目解析:表达式中没有小括号,按照运算符的优先级和从左至右的顺序,会先计算3乘以3的结果然后除以5,由于9整除5结果为1,所以最后是计算3减1的结果,故答案为D选项
3、在C++中 ,假设N为正整数 ,则表达式 cout << (N % 3 + N % 7) 可能输出的最⼤值是( )。
A. 6
B. 8
C. 9
D. 10
答案【B】
题目解析:题目中的表达式为变量模3和模7的结果求和,正整数模3最大的结果为2, 模7的最大结果为6,所以可能输出的最大值为2+6=8,故答案为B选项
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】
题目解析:题目中使用printf进行格式化输出,由于单独一个%不会直接显示双%则会正常显示,所以整体格式为5%2={},花括号内部%d为占位符,显示的结果为5%2的计算结果1,故答案为C选项
5、对整型变量i,执⾏C++语句c in >> i, cout << i 时如果输⼊5+2,下述说法正确的是( )。
A.将输出整数7
B.将输出5
C.语句执⾏将报错 ,输⼊表达式不能作为输出的参数
D.语句能执⾏ ,但输出内容不确定
答案【B】
题目解析:按照题目是我表示代码进行输入,首先程序不会报错可以正常接收数据,在C++中使用cin >> i从标准输入读取数据到整型变量i时,cin会尝试读取一个有效的整数。如果输入的是"5+2"这样的字符串,cin只会读取直到它遇到第一个非数字字符为止。因此,在这个例子中,cin将只读取5,并将它存储在变量i,故答案选择B选项
6、下面C++代码执行后的输出是( )。
A. 102={102}
B. a+1={a+1}
C. a+1={102}
D. a先被赋值为浮点数 ,后被赋值为整数 ,执⾏将报错
答案【C】
题目解析: 按照给定的程序,变量a中存储的数值是101,运行第四行格式化输出之后会将加一的计算结果102不进行保留小数位显示在格式内,所以最终输出的格式为a+1={102},故正确答案为C选项
7、表达式9/4 - 6 % (6 - 2) * 10 的值是( )。
A. -17.75
B. -18
C. -14
D. -12.75
答案【B】
题目解析:题目中的表达式按照运算优先级规律会先将9除以4的整除结果2算出来,然后减去后方最终的计算结果6%4*10=20,结果为-18,故正确选项为B选项
8、下面C++代码执行时输入10后,正确的输出是( )。
A. 第5行代码1
B.第6行代码1
C.第5行代码 1
D.第6行代码 1
答案【C】
题目解析:题目中向程序输入的数据为10,由于10%3表达式结果为1,进行分支判断,会执行if语句后方的输出,按照输出格式正常显示需要注意的格式是%2d,所以答案应该为C选项不可错选为A选项
9、下⾯C++代码执⾏后输出是( )。
A. 9 45
B. 10 55
C. 10 45
D. 11 55
答案【C】
题目解析:题目中for循环的写法没有采用最常规的写法,但是程序逻辑是清晰的,累加的所有数字为0 1 2 3 4 5 6 7 8 9,最终变量i变为10循环结束,所以输出的结果为10和45,故正确答案为C选项
10、下⾯C++代码⽤于判断N是否为质数(只能被1和它本⾝整除的正整数) 。程序执⾏后 ,下⾯有关描述正确 的是( )。
A.如果输⼊负整数 ,可能输出“是质数”
B.如果输⼊2,将输出“不是质数”, 因为此时循环不起作⽤
C.如果输⼊2,将输出“是质数”, 即便此时循环体没有被执⾏
D.如果将if (N >= 2) 改为if (N > 2) 将能正确判断N是否质数
答案【C】
题目解析: 如果输入的是负整数,程序进行分支判断一定是输出”不是质数“,A选项错误;如果输入的是2,flag的结果会是true,虽然循环没有执行但是最终的结果会输出”是质数“,所以C选项正确B选项错;如果将最开始的判断条件改写为>2,则不能正确判断是否为质数,这样会忽略掉质数2,故答案选择C选项
11、下⾯的C++代码⽤于求1~N之间所有奇数之和 ,其中N为正整数 ,如果N为奇数 ,则求和时包括N。有关描述 错误的是( )。
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】
题目解析:如果输入数据10,则累加的数字是1 3 5 7 9,最终计算结果为25 A选项正确;如果输入的数据是5,则累加的数字是1 3 5最终结果为9,B选项正确;由于起点是1,所以采用步长为2的方式同样可以实现要求D选项正确;如果将条件判断和变量i自增切换位置则程序计算结果错误,故答案为C选项
12、如果⼀个整数N能够表⽰为 X*X 的形式 ,那么它就是⼀个完全平⽅数 ,下⾯C++代码⽤于完成判断N是否为 ⼀个完全平⽅数 ,在横线处应填⼊的代码是( )。
A. i == N*N
B. i*10 == N
C. i+i == N
D. i*i == N
答案【D】
题目解析: 根据题目描述条件,应判断变量i的平方结果是否为N,四个选项中只有D选项是正确的书写格式,且符合题目要求,故答案为D选项
13、执⾏下⾯C++代码后输出的cnt的值是( )。
A. 8
B. 7
C. 4
D. 1
答案【C】
题目解析:题目最终求解的是循环次数,需要注意变量i步长为2,最大增长到6,后面循环将不再成立,所以共循环四次,故答案为C选项
14、⼩杨⽗母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级 ,那他可以选择的认证语⾔有⼏ 种? ( )
A. 1
B. 2
C. 3
D. 4
答案【C】
题目解析:GESP认证考试可选语言有三种分别是scratch、python和C++,故答案为C选项
15、ENIAC于1946年投⼊运⾏ ,是世界上第⼀台真正意义上的计算机 ,它的主要部件都是( )组成的。
A.感应线圈
B.电⼦管
C.晶体管
D.集成电路
正确答案【B】
题目解析:本题为计算机信息学历史知识,ENIAC,全称为Electronic Numerical Integrator And Computer,它是完全的电子计算机,能够重新编程,解决各种计算问题。它于1946年2月14日在美国宣告诞生。它的主要部件都是由电子管组成的,故答案为B选项
二、判断题 (每题 2 分,共 20 分)
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
答案 | × | × | √ | × | √ | √ | × | × | × | √ |
1、在C++代码中变量X被赋值为16.44,则cout << X / 10 执⾏后输出的⼀定是1 。( )
答案【错误】
题目解析:题目没有指明变量X的类型,并不一定是整数类型,故答案为错误
2、C++的整型变量N被赋值为10,则语句cout << N / 4 << "->" << N % 4 << "->" << N / 4.0 执⾏ 后输出是 2->2->2.0。( )
答案【错误】
题目解析:变量N被赋值为10,除以4会进行整除答案为2,和4做模运算结果也为2,最后和4.0做除法可以算出正确的结果2.5,故答案为错误
3、定义C++的float型变量N,则语句c in >> N; cout << int(float(N)) 可以输⼊正负整数和浮点数, 并将其转换为整数后输出 。 ( )
答案【正确】
题目解析:按照题目所示的类型转换是可以完成对于正负整数和浮点数的正确类型转换,最后输出为整数类型的结果,故答案为正确
4、C++的整型N被赋值为5,语句printf("%d*2",N)执⾏后将输出10。( )
答案【错误】
题目解析:按照题目所示的格式进行输出*2并不会参与到运算中而是会正常显示,所以输出的答案是5*2,故答案为错误
5、在C++中,break语句⽤于终⽌当前层次的循环 ,循环可以是 for循环 ,也可以是 while循环 。 ( )
答案【正确】
题目解析:break以语句可以正确终止当前层次的循环,并且无论是for循环还是while循环都可以,故答案为正确
6、在C++, continue语句通常与if语句配合使⽤ 。 ( )
答案【正确】
题目解析:continue语句在循环中用于跳过本次循环,通常需要设定某种条件来跳过对应的循环,所以说与if语句配合使用情况居多,故答案为正确
7、在C++代码中 ,不可以将变量命名为 printf, 因为 printf是C++语⾔的关键字 。 ( )
答案【错误】
题目解析: 将printf作为变量名是非常不妥当的做法,但题目描述的后半句话存在明显错误因为printf不是C++语言的关键字,故答案为错误
8、在C++中有整型变量N,则表达式N += 8/4//2 相当于N += 8/(4/2)。( )
答案【错误】
题目解析:按照题目描述的表达式,双斜线会被理解为注释,进行计算相当于书写的是N+=8/4,故答案为错误
9、C++中定义变量int N,则表达式( !!N)的值也是N的值。( )
答案【错误】
题目解析:按照题目表达式对数字进行两次取反运算的结果一定是布尔类型,例如变量N为数字5,则最终输出的表达式的结果为1,故答案为错误
10、GESP测试是对认证者的编程能⼒进⾏等级认证, 同⼀级别的能⼒基本上与编程语⾔⽆关 。 ( )
答案【正确】
题目解析:编程能力与编程语言没有直接联系,编程能力考察的是认证者的程序设计和程序理解能力,故答案为正确
三、编程题(每题25分,共50分)
题号 | 1 | 2 |
答案 |
1、休息时间
题面描述
小杨计划在某个时刻开始学习,并决定在学习k秒后开始休息。
小杨想知道自己开始休息的时刻是多少。
输入格式
前三行每行包含一个整数,分别表示小杨开始学习时刻的时h、分m、秒s(h,m,s的值符合1≤h ≤12,0 ≤m ≤59,0 ≤s ≤59)
第四行包含一个整数k,表示小杨学习的总秒数(注:k的值符合1≤k ≤3600)。
输出格式
输出一行,包含三个整数,分别表示小杨开始休息时刻的时、分、秒。
样例1
样例解释
小杨在时刻12:59:59开始学习,学习10秒后开始休息,即在13:0:9时刻开始休息。
数据范围
对于全部数据,保证有1≤h≤12,0≤m≤59,0≤s≤59,1≤k≤3600。
题目解析
由于题目中数据涉及到小时分钟和秒数,如果通过最直观的方法将学习的时间做转化分别加到对应的小时分钟和秒数上,就会出现更加复杂情况,例如分钟满了60,则需要将小时和分钟均发生变化。所以将开始学习的时间全部转化成统一的单位秒钟数,学习的时间K秒直接与开始的秒数相加,便得到了休息时刻的总秒数,最后将总秒数再通过整除和模运算转换成小时分钟和秒钟,这样程序设计得更加合理。
参考程序
2、立方数
题面描述
小杨有一个正整数n,他想知道n是否是一个立方数。
一个正整数n是立方数当且仅当存在一个正整数x满足x×x×x=n。
输入格式
第一行包含一个正整数n。
输出格式
如果正整数n是一个立方数,输出Yes,否则输出No。
样例1
样例2
样例解释
对于样例1,存在正整数2使得8=2×2×2,因此8为立方数
对于样例2,不存在满足条件的正整数,因此9不为立方数
数据范围
对于全部数据,保证有1≤n ≤1000。
题目解析
依据题面的描述,需要检测是否存在一个数i使得i*i*i==n;依据这样一个条件可以在循环内进行检测,设定变量FL并附初始值为零表示没有找到状态,如果在循环内发现条件成立则可以将FL标记为1,循环结束后可以使用分支语句对FL的值进行判断,如果已经变成了1,证明N是一个立方数可以输出Yes,如果FL依然维持着零的状态则N不是一个立方数输出No。
参考程序