目录
一、选择。(每题3分,共30分)
1.下面在图1填入哪行代码才能输出图2文字(在c = 103的情况下)。
#include <iostream>
using namespace std;
int main()
{
int c;
cin >> c;
for(int i = 40;i <= c;______________/*在此处填入代码*/)
{
cout << (char)i << endl;
}
return 0;
}
图1
(
+
.
1
4
7
:
=
@
C
F
I
L
O
R
U
X
[
^
a图2
☑️A.i *= 3
☑️B.i /= 3
☑️C.i += 3
☑️D.i -= 3
2.高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的 可执行代码。
☑️A. 编辑
☑️B. 保存
☑️C. 调试
☑️D. 编译
3.排序算法是稳定的(Stable Sorting),就是指排序算法可以保证,在待排 序数据中有两个相等记录的关键字 R 和 S(R 出现在 S 之前),在排序后的列表 中 R 也一定在 S 前。下面关于排序稳定性的描述,正确的是( )。
☑️A. 冒泡排序是不稳定的。
☑️B. 插入排序是不稳定的。
☑️C. 选择排序是不稳定的。
☑️D. 以上都不正确。
4.下列关于 C++语言中指针的叙述,不正确的是( )。
☑️A. 指针变量中存储的是内存地址。
☑️B. 定义指针变量时必须指定其指向的类型。
☑️C. 指针变量只能指向基本类型变量,不能指向指针变量。
☑️D. 指针变量指向的内存地址不一定能够合法访问。
5.在下列代码的横线处填写( ),可以使得输出是“20 10”。
#include <iostream>
using namespace std;
void xchg(___________)//在此处填入代码
{
int t = *x;
*x = *y;
*y = t;
}
int main()
{
int a = 10,b = 20;
xchg(&a,&b);
cout << a << " " << b << endl;
return 0;
}
☑️A. int x, int y
☑️B. int * x, int * y
☑️C. int a, int b
☑️D. int & a
6. 下列关于 C++语言中函数的叙述,正确的是( )。
☑️A. 函数必须有名字。
☑️B. 函数必须有参数。
☑️C. 函数必须有返回值。
☑️D. 函数定义必须写在函数调用前。
7. 以下数组定义,符合 C++语言语法的是( )。
☑️A. int a[];
☑️B. int b['3'];
☑️C. int c[3.0];
☑️D. int[3] d;
8.下列关于 C++语言中数组的叙述,不正确的是( )。
☑️A. 数组必须先定义后使用。
☑️B. 数组的所有元素在内存中是连续存放的。
☑️C. 除了字符数组,在定义数组时“[]”内必须有常数。
☑️D. 不能对数组赋值,但可以对数组的每个基础类型的元素赋值。
9.如果 a 和 b 均为 int 类型的变量,下列表达式能正确判断“a 等于 b”的是 ( )。
☑️A. ((a / b) == 1)
☑️B. ((a & b) == a)
☑️C. ((a ^ b) == 0)
☑️D. ((a | b) == b)
10.下列关于进制的叙述,不正确的是( )。
☑️A. 正整数的二进制表示中只会出现 0 和 1。
☑️B. 10 不是 2 的整数次幂,所以十进制数无法转换为二进制数。
☑️C. 从二进制转换为 8 进制时,可以很方便地由低到高将每 3 位二进制位转换为 对应的一位 8 进制位。
☑️D. 从二进制转换为 16 进制时,可以很方便地由低到高将每 4 位二进制位转换 为对应的一位 16 进制位。
二、判断。(每题2分,共20分)
1.一个算法可以用不同的形式来描述,但要求描述比较规范,因此不能用自然语言描述。
✔️ | ❌
2. 域名是由一串用点分隔的名字来标识互联网上一个计算机或计算机组的名称, CCF 编程能力等级认证官方网站的域名是 gesp.ccf.org.cn,其中顶级域名是 gesp。
✔️ | ❌
3. 数据编码方式只有原码、反码、补码三种。
✔️ | ❌
4. 在 C++语言中,长度为 n 的数组,合理的下标范围是从 0 到 n,包括 0 和 n。
✔️ | ❌
5. 字符常量'\0'常用来表示字符串结束,它和字符常量'0'是不同的。
✔️ | ❌
6. 在 C++语言中,如果一个函数可能抛出异常,那么一定要在 try 子句里调用 这个函数。
✔️ | ❌
7. 如果希望记录 10 个最长为 99 字节的字符串,可以将字符串数组定义为 char s[100][10];。
✔️ | ❌
8. 字符常量'0'和'\0'是等价的。
✔️ | ❌
9. >=和>>=都是 C++语言的运算符。
✔️ | ❌
10. 由于文件重定向操作,程序员在使用 C++语言编写程序时无法确定通过 cout 输出的内容是否会被输出到屏幕上。
✔️ | ❌
三、编程题。(每题25分,共50分)
1. 幸运数
【问题描述】
小明发明了一种“幸运数”。一个正整数,其偶数位不变(个位为第 1 位, 十位为第 2 位,以此类推),奇数位做如下变换:将数字乘以 7,如果不大于 9 则作为变换结果,否则把结果的各位数相加,如果结果不大于 9 则作为变换结果, 否则(结果仍大于 9)继续把各位数相加,直到结果不大于 9,作为变换结果。 变换结束后,把变换结果的各位数相加,如果得到的和是 8 的倍数,则称一开始 的正整数为幸运数。 例如,16347:第 1 位为 7,乘以 7 结果为 49,大于 9,各位数相加为 13, 仍大于 9,继续各位数相加,最后结果为 4;第 3 位为 3,变换结果为 3;第 5 位为 1,变换结果为 7。最后变化结果为 76344,对于结果 76344 其各位数之和 为 24,是 8 的倍数。因此 16347 是幸运数。
【输入描述】
输入第一行为正整数n,表示有n个待判断的正整数。约定 1 ≤ n≤ 20。 从第 2 行开始的n行,每行一个正整数,为待判断的正整数。约定这些正整 数小于。
【输出描述】
输出n行,对应n个正整数是否为幸运数,如是则输出'T',否则输出'F'。 提示:不需要等到所有输入结束在依次输出,可以输入一个数就判断一个数 并输出,再输入下一个数。
【样例输入】
2
16347
76344
【样例输出】
T
F
2. 密码合规检测
【问题描述】
网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。合 规的密码应满足以下要求: 1、只能由 a-z 之间 26 个小写字母、A-Z 之间 26 个大写字母、0-9 之间 10 个数字以及!@#$四个特殊字符构成。 2、密码最短长度:6 个字符,密码最大长度:12 个字符。 3、大写字母、小写字母和数字必须至少有其中两种,以及至少有四个特殊 字符中的一个。
【输入描述】
输入一行不含空格的字符串。约定长度不超过 100。该字符串被英文逗号分 隔为多段,作为多组被检测密码。
【输出描述】
输出若干行,每行输出一组合规的密码。 输出顺序以输入先后为序,即先输入则先输出。
【样例输入 1】
seHJ12!@,sjdkffH$123,sdf!@&12HDHa!,123&^YUhg@!
【样例输出 1】
seHJ12!@ sjdkffH$123
【样例解释 1】
输入被英文逗号分为了四组被检测密码:“seHJ12!@”、“sjdkffH$123”、 “sdf!@&12HDHa!”、“123&^YUhg@!”。其中,“sdf!@&12HDHa!”长度超过 12 个字符,不合规;“123&^YUhg@!”包含四个特殊字符之外的字符“^”,不合规。