第73卷 字符数组与常见应用 《程序设计》重庆市(高职分类)《计算机类考纲百套卷》
|
2份
|
17页
|
44人阅读
|
0人下载
内容正文:
编写说明:2027版重庆市高等职业教育分类考试计算机类《考纲百套卷》,依据《2027年重庆市高等职业教育分类考试专业综合理论测试计算机类考试说明》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共99份试卷,其中知识训练卷76份、专题训练卷16份、课程综合卷7份。
本试卷是第73卷,为知识训练卷,按《程序设计》中“字符数组与常见应用”范围和要求编写。具体内容为:4.掌握用字符数组实现字符串的处理;说明:求字符串长度,统计字符数,实现数字串到数值数据的转换。5.掌握一维数组的常见应用;说明:能找出最大值、最小值,计数,求和、平均数,查找等。
重庆市高职分类考试
计算机类《考纲百套卷》
第73卷 程序设计——字符数组与常见应用
(考试时间:45分钟 满分:100分)
一、填空题(共10题,每题3分,共30分)
1.数组中逐个查找目标值的过程称为顺序__________。
2.将数组元素按从小到大重新排列的过程称为__________。
3.冒泡排序每一轮通常把较大元素交换到序列的__________端。
4.查找数组最大值时,比较变量通常初始化为数组的第一个__________。
5.统计数组中满足条件的元素数量,需要设置__________变量。
6.求数组平均值需要用总和除以有效元素的__________。
7.交换两个数组元素时,通常需要借助一个临时__________。
8.数组查找成功时,常用一个下标变量记录目标元素的__________。
9.判断数组是否有序时,需要比较相邻的__________。
10.数组逆序时,通常交换首尾对应位置的__________。
二、单项选择题(共15题,每题2分,共30分)
1.顺序查找数组时,通常从( )开始逐个比较。
A.第一个元素
B.最后一个元素
C.数组长度位置
D.随机位置且不再移动
2.升序冒泡排序一轮结束后,较大元素通常移动到( )。
A.前部
B.后部
C.数组中间且固定
D.数组外部
3.查找最大值时,较稳妥的初始值是( )。
A.0且不比较负数
B. 数组长度n
C.a[0]
D.a[n]
4.交换a[i]和a[j]时,常用的语句结构是( )。
A.a[i]=a[j]=t;
B.a[i]=t; a[j]=a[i];
C.t=a[i]+a[j];且不恢复
D.t=a[i]; a[i]=a[j]; a[j]=t;
5.统计数组中偶数个数时,满足条件后应执行( )。
A.count++
B.sum=0
C.count--
D.product*=0
6.数组平均值的正确公式是( )。
A.sum * count
B.sum / count
C.count / sum且不判断零
D.sum - count
7.将长度为n的数组逆序,首轮通常交换( )。
A.a[0]和a[n]
B.a[1]和a[n]
C.a[0]和a[n-1]
D.a[n]和a[n+1]
8.判断数组非递减时,通常检查( )。
A.a[i] > a[i+1]且认为正确
B.a[i] == a[i+1]才正确
C.a[i]与a[i+2]且忽略相邻
D.a[i] <= a[i+1]
9.顺序查找找到目标后,若只需首次位置,通常执行( )。
A.break
B.继续覆盖位置
C.把下标重置为0
D.删除目标元素
10.冒泡排序中交换相邻元素的条件通常是( )。
A.前者小于后者且要求升序
B.前者大于后者
C.两个元素始终相等
D.下标大于数组长度
11.数组去除重复值时,常用的判断方法是( )。
A.只比较数组长度
B.只看最后一个元素
C.比较当前元素与前面已保留元素
D.把所有元素都置为0
12.对数组进行循环左移一位,正确的首步通常是( )。
A.删除a[0]且不保存
B.把a[n]作为首元素
C.把所有元素直接清零
D.暂存a[0]
13.若查找失败,位置变量常设置为( )表示未找到。
A.-1
B.0且不区分首元素
C.数组长度加1并访问
D.任意正数
14.选择排序每轮通常选择未排序区的( )。
A.最大元素丢弃
B.最小元素放到前端
C.任意元素不比较
D.数组长度作为元素交换
15.复杂数组程序调试时,最有效的做法是( )。
A.只看最终输出猜测
B.忽略交换前的值
C.记录每轮下标和数组关键值
D.删除所有边界条件
三、判断题(共12题,每题1分,共12分)
1.顺序查找可以按下标从小到大逐个比较元素。( )
2.升序冒泡排序中较大元素通常向数组前部移动。( )
3.查找最大值时用a[0]初始化比固定用0更稳妥。( )
4.交换两个元素时不需要临时变量也不会丢失数据。( )
5.数组平均值等于元素总和除以有效元素个数。( )
6.逆序数组时a[0]可以与a[n]交换。( )
7.找到首次目标后使用break可以减少无效比较。( )
8.非递减数组要求每一对相邻元素都满足前者不大于后者。( )
9.查找失败时位置变量用-1表示不会与合法下标冲突。( )
10.选择排序可以完全不比较元素而得到有序结果。( )
11.数组逆序时只交换一次就一定完成全部逆序。( )
12.只要程序编译通过,数组排序的边界就一定正确。( )
四、程序填空题(共2题,每题8分,共16分)
1.阅读下列程序,补充空格处的代码。程序统计数组中偶数的和并记录数量。
int a[9] = {4, 7, 2, 9, 6, 3, 8, 5, 10};
int i, sum = 0, count = 0;
for (i = 0; i < 9; i++) {
if (a[i] % 2 __________ 0) {
sum += a[i];
count++;
}
if (count == 3) {
__________;
}
if (a[i] == 9) {
continue;
}
}
printf("%d %d %d", i, sum, count);
(1)第一个空应填什么?(2)第二个空应填什么?
2.阅读下列程序,补充空格处的代码。程序把数组中的负数移动到前面并统计交换次数。
int a[7] = {3, -1, 4, -2, 0, -5, 2};
int i, j, t, swaps = 0;
for (i = 0; i < 7; i++) {
for (j = 6; j > i; j--) {
if (a[j] __________ 0 && a[j - 1] >= 0) {
t = a[j];
a[j] = a[j - 1];
a[j - 1] = t;
swaps++;
}
}
if (i == 2) {
__________;
}
}
printf("%d %d %d", a[0], a[1], swaps);
(1)第一个空应填什么?(2)第二个空应填什么?
五、程序阅读题(共2题,每题6分,共12分)
1.阅读下列程序并回答问题。
int a[8] = {5, 2, 9, 2, 7, 5, 1, 9};
int i, j, found, unique = 0;
for (i = 0; i < 8; i++) {
found = 0;
for (j = 0; j < i; j++) {
if (a[i] == a[j]) {
found = 1;
break;
}
}
if (found == 0) {
unique++;
}
}
printf("%d %d %d", unique, i, j);
(1)found表示什么?(2)内层break何时执行?(3)最终输出什么?
2.阅读下列程序并回答问题。
int a[7] = {4, 8, 3, 9, 2, 7, 5};
int i, max = a[0], pos = 0, sum = 0;
for (i = 0; i < 7; i++) {
sum += a[i];
if (a[i] > max) {
max = a[i];
pos = i;
}
if (sum > 25) {
break;
}
}
printf("%d %d %d %d", i, sum, max, pos);
(1)max和pos分别记录什么?(2)何时break?(3)最终输出什么?
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:2027版重庆市高等职业教育分类考试计算机类《考纲百套卷》,依据《2027年重庆市高等职业教育分类考试专业综合理论测试计算机类考试说明》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共99份试卷,其中知识训练卷76份、专题训练卷16份、课程综合卷7份。
本试卷是第73卷,为知识训练卷,按《程序设计》中“字符数组与常见应用”范围和要求编写。具体内容为:4.掌握用字符数组实现字符串的处理;说明:求字符串长度,统计字符数,实现数字串到数值数据的转换。5.掌握一维数组的常见应用;说明:能找出最大值、最小值,计数,求和、平均数,查找等。
重庆市高职分类考试
计算机类《考纲百套卷》
第73卷 程序设计——字符数组与常见应用
(考试时间:45分钟 满分:100分)
一、填空题(共10题,每题3分,共30分)
1.数组中逐个查找目标值的过程称为顺序__________。
【答案】查找
【解析】从第一个元素开始依次比较目标值,属于顺序查找。
2.将数组元素按从小到大重新排列的过程称为__________。
【答案】排序
【解析】排序是按照某种规则调整元素顺序。
3.冒泡排序每一轮通常把较大元素交换到序列的__________端。
【答案】后
【解析】升序冒泡排序中,较大元素逐步向后移动。
4.查找数组最大值时,比较变量通常初始化为数组的第一个__________。
【答案】元素
【解析】用a[0]作为初值可正确处理全负数数组。
5.统计数组中满足条件的元素数量,需要设置__________变量。
【答案】计数
【解析】每满足一次条件就将计数变量加1。
6.求数组平均值需要用总和除以有效元素的__________。
【答案】个数
【解析】平均值等于总和除以参与计算的元素数量。
7.交换两个数组元素时,通常需要借助一个临时__________。
【答案】变量
【解析】临时变量用于暂存一个元素,避免交换时数据丢失。
8.数组查找成功时,常用一个下标变量记录目标元素的__________。
【答案】位置
【解析】下标就是目标元素在数组中的位置。
9.判断数组是否有序时,需要比较相邻的__________。
【答案】元素
【解析】通过比较相邻元素的大小关系判断排列是否满足要求。
10.数组逆序时,通常交换首尾对应位置的__________。
【答案】元素
【解析】从两端向中间交换,可以把数组顺序反转。
二、单项选择题(共15题,每题2分,共30分)
1.顺序查找数组时,通常从( )开始逐个比较。
A.第一个元素
B.最后一个元素
C.数组长度位置
D.随机位置且不再移动
【答案】A
【解析】顺序查找按下标从小到大依次比较。
2.升序冒泡排序一轮结束后,较大元素通常移动到( )。
A.前部
B.后部
C.数组中间且固定
D.数组外部
【答案】B
【解析】相邻比较交换会使较大元素向后端移动。
3.查找最大值时,较稳妥的初始值是( )。
A.0且不比较负数
B. 数组长度n
C. a[0]
D.a[n]
【答案】C
【解析】a[0]作为初值可以处理正数、负数和混合数据。
4.交换a[i]和a[j]时,常用的语句结构是( )。
A.a[i]=a[j]=t;
B.a[i]=t; a[j]=a[i];
C.t=a[i]+a[j];且不恢复
D.t=a[i]; a[i]=a[j]; a[j]=t;
【答案】D
【解析】临时变量t保存原a[i],再完成三步交换。
5.统计数组中偶数个数时,满足条件后应执行( )。
A.count++
B.sum=0
C.count--
D.product*=0
【答案】A
【解析】每找到一个偶数就把计数变量增加1。
6.数组平均值的正确公式是( )。
A.sum * count
B.sum / count
C.count / sum且不判断零
D.sum - count
【答案】B
【解析】平均值由总和除以有效元素数量得到。
7.将长度为n的数组逆序,首轮通常交换( )。
A.a[0]和a[n]
B.a[1]和a[n]
C.a[0]和a[n-1]
D.a[n]和a[n+1]
【答案】C
【解析】首尾合法下标分别为0和n-1。
8.判断数组非递减时,通常检查( )。
A.a[i] > a[i+1]且认为正确
B.a[i] == a[i+1]才正确
C.a[i]与a[i+2]且忽略相邻
D.a[i] <= a[i+1]
【答案】D
【解析】非递减要求每个相邻元素满足前者不大于后者。
9.顺序查找找到目标后,若只需首次位置,通常执行( )。
A.break
B.继续覆盖位置
C.把下标重置为0
D.删除目标元素
【答案】A
【解析】找到首次目标后break可以结束无必要的后续比较。
10.冒泡排序中交换相邻元素的条件通常是( )。
A.前者小于后者且要求升序
B.前者大于后者
C.两个元素始终相等
D.下标大于数组长度
【答案】B
【解析】升序排序时,前大后小才需要交换。
11.数组去除重复值时,常用的判断方法是( )。
A.只比较数组长度
B.只看最后一个元素
C.比较当前元素与前面已保留元素
D.把所有元素都置为0
【答案】C
【解析】逐个检查已保留区可以判断当前元素是否重复。
12.对数组进行循环左移一位,正确的首步通常是( )。
A.删除a[0]且不保存
B.把a[n]作为首元素
C.把所有元素直接清零
D.暂存a[0]
【答案】D
【解析】先保存首元素,再将后续元素前移并放到末尾。
13.若查找失败,位置变量常设置为( )表示未找到。
A.-1
B.0且不区分首元素
C.数组长度加1并访问
D.任意正数
【答案】A
【解析】-1不是合法下标,可作为未找到标志。
14.选择排序每轮通常选择未排序区的( )。
A.最大元素丢弃
B.最小元素放到前端
C.任意元素不比较
D.数组长度作为元素交换
【答案】B
【解析】升序选择排序将未排序区最小值放到当前位置。
15.复杂数组程序调试时,最有效的做法是( )。
A.只看最终输出猜测
B.忽略交换前的值
C.记录每轮下标和数组关键值
D.删除所有边界条件
【答案】C
【解析】逐轮记录可以定位边界、交换和退出条件错误。
三、判断题(共12题,每题1分,共12分)
1.顺序查找可以按下标从小到大逐个比较元素。( )
【答案】√
【解析】这是顺序查找的基本过程。
2.升序冒泡排序中较大元素通常向数组前部移动。( )
【答案】×
【解析】较大元素通常向后部移动。
3.查找最大值时用a[0]初始化比固定用0更稳妥。( )
【答案】√
【解析】这样能正确处理全负数数组。
4.交换两个元素时不需要临时变量也不会丢失数据。( )
【答案】×
【解析】直接覆盖可能丢失原值,通常需要临时变量。
5.数组平均值等于元素总和除以有效元素个数。( )
【答案】√
【解析】这是平均值的定义。
6.逆序数组时a[0]可以与a[n]交换。( )
【答案】×
【解析】最后一个合法下标是n-1。
7.找到首次目标后使用break可以减少无效比较。( )
【答案】√
【解析】无需继续搜索时break可立即结束循环。
8.非递减数组要求每一对相邻元素都满足前者不大于后者。( )
【答案】√
【解析】相邻关系共同决定整体是否非递减。
9.查找失败时位置变量用-1表示不会与合法下标冲突。( )
【答案】√
【解析】数组下标通常从0开始,-1可作失败标志。
10.选择排序可以完全不比较元素而得到有序结果。( )
【答案】×
【解析】选择排序必须比较未排序区元素以找出最小或最大值。
11.数组逆序时只交换一次就一定完成全部逆序。( )
【答案】×
【解析】通常需要从两端向中间进行多次交换,单次交换不能完成任意长度数组的逆序。
12.只要程序编译通过,数组排序的边界就一定正确。( )
【答案】×
【解析】编译通过不代表循环边界和交换逻辑没有错误。
四、程序填空题(共2题,每题8分,共16分)
1.阅读下列程序,补充空格处的代码。程序统计数组中偶数的和并记录数量。
int a[9] = {4, 7, 2, 9, 6, 3, 8, 5, 10};
int i, sum = 0, count = 0;
for (i = 0; i < 9; i++) {
if (a[i] % 2 __________ 0) {
sum += a[i];
count++;
}
if (count == 3) {
__________;
}
if (a[i] == 9) {
continue;
}
}
printf("%d %d %d", i, sum, count);
(1)第一个空应填什么?(2)第二个空应填什么?
【答案】(1)==;(2)break;
【解析】偶数判断填a[i]%2==0。偶数4、2、6累计到12并使count达到3,break发生在i=4,循环直接结束,最终输出4 12 3。
2.阅读下列程序,补充空格处的代码。程序把数组中的负数移动到前面并统计交换次数。
int a[7] = {3, -1, 4, -2, 0, -5, 2};
int i, j, t, swaps = 0;
for (i = 0; i < 7; i++) {
for (j = 6; j > i; j--) {
if (a[j] __________ 0 && a[j - 1] >= 0) {
t = a[j];
a[j] = a[j - 1];
a[j - 1] = t;
swaps++;
}
}
if (i == 2) {
__________;
}
}
printf("%d %d %d", a[0], a[1], swaps);
(1)第一个空应填什么?(2)第二个空应填什么?
【答案】(1)<;(2)break;
【解析】负数应满足a[j]<0,第二空填break。i=0完成3次交换,i=1完成2次交换,i=2完成1次交换后触发break;此时数组前两项为-1、-2,交换次数为6,输出-1 -2 6。
五、程序阅读题(共2题,每题6分,共12分)
1.阅读下列程序并回答问题。
int a[8] = {5, 2, 9, 2, 7, 5, 1, 9};
int i, j, found, unique = 0;
for (i = 0; i < 8; i++) {
found = 0;
for (j = 0; j < i; j++) {
if (a[i] == a[j]) {
found = 1;
break;
}
}
if (found == 0) {
unique++;
}
}
printf("%d %d %d", unique, i, j);
(1)found表示什么?(2)内层break何时执行?(3)最终输出什么?
【答案】(1)当前元素此前是否出现;(2)a[i]等于前面某个元素时;(3)输出5 8 2。
【解析】外层依次处理8个元素,首次出现的5、2、9、7、1共5种,重复元素不增加unique。外层结束后i为8;最后一次i=7时与a[2]比较到9即break,j保留为2,故最终输出5 8 2。
2.阅读下列程序并回答问题。
int a[7] = {4, 8, 3, 9, 2, 7, 5};
int i, max = a[0], pos = 0, sum = 0;
for (i = 0; i < 7; i++) {
sum += a[i];
if (a[i] > max) {
max = a[i];
pos = i;
}
if (sum > 25) {
break;
}
}
printf("%d %d %d %d", i, sum, max, pos);
(1)max和pos分别记录什么?(2)何时break?(3)最终输出什么?
【答案】(1)当前最大值及其下标;(2)sum大于25时;(3)输出4 26 9 3。
【解析】逐项累加:4、12、15、24、26;处理a[4]=2后sum变为26,触发break。此前最大值为9,位置为3;break发生时i为4,最终输出4 26 9 3。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$