1
单选题(每题
2
分,共
30
分)
第
1
题
以下不可以做为
C++
变量的是( )
。
A.
FiveStar
B.
fiveStar
C.
5Star
D.
Star5
答案【
C
】
第
2
题
在
C++
中,与
for(int i = 10; i < 20; i +=2) cout << i;
输出结果相同的是( )
。
A.
for(int i = 10; i < 19; i +=2) cout << i;
B.
for(int i = 11; i < 19; i +=2) cout << i;
C.
for(int i = 10; i < 21; i +=2) cout << i;
D.
以上均不对
答案【A】
第
3
题
以下
C++
代码实现从小到大的顺序输出能整除
N
的数(
N
的因子),例如
N=18
时输出1 2 3 6 9 18,横线处应填 入( )。

A.
int i = 0; i < N; i++
B.
int i = 1; i < N; i++
C.
int i = 0; i < N+1; i++
D.
int i = 1; i < N+1; i++
答案【D】
第
4
题
下面
C++
代码用于判断输入的整数是否为对称数,如
1221
、
12321
是对称数,但
123
、972不是对称数。下面 对该题对应代码的说法,正确的是( )。

A.
代码没有语法错误,如果
N
为对称数,第
8
行将能正确输出。
B.
代码没有语法错误,但如果
N
为负数,将导致死循环。
C.
代码存在语法错误,程序不能被执行。
D.
代码没有语法错误,但不能达到预期目标,因为循环结束
N
总为
0
。
答案【D】
第
5
题
下面
C++
代码用于判断
N
(大于等于
2的正整数)是否为质数(素数)。下面对如下代码的说法,正确的是( )。

A.
代码能正确判断
N
是否为质数。
B.
代码总是不能判断
N
是否质数。
C.
删除第
5
行
break
,将能正确判断
N
是否质数。
D.
代码存在漏洞,边界存在问题,应将第
2
行和第
7
行的
N / 2
改为
N / 2 + 1
。
答案【D】
第
6
题
下面
C++代码执行后的输出是( )。

A.
2#3#0
B.
1#2#0
C.
1#0#
D.
2#3#
答案【A】
第
7
题
下面
C++
代码执行后的输出是( )。

A.
0
B.
8#8
C.
4
D.
4#4
答案【D】
第
8
题
下面
C++
代码执行后的输出是( )。

A.
100
B.
95
C.
55
D. 0
答案【C】
第
9
题
下面
C++
代码执行后的输出是( )。

A.
1
B.
1,3
C.
15,17
D. 1,10,12
答案【D】
第
10
题
下面
C++
代码执行后的输出是( )。

A.
5
B.
10
C.
20
D.
30
答案【B】
第
11
题
以下
C++
代码用于输出
1-100
(含)的整数平方数(完全平方数),如
16
是
4
的平方,横线处应填写(
)。

A.
int(sqrt(i)) * int(sqrt(i)) = i
B.
int(sqrt(i)) == sqrt(i)
C.
int(sqrt(i)) * int(sqrt(i)) == i
D. int(sqrt(i)) == int(i/sqrt(i))
答案【C】
第
12
题
下面的
C++
代码用于实现如下左图所示的效果,应在以下右图
C++
代码中填入(
)。


A.
与第
8
行下面填入一行:
cout << nowNum;
B.
与第
2
行下面填入一行:
cout << endl;
C.
与第
7
行下面填入一行:
cout << nowNum;
D.
与第
9
行下面填入一行: cout << endl;
答案【D】
第
13
题
某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动
选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。(
)
A.
麦克风
B.
扬声器
C.
油量表
D.
传感器
答案【C】
第
14
题
现代计算机是指电子计算机,它所基于的是( )体系结构。
A.
艾伦
·
图灵
B.
冯
·
诺依曼
C.
阿塔纳索夫
D.
埃克特
-莫克利
答案【B】
第
15
题
输入一个正整数
N
,想找出它所有相邻的因数对,比如,输入
12
,因数对有
(1,2)
、
(2,3)
、
(3,4)。下面哪段代 码找不到所有的因数对?( )
A.
for(i=1;i<N;i++) if(!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);
B.
for(i=2;i<N;i++) if(!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);
C.
for(i=2;i<N/2;i++) if(!(N%(i-1)) && !(N%i)) printf("(%d,%d)\n", i-1, i);
D.
for(i=1;i<N/2;i++) if(!(N%i) && !(N%(i+1))) printf("(%d,%d)\n", i, i+1);
答案【B】
2
判断题(每题
2
分,共
20
分)
第
1
题
C++
表达式
-7/2
的值为整数
-3
。( )
答案【T】
第
2
题
C++
表达式
2*int('9')*2
的值为
36
。
( )
答案【F】
第
3
题
C++
表达式
3+2 && 5-5
的值为
false
。
( )
答案【F】
第
4
题
在
C++
代码中,执行
srand(0)
后连续两次执行
rand()
的结果相等。
( )
答案【F】
第
5
题
C++
代码中
while(1){...}
的判断条件不是逻辑值,将导致语法错误。( )
答案【F】
第
6
题
执行以下
C++
代码后将输出
0
。( )

答案【F】
第
7
题
在
C++
代码中,运算符只能处理相同的数据类型,不同类型之间必须转换为相同的数据类型。()
答案【F】
第
8
题
在
C++
代码中,虽然变量都有数据类型,但同一个变量也可以先后用不同类型的值赋值。( )
答案【T】
第
9
题
小杨最近在准备考
GESP
,他用的
Dev C++
来练习和运行程序,所以
Dev C++
也是一个小型操作系统。( )
答案【F】
第
10
题
任何一个
while
循环都可以转化为等价的
for
循环( )。
答案【T】
3
编程题(每题
25
分,共
50
分)
编程题
1
试题名称
:小杨做题
时间限制
:
1.0 s
内存限制
:
128.0 MB
问题描述
为了准备考试,小杨每天都要做题。第
1
天,小杨做了 道题;第
2
天,小杨做了 道题;从第
3 天起,小杨每天 做的题目数量是前两天的总和。
此外,小杨还规定,当自己某一天做了大于或等于 题时,接下来的所有日子里,他就再也不做题了。 请问,到了第 天,小杨总共做了多少题呢?
输入描述
总共
4
行。第一行一个整数 ,第二行一个整数 ,第三行一个整数 ,第四行一个整数 。
保证0<=a,b<=10; a,b<M<=1000000; 3<=N<=364 。
输出描述
一行一个整数,表示小杨 天里总共做了多少题目。
特别提醒
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任 何提示信息。
样例输入
1
1
2
10
5
样例输出
1
19
样例解释
1
小杨第一天做 1题,第二天做2 题,第三天做1+2=3
题,第四天做2+3=5题,第五天做3+5=8题。因此 他总共做了1+2+3+5+8=19 题。
样例输入
2
1
1
5
8
样例输出 2
12
样例解释
2
小杨前 5 天分别做了1,1,2,3,5题,由于第 5 天小杨做了5 题,而m=5,于是小杨从此以后不再做题。因此小杨总共做了1+1+2+3+5=12 题。
[参考程序]:
斐波那契数列求和 ,循环加判断
#include<iostream>
#include<cstdio>
int main(){
long long a=0, b=0, m=0, n=0, ans=0, c=0, i;
scanf("%lld%lld%lld%lld", &a, &b, &m, &n);
ans = a+b;
for(i=3; i<=n; i++) {
c = a+b;
ans += c;
a = b;
b = c;
if(c>=m) break;
}
printf("%lld\n", ans);
return 0;
}
编程题
2
试题名称
:小杨的
H
字矩阵
时间限制
:
1.0 s
内存限制
:
128.0 MB
问题描述

输入描述
一行一个整数 (5<=N<=49 ,保证 N为奇数)。
输出描述
输出对应的
“H
字矩阵
”
。
请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出 行,每行除了换行符 外恰好包含 个字符,这些字符要么是
-
,要么是
|
,要么是
a
。
你的输出必须和标准答案完全一致才能得分,
请在提交前仔细检查。
特别提醒
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任 何提示信息。
样例输入
1
5
样例输出
1

样例输入
2
7
样例输出
2

参考程序:
规律:第一列和最后一列输出 | ,中间行输出 - ,其余输出a
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
if (j == 1 || j == n) {//第一列或者最后一列,输出|
cout << '|';
} else if (i == n / 2 + 1) {//中间行,输出-
cout << '-';
} else {//其他,输出a
cout << 'a';
}
}
cout << endl;
}
return 0;
}