建网站和做微信哪个好,在线识别图片百度识图,全国企业信用信息公示系统广东,国外直播做游戏视频网站有哪些CCF编程能力等级认证GESP—C3级—20230611 单选题#xff08;每题 2 分#xff0c;共 30 分#xff09;判断题#xff08;每题 2 分#xff0c;共 20 分#xff09;编程题 (每题 25 分#xff0c;共 50 分)春游密码合规检测 答案及解析单选题判断题编程题1编程题2 单选题… CCF编程能力等级认证GESP—C3级—20230611 单选题每题 2 分共 30 分判断题每题 2 分共 20 分编程题 (每题 25 分共 50 分)春游密码合规检测 答案及解析单选题判断题编程题1编程题2 单选题每题 2 分共 30 分
1、高级语言编写的程序需要经过以下 操作可以生成在计算机上运行的可执行代码。
A. 编辑
B. 保存
C. 调试
D. 编译2、二进制数 11.01 在十进制下是 。
A. 3.01
B. 3.05
C. 3.125
D. 3.253、已知大写字符’A’的 ASCII 编码的十六进制表示为 0x41则字符’F’的ASCII 编码的十六进制表示为 。
A. 46
B. 47
C. 48
D. 494、以下哪个不是 C语言中的运算符
A.
B.
C. *
D. **5、如果字符串定义为 char str[] “Hello”;则字符数组str 的长度为 。
A. 0
B. 5
C. 6
D. 76、一个数组定义为 double array[3];则这个数组占用内存的大小为 。
A. 24
B. 12
C. 6
D. 37、以下数组定义符合 C语言语法的是 。
A. int a[];
B. int b[3];
C. int c[3.0];
D. int[3] d;8、下列关于进制的叙述不正确的是 。
A. 正整数的二进制表示中只会出现 0 和 1。
B. 10 不是 2 的整数次幂所以十进制数无法转换为二进制数。
C. 从二进制转换为 8 进制时可以很方便地由低到高将每3 位二进制位转换为对应的一位 8 进制位。
D. 从二进制转换为 16 进制时可以很方便地由低到高将每4 位二进制位转换为对应的一位 16 进制位。9、下列关于 C语言中数组的叙述不正确的是 。
A. 数组必须先定义后使用。
B. 数组的所有元素在内存中是连续存放的。
C. 除了字符数组在定义数组时“[]”内必须有常数。
D. 不能对数组赋值但可以对数组的每个基础类型的元素赋值。10、一个 int 类型的值做以下哪个操作一定会变回原来的值
A. 左移 3 位再右移 3 位。
B. 右移 3 位再左移 3 位。
C. 按位或 7再按位与-8。
D. 按位异或 7再按位异或 7。11、如果 a 和 b 均为 int 类型的变量下列表达式能正确判断“a 等于b”的是 。
A. ((a / b) 1)
B. ((a b) a)
C. ((a ^ b) 0)
D. ((a | b) b)12、如果 a 为 int 类型的变量下列哪个表达式可以正确求出满足“小于等于a且是 4 的倍数”的整数中最大的
A. (a (~3))
B. ((a 2) 2)
C. (a ^ 3)
D. ((a - 1) | 3) 113、在下列代码的横线处填写 可以使得输出是“24 12”。
#include iostreamusing namespace std;int main(){int a 12, b 24;________; // 在此处填入代码a a ^ b;b a ^ b;cout a b endl; return 0;
}A. a a ^ b
B. b a ^ b
C. a a b
D. b a b14、在下列代码的横线处填写 可以使得输出是“2”。
#include iostreamusing namespace std;int main(){int array[5] {3, 7, 5, 2, 4};int min 0;for (int i 0; i 5; i)if (____) // 在此处填写代码min array[i];cout min endl; return 0;
}A. min array[i]
B. min array[i]
C. min array[i]
D. 以上均不对。15、在下列代码的横线处填写 可以使得输出不是“31”。
#include iostreamusing namespace std;int main(){int array[5] {1, 2, 4, 8, 16};int res 0;for (int i 0; i 5; i)________; // 在此处填写代码cout res endl; return 0;
}A. res res array[i]
B. res res array[i]
C. res res | array[i]
D. res res ^ array[i]判断题每题 2 分共 20 分
1、一个算法可以用不同的形式来描述但要求描述比较规范因此不能用自然语言描述。
2、域名是由一串用点分隔的名字来标识互联网上一个计算机或计算机组的名称CCF 编程能力等级认证官方网站的域名是 gesp.ccf.org.cn其中顶级域名是gesp。
3、数据编码方式只有原码、反码、补码三种。
4、在 C语言中长度为 n 的数组合理的下标范围是从0 到n包括0 和n。
5、字符常量’\0’常用来表示字符串结束它和字符常量’0’是不同的。
6、在 C语言中可以使用字符如’0’作为数组下标。
7、在 C语言中数组被定义时它的大小就确定了。
8、计算机中存储的数据都是二进制形式。因此在使用C语言编写程序时将所有十进制数改写为相同数值的二进制数会使得程序运行效率更高。
9、在 C语言中表达式(0xf 015)的值为 true。
10、如果 a 为 int 类型的变量且表达式((a | 3) 3)的值为true则说明a 在从0到 3 之间可能为 0、可能为 3。
编程题 (每题 25 分共 50 分)
春游
【问题描述】 老师带领同学们春游。已知班上有N位同学每位同学有从0 到N−1的唯一编号。到了集合时间老师确认是否所有同学都到达了集合地点就让同学们报出自己的编号。到达的同学都会报出的编号不会报出别人的编号但有的同学很顽皮会多次报出。你能帮老师找出有哪些同学没有到达吗 【输入描述】 输入包含 2 行。第一行包含两个整数N和M表示班级有N位同学同学们共有M次报出编号。约定 2 ≤ N, M ≤ 1000。 第二行包含M个整数分别为M次报出的编号。约定所有编号都在合理范围内。 【输出描述】 输出一行。如果所有同学都到达则输出N否则由小到大输出所有未到达的同学编号空格分隔。 【样例输入 1】 3 3 0 2 1 【样例输出 1】 3 【样例输入 2】 3 5 0 0 0 0 0 【样例输出 2】 1 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!”包含四个特殊字符之外的字符 “^”不合规。 【样例输入 2】 2000 2004 【样例输出 2】 2
答案及解析
单选题
1、 【答案】D 【考纲知识点】编程环境(一级) 【解析】本题属于考察计算机基础知识中的编辑、编译、解释、调试的概念其中编辑是编写修改代码保存是将代码保存下来调试是测试运行代码而编译是将源程序翻译成可执行代码所以本题正确答案为 D。
2、 【答案】D 【考纲知识点】进制转换 (三级) 【解析】本题属于考察计算机基础知识中的进制与进制转换二进制11.01 换算成 10 进制为 1 ∗ 2 1 1 ∗ 2 0 0 ∗ 1 2 1 ∗ 1 2 2 3.25 1 * 2^1 1 * 2^0 0 * \frac{1}{2} 1 * \frac{1}{2^2} 3.25 1∗211∗200∗211∗2213.25 。所以本题正确答案为D。
3、 【答案】A 【考纲知识点】ASCII 编码 (二级) 【解析】本题属于考察计算机基础知识中的 ASCII 码已知’A’的ASCII 编码十六进制表示为 0x41则’F’的 ASCII 编码比’A’的 ASCII 编码大5所以字符’F’的ASCII 编码十六进制表示为 46。所以本题正确答案为 A。
4、 【答案】D 【考纲知识点】基本运算一级位运算三级 【解析】本题属于考察计算机基础知识中的运算符其中、、*分别可以表示按位与、逻辑与和乘法但**不是 C语言中的运算符。本题正确答案为D。
5、 【答案】C 【考纲知识点】字符串三级 【解析】本题属于考察计算机基础知识中的字符串概念。数组初始化时[]内可省略数组长度此时数组长度为初始值的长度。字符串Hello的长度为5但是字符串最后需要额外保存一个’\0’符号作为结束位所以字符数组str 的长度为6。所以本题正确答案为 C。
6、 【答案】A 【考纲知识点】计算机的存储二级一维数组三级【解析】本题属于考察计算机基础知识中的内存概念double 类型的数据占用内存为 8 字节array 数组共使用了 3 个 double 类型的数据所以内存大小为24。所以本题正确答案为 A。
7、 【答案】B 【考纲知识点】一维数组三级 【解析】本题属于考察计算机基础知识中的数组概念在C中每个字符都有对应的 ASCII 编码当需要使用整数类型的值时可以将字符通过对应的ASCII 编码转换为整数所以 int b[’3’];等价于 int b[51];。所以本题正确答案为B。
8、 【答案】B 【考纲知识点】进制转换三级 【解析】本题属于考察计算机基础知识中的进制与进制转换概念任意数字都可以在不同的进制之间转换所以本题正确答案为 B。
9、 【答案】C 【考纲知识点】一维数组三级 【解析】本题属于考察计算机基础知识中的数组概念任意类型的数组只要有初始化在数组定义时就可以省略[]内的常数。所以本题正确答案为C。
10、 【答案】D 【考纲知识点】位运算三级 【解析】本题属于考察计算机基础知识中的位运算相关概念A 选项可能存在越界的问题B 选项会将低位的 3 位清零C 选项肯定是错的D 选项异或两次7等同于原数所以本题正确答案为 D。
11、 【答案】C 【考纲知识点】位运算三级 【解析】本题属于考察计算机基础知识中的位运算相关概念。选项 A例如 a 为 5b 为 3则 a/b 结果为 1但 a 并不等于b选项 B例如 a 为 5b 为 15则 ab 结果为 5但 a 并不等于b选项 C(a ^ b) 0 说明 a 和 b 的二进制位上的每一位都相等等价于“a 等于b”选项 D例如 a 为 5b 为 15则 a|b 结果为 15但 a 并不等于b所以本题正确答案为 C。
12、 【答案】A 【考纲知识点】位运算三级 【解析】本题属于考察计算机基础知识中的位运算相关概念a一个数得到的必然是小于等于 a 的数同时题目要求是 4 的倍数也就是最后两位要等于0(~3)正好是除了最后两位是 0其余全是 1满足要求所以本题正确答案为A。
13、 【答案】B 【考纲知识点】位运算三级 【解析】本题属于考察计算机基础知识中的位运算相关概念因为异或运算中a ^ a 0 ; a ^ 0 a当选项为 B 时第 5 行 b ’ ( a ^ b )第 6 行a ’ a ^ b ’ a ^ ( a ^ b ) b第7行 b a ^ b ’ b ^ ( a ^ b ) a,正好对 a、b 进行了交换。所以本题正确答案为B。
14、 【答案】D 【考纲知识点】循环结构(一级),一维数组三级 【解析】本题属于考察计算机基础知识中的数组相关概念从结果输出2 以及变量名字 min 上可以看出题目本身想求一个最小值但是初始化为min0所以选项 ABC 的最终结果都不会等于 2所以本题正确答案为D。
15、 【答案】B 【考纲知识点】位运算(三级) 【解析】本题属于考察计算机基础知识中的数组和位运算相关概念结果输出31 的二进制位是 11111而数组中的 5 个数的二进制分别是1、10、100、1000和 10000所以选项 A、C、D 都会输出 31只有 B 选项会输出0所以本题正确答案为 B。
判断题
1、 【答案】× 【考纲知识点】算法的概念与描述三级 【解析】本题属于考察算法相关概念算法不仅可以用程序语言描述也可以通过自然语言描述例如中文等所以本题错误。
2、 【答案】× 【考纲知识点】计算机存储与网络二级 【解析】本题属于考察域名相关概念域名是由两个或两个以上的词构成中间用点号分隔开最右边的那个词称为顶级域名所以顶级域名是cn所以本题错误。
3、 【答案】× 【考纲知识点】数据编码(三级) 【解析】本题属于考察数据编码相关概念数据编码的方式非常多例如格雷码、哈夫曼编码等它们适合使用的场景各不相同。所以本题错误。
4、 【答案】× 【考纲知识点】一维数组(三级) 【解析】本题属于考察数组相关概念长度为 n 的数组合理的下标范围是0到 n-1不包括 n所以本题错误。
5、 【答案】√ 【考纲知识点】字符串(三级) 【解析】本题属于考察字符串相关概念字符常量’\0’是字符串和字符数组的结束标记它的 ASCII 码为 0字符常量’0’的 ASCII 码为 48与’\0’是不同的字符常量。所以本题正确。
6、 【答案】√ 【考纲知识点】位运算(三级)【解析】本题属于考察数组相关概念在C中每个字符都有对应的 ASCII 编码当需要使用整数类型的值时可以将字符通过对应的 ASCII 遍码转换为整数0’的 ASCII 编码为 48所以int b[‘0’]等价于int b[48]所以本题正确。
7、 【答案】√ 【考纲知识点】一维数组(三级) 【解析】本题属于考察数组相关概念在 C中定义数组的时候就需要有明确的数组大小所以本题正确。
8、 【答案】× 【考纲知识点】编程环境(一级) 【解析】本题属于考察程序的基本概念无论编写程序时使用十进制还是二进制编译器都会翻译为二进制机器指令运行所以运行效率是一样的所以本题错误。
9、 【答案】× 【考纲知识点】进制转换(三级) 【解析】本题属于考察程序的进制相关概念0xf 是 16 进制下的f等于10 进制的 15015 是 8 进制下的 15等于 10 进制的 13。可见它们不相等所以本题错误。
10、 【答案】√ 【考纲知识点】位运算(三级) 【解析】本题属于考察位运算相关概念((a|3)3)说明a 只在二进制的最低位和第二低位可能为 1所以 0 ≤ a ≤ 3所以本题正确。
编程题1
1、 【解题思路】 1、使用 arrive 数组来记录每个同学是否到达初始为false表示没有到达。 2、每有一个同学报出编号就将 arrive 数组对应的编号改为true。 3、遍历 arrive 数组将数组中对应位置为 false 的下标输出并特判所有人均到达的情况。 【考纲知识点】循环结构一级模拟法、一维数组三级
#include iostreamusing namespace std;bool arrive[1000];int main(){int n 0, m 0;cin n m;// 初始化 arrive 数组为所有同学均未报到for (int i 0; i n; i)arrive[i] false;// 依次报到 m 次for (int i 0; i m; i) {int code 0;cin code;arrive[code] true;}// 依次检查 n 位同学是否到达bool all true;for (int i 0; i n; i) {if (!arrive[i]) {if (all) {cout i;all false;} else {cout i;}}}// 处理全部到达的特殊情况if (all)cout n;cout endl;return 0;
}编程题2
2、 【解题思路】 1、首先遍历输入的字符串 line 并按照’,进行分隔。 2、对于分隔出来的每一个密码先判断密码长度是否符合要求然后遍历所有的字符并用 hasChasLhasDhasS 分别记录是否存在大写字母小写字母数字以及特殊字符若存在以上四种字符外的其它字符则直接返回非法。 3、判断是否存在特殊字符若不存在返回非法。 4、判断是否存在两种及以上的大写字母、小写字母和数字若不存在返回非法。 5、以上情况都存在返回合法并输出。 【考纲知识点】多层分支/循环结构二级模拟法、字符串三级
#include iostreamusing namespace std;
char line[101];
char pwd[101];
// 检查从 str 开始、长度为 l 的密码是否合规
bool check(char * str, int l) {if (l 6 || l 12)return false;bool hasC false, hasL false, hasD false, hasS false;for (int i 0; str[i] ! \0; i) {if (A str[i] str[i] Z) {hasC true;} else if (a str[i] str[i] z) {hasL true;} else if (0 str[i] str[i] 9) {hasD true;} else if (str[i] ! || str[i] ||str[i] # || str[i] $) {hasS true;} elsereturn false;}if (!hasS)return false;if (hasC hasL hasD 2)return false;return true;
}
int main() {cin line;// 按逗号对输入进行切分并依次判断int len 0;for (int i 0; line[i] ! \0; i) {if (line[i] ! ,) {pwd[len] line[i];len;} else {pwd[len] \0;if (check(pwd, len))cout pwd endl;len 0;}}if (len 0) {pwd[len] \0;if (check(pwd, len))cout pwd endl;}return 0;
}