内容正文:
编写说明:2027版吉林省高职分类(对口招生)考试电子与信息类《考纲百套卷》,依据《吉林省高职分类(对口招生)考试电子与信息类专业综合卷考试科目及纲要(2025版)》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共115份试卷,其中知识训练卷82份、专题训练卷19份、课程综合卷14份。
本试卷是第11卷,为知识训练卷,按《C语言程序设计》中“数组”范围和要求编写。具体内容为:1.理解数组和数组元素的定义。2.掌握一维数组的定义、初始化、数组元素的引用。3.掌握二维数组的定义、初始化、数组元素的引用。4.理解字符数组的定义、初始化、数组元素的引用、输入/输出。5.掌握常用字符串处理函数的使用方法。
吉林省高职分类(对口招生)考试
电子与信息类《考纲百套卷》
第11卷 C语言程序设计——数组
(考试时间:45分钟 满分:100分)
一、单项选择题(共20题,每题2分,共40分。)
1.正确定义一个2行3列的int型二维数组a的语句是( )
A.int a[2][3];
B.int a[3][2];
C.int a(2,3);
D.int a[2,3];
【答案】A
【解析】二维数组定义格式:类型 数组名[行数][列数]; 。int a[2][3]定义2行3列共6个元素的数组。
2.int a[2][3]={{1,2,3},{4,5,6}}; 中a[1][1]的值是( )
A.1
B.5
C.6
D.4
【答案】B
【解析】a[1][1]是第2行第2列的元素。第2行为{4,5,6},第2列为5,因此a[1][1]=5。
3.以下关于字符数组和字符串的说法,正确的是( )
A.字符数组就是字符串
B.字符数组不能存储字符串
C.字符串是以'\0'结尾的字符数组
D.字符数组不需要'\0'
【答案】C
【解析】字符串是特殊的字符数组,以'\0'作为结束标志。字符数组可以不是字符串(不包含'\0')。
4.int a[3][4]; 该二维数组共有多少行多少列?( )
A.3行3列
B.4行4列
C.4行3列
D.3行4列
【答案】D
【解析】定义中第一个[]内为行数3,第二个[]内为列数4,因此是3行4列共12个元素。
5.用scanf("%s", s)输入字符串时,输入遇到什么会结束?( )
A.空格或回车
B.仅回车
C.分号
D.感叹号
【答案】A
【解析】scanf的%s格式遇到空格、Tab、回车等空白字符会停止读取,因此不能输入含空格的字符串。
6.要遍历3行4列的二维数组a所有元素,常用( )
A.单层for循环
B.双层for循环嵌套
C.三层for循环
D.while(1)循环
【答案】B
【解析】二维数组需要用两层循环:外层控制行i=0~2,内层控制列j=0~3,用a[i][j]访问每个元素。
7.char s[]="ABC"; 该字符串的存储长度为多少字节?( )
A.3
B.2
C.4
D.1
【答案】C
【解析】"ABC"含3个字符+1个结束符'\0',共占4字节。字符串长度总是可见字符数+1。
8.冒泡排序算法的核心操作为( )
A.查找最大值
B.计算总和
C.二分搜索
D.相邻元素比较并交换
【答案】D
【解析】冒泡排序通过反复比较相邻元素并交换,每轮将最大(或最小)元素"冒泡"到正确位置。
9.int a[2][3]={1,2,3}; 中a[1][2]的值是( )
A.0
B.3
C.2
D.不确定
【答案】A
【解析】二维数组按行优先初始化:{1,2,3}赋给a[0][0]/[0][1]/[0][2],剩余3个元素自动为0。a[1][2]=0。
10.要逐个输出字符数组s中的每个字符,常用的循环终止条件是( )
A.i<10
B.s[i]!='\0'
C.i>=0
D.s[i]=='\0'
【答案】B
【解析】遍历字符串用while(s[i]!='\0')或for(i=0;s[i]!='\0';i++),遇到结束符停止。
11.int a[2][3]在内存中的存储顺序是( )
A.a[0][0]→a[1][0]→a[0][1]→...(列优先)
B.随机顺序
C.a[0][0]→a[0][1]→a[0][2]→a[1][0]→...(行优先)
D.a[1][2]→a[1][1]→...(逆序)
【答案】C
【解析】C语言二维数组按行优先存储:先依次存放第0行所有列,再存放第1行所有列,以此类推。
12.在C语言中比较两个字符串是否相等,应使用( )
A.==运算符
B.=运算符
C.直接变量名比较
D.strcmp函数
【答案】D
【解析】字符串不能用==直接比较(比较的是地址),应用strcmp函数。==比较两个字符数组名会得到地址比较而非内容比较。
13.选择排序每一轮的操作是( )
A.找到未排序部分的最小元素放到已排序末尾
B.相邻元素两两比较交换
C.随机交换元素
D.按列排序
【答案】A
【解析】选择排序每轮从未排序部分选出最小(最大)元素,与未排序部分的第一个元素交换位置。
14.int a[][3]={1,2,3,4,5,6}; 该数组有几行?( )
A.1行
B.2行
C.3行
D.不确定
【答案】B
【解析】省略行数时由初始值个数和列数推算:6个元素÷3列=2行。列数不能省略,行数可推算。
15.gets()函数读取字符串时,遇到什么停止?( )
A.空格
B.Tab键
C.回车(换行)
D.逗号
【答案】C
【解析】gets()可以读取含空格的字符串,遇到回车换行停止,并在末尾自动添加'\0'。但gets有缓冲区溢出风险。
16.int a[3][4]; 合法的最后一个元素是( )
A.a[3][4]
B.a[3][3]
C.a[4][2]
D.a[2][3]
【答案】D
【解析】3行4列,行下标0~2,列下标0~3,最后一个元素是a[2][3]。a[3][4]越界,a[3][3]和a[4][2]均越界。
17.交换数组元素a[i]和a[j]的正确方式是( )
A.借助临时变量交换
B.直接a[i]=a[j]; a[j]=a[i];
C.a[i]+a[j]赋值
D.无法交换
【答案】A
【解析】正确交换需要临时变量:t=a[i]; a[i]=a[j]; a[j]=t; 。直接赋值会丢失原值。
18.字符'\0'的ASCII码值是( )
A.48
B.0
C.65
D.32
【答案】B
【解析】'\0'是空字符,ASCII码值为0。它与字符'0'不同,'0'的ASCII码值为48。
19.3×3矩阵中,主对角线上的元素下标满足( )
A.i>j
B.i<j
C.i==j
D.i+j==2
【答案】C
【解析】主对角线元素的行下标等于列下标,即a[0][0],a[1][1],a[2][2],满足i==j。副对角线满足i+j==N-1。
20.冒泡排序是稳定的排序算法,稳定是指( )
A.排序速度快
B.占用内存少
C.不会出错
D.相等元素的相对顺序不变
【答案】D
【解析】稳定性指排序前后相等元素的相对先后顺序保持不变。冒泡排序和插入排序是稳定的,选择排序不稳定。
二、判断题(共10题,每题1分,共10分。)
1.二维数组在定义时,行数和列数都必须使用常量表达式指定。( )
【答案】√
【解析】传统C中二维数组的行列数均需为常量表达式。C99引入变长数组后可省略行数,但列数仍需常量。
2.字符数组char s[10]; 定义后可以直接用s="Hello"; 赋值。( )
【答案】×
【解析】数组名是地址常量,不能用赋值语句整体赋值。应使用strcpy(s,"Hello")或在定义时初始化。
3.二维数组可以看作是一维数组的数组,即每个元素本身又是一个一维数组。( )
【答案】√
【解析】int a[3][4]可理解为3个一维数组,每个含4个int元素。a[i]即第i行的首地址。
4.字符串"ABC"和字符数组{'A','B','C'}在内存中占用完全相同的字节数。( )
【答案】×
【解析】"ABC"含'\0'占4字节,{'A','B','C'}无'\0'占3字节。只有显式或隐式添加'\0'才是字符串。
5.冒泡排序每一轮中都必须比较恰好n-1对相邻元素。( )
【答案】×
【解析】第i轮只需比较n-i对元素(因为末尾i-1个已排好),且可提前终止。比较次数逐轮递减,不是每轮都n-1次。
6.gets()函数读取字符串时不会检查缓冲区大小,可能导致溢出。( )
【答案】√
【解析】gets不检查目标数组长度,输入超长字符串会越界写入,是安全隐患。C11标准已移除gets,建议用fgets替代。
7.选择排序每一轮都要进行多次元素交换。( )
【答案】×
【解析】选择排序每轮最多交换一次(将找到的最小元素与未排序首位交换),而冒泡排序每轮可能交换多次。这是两者的重要区别。
8.int a[2][3]; 中sizeof(a)的值为2×3×sizeof(int)。( )
【答案】√
【解析】sizeof(a)获取整个二维数组的总字节数,等于行数×列数×sizeof(元素类型)。
9.字符串处理函数strlen(s)返回的值包括结尾的'\0'。( )
【答案】×
【解析】strlen返回字符串中字符的个数,不包括结尾的'\0'。例如strlen("ABC")返回3而非4。
10.C语言中可以对字符数组使用%s直接进行输入和输出。( )
【答案】√
【解析】scanf("%s",s)和printf("%s",s)可以方便地进行字符串的输入和输出,是最基本的字符串I/O方式。
三、填空题(共5题,每题2分,共10分。)
1.C语言中定义二维数组时,需要同时指定____数和列数。
【答案】行
【解析】定义格式为 类型 数组名[行数][列数]; 。两个维度都必须指定(除非有初始化列表可省略行数)。
2.strlen("China")的返回值是____。
【答案】5
【解析】strlen计算字符串中字符个数(不含结束符)。"China"有C/h/i/n/a共5个字符,返回5。
3.交换数组元素a[i]和a[j]的值时,通常需要一个____变量暂存其中一个元素的值。
【答案】临时
【解析】经典交换三步:t=a[i]; a[i]=a[j]; a[j]=t; 。t即为临时变量,用于保存原值防止丢失。
4.对字符数组可使用____格式符一次性输出其中存储的字符串。
【答案】%s
【解析】printf("%s",s)从s的首地址开始逐个输出字符,直到遇到结束符为止。输入对应scanf("%s",s)。
5.C语言中数组的下标必须是____类型的数据。
【答案】整型
【解析】数组下标必须是整型或可转换为整型的表达式,如a[3]、a[i]、a[i+1]。浮点型下标不合法(如a[2.5])。
四、读程序写结果题(共4题,每题5分,共20分。)
1.请阅读下列程序,写出运行结果。
#include <stdio.h>
int main()
{
int a[] = {3, 8, 1, 6, 4};
int i, s = 0;
for (i = 0; i < 5; i++)
if (a[i] > 5)
s += a[i];
printf("%d", s);
return 0;
}
【答案】14
【解析】筛选大于5的元素:a[1]=8、a[3]=6,s=8+6=14。考查一维数组条件筛选与累加。
2.请阅读下列程序,写出运行结果。
#include <stdio.h>
int main()
{
int a[] = {10, 20, 30, 40};
printf("%d", a[3] + a[0]);
return 0;
}
【答案】50
【解析】a[3]=40, a[0]=10, 40+10=50。考查数组首尾元素的直接引用。
3.请阅读下列程序,写出运行结果。
#include <stdio.h>
int main()
{
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
int i, d = 0;
for (i = 0; i < 3; i++)
d += a[i][i];
printf("%d", d);
return 0;
}
【答案】15
【解析】a[i][i]取主对角线元素:a[0][0]=1,a[1][1]=5,a[2][2]=9,和=15。考查二维数组对角线操作。
4.请阅读下列程序,写出运行结果。
#include <stdio.h>
int main()
{
char s[20] = "C Language";
printf("%c", s[2]);
return 0;
}
【答案】L
【解析】s[0]='C',s[1]=' ',s[2]='L'。考查字符数组按索引访问单个字符。
五、编程题(共2题,每题10分,共20分。)
1.编写一个C程序,计算3×3二维数组中每一行元素的和并输出。数组初始化为{{1,2,3},{4,5,6},{7,8,9}}。
【答案】
#include <stdio.h>
int main()
{
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
int i, j, rowSum;
for (i = 0; i < 3; i++)
{
rowSum = 0;
for (j = 0; j < 3; j++)
rowSum += a[i][j];
printf("第%d行和=%d
", i + 1, rowSum);
}
return 0;
}
【解析】外层循环逐行遍历,内层循环求每行的和。第1行1+2+3=6,第2行4+5+6=15,第3行7+8+9=24。考查二维数组行求和。
2.编写一个C程序,从键盘输入一个字符串(不超过50个字符),统计其中大写字母、小写字母和数字字符的个数并输出。
【答案】
#include <stdio.h>
int main()
{
char s[51];
int i, upper = 0, lower = 0, digit = 0;
printf("请输入字符串:");
fgets(s, sizeof(s), stdin);
for (i = 0; s[i] != '\0' && s[i] != '
'; i++)
{
if (s[i] >= 'A' && s[i] <= 'Z')
upper++;
else if (s[i] >= 'a' && s[i] <= 'z')
lower++;
else if (s[i] >= '0' && s[i] <= '9')
digit++;
}
printf("大写字母:%d个
", upper);
printf("小写字母:%d个
", lower);
printf("数字字符:%d个
", digit);
return 0;
}
【解析】fgets(s,sizeof(s),stdin)从标准输入读取一行(含换行符),限制长度防溢出,是gets的安全替代。遍历时跳过换行符'
'。考查字符串安全输入与字符分类统计。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:2027版吉林省高职分类(对口招生)考试电子与信息类《考纲百套卷》,依据《吉林省高职分类(对口招生)考试电子与信息类专业综合卷考试科目及纲要(2025版)》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共115份试卷,其中知识训练卷82份、专题训练卷19份、课程综合卷14份。
本试卷是第11卷,为知识训练卷,按《C语言程序设计》中“数组”范围和要求编写。具体内容为:1.理解数组和数组元素的定义。2.掌握一维数组的定义、初始化、数组元素的引用。3.掌握二维数组的定义、初始化、数组元素的引用。4.理解字符数组的定义、初始化、数组元素的引用、输入/输出。5.掌握常用字符串处理函数的使用方法。
吉林省高职分类(对口招生)考试
电子与信息类《考纲百套卷》
第11卷 C语言程序设计——数组
(考试时间:45分钟 满分:100分)
一、单项选择题(共20题,每题2分,共40分。)
1.正确定义一个2行3列的int型二维数组a的语句是( )
A.int a[2][3];
B.int a[3][2];
C.int a(2,3);
D.int a[2,3];
2.int a[2][3]={{1,2,3},{4,5,6}}; 中a[1][1]的值是( )
A.1
B.5
C.6
D.4
3.以下关于字符数组和字符串的说法,正确的是( )
A.字符数组就是字符串
B.字符数组不能存储字符串
C.字符串是以'\0'结尾的字符数组
D.字符数组不需要'\0'
4.int a[3][4]; 该二维数组共有多少行多少列?( )
A.3行3列
B.4行4列
C.4行3列
D.3行4列
5.用scanf("%s", s)输入字符串时,输入遇到什么会结束?( )
A.空格或回车
B.仅回车
C.分号
D.感叹号
6.要遍历3行4列的二维数组a所有元素,常用( )
A.单层for循环
B.双层for循环嵌套
C.三层for循环
D.while(1)循环
7.char s[]="ABC"; 该字符串的存储长度为多少字节?( )
A.3
B.2
C.4
D.1
8.冒泡排序算法的核心操作为( )
A.查找最大值
B.计算总和
C.二分搜索
D.相邻元素比较并交换
9.int a[2][3]={1,2,3}; 中a[1][2]的值是( )
A.0
B.3
C.2
D.不确定
10.要逐个输出字符数组s中的每个字符,常用的循环终止条件是( )
A.i<10
B.s[i]!='\0'
C.i>=0
D.s[i]=='\0'
11.int a[2][3]在内存中的存储顺序是( )
A.a[0][0]→a[1][0]→a[0][1]→...(列优先)
B.随机顺序
C.a[0][0]→a[0][1]→a[0][2]→a[1][0]→...(行优先)
D.a[1][2]→a[1][1]→...(逆序)
12.在C语言中比较两个字符串是否相等,应使用( )
A.==运算符
B.=运算符
C.直接变量名比较
D.strcmp函数
13.选择排序每一轮的操作是( )
A.找到未排序部分的最小元素放到已排序末尾
B.相邻元素两两比较交换
C.随机交换元素
D.按列排序
14.int a[][3]={1,2,3,4,5,6}; 该数组有几行?( )
A.1行
B.2行
C.3行
D.不确定
15.gets()函数读取字符串时,遇到什么停止?( )
A.空格
B.Tab键
C.回车(换行)
D.逗号
16.int a[3][4]; 合法的最后一个元素是( )
A.a[3][4]
B.a[3][3]
C.a[4][2]
D.a[2][3]
17.交换数组元素a[i]和a[j]的正确方式是( )
A.借助临时变量交换
B.直接a[i]=a[j]; a[j]=a[i];
C.a[i]+a[j]赋值
D.无法交换
18.字符'\0'的ASCII码值是( )
A.48
B.0
C.65
D.32
19.3×3矩阵中,主对角线上的元素下标满足( )
A.i>j
B.i<j
C.i==j
D.i+j==2
20.冒泡排序是稳定的排序算法,稳定是指( )
A.排序速度快
B.占用内存少
C.不会出错
D.相等元素的相对顺序不变
二、判断题(共10题,每题1分,共10分。)
1.二维数组在定义时,行数和列数都必须使用常量表达式指定。( )
2.字符数组char s[10]; 定义后可以直接用s="Hello"; 赋值。( )
3.二维数组可以看作是一维数组的数组,即每个元素本身又是一个一维数组。( )
4.字符串"ABC"和字符数组{'A','B','C'}在内存中占用完全相同的字节数。( )
5.冒泡排序每一轮中都必须比较恰好n-1对相邻元素。( )
6.gets()函数读取字符串时不会检查缓冲区大小,可能导致溢出。( )
7.选择排序每一轮都要进行多次元素交换。( )
8.int a[2][3]; 中sizeof(a)的值为2×3×sizeof(int)。( )
9.字符串处理函数strlen(s)返回的值包括结尾的'\0'。( )
10.C语言中可以对字符数组使用%s直接进行输入和输出。( )
三、填空题(共5题,每题2分,共10分。)
1.C语言中定义二维数组时,需要同时指定____数和列数。
2.strlen("China")的返回值是____。
3.交换数组元素a[i]和a[j]的值时,通常需要一个____变量暂存其中一个元素的值。
4.对字符数组可使用____格式符一次性输出其中存储的字符串。
5.C语言中数组的下标必须是____类型的数据。
四、读程序写结果题(共4题,每题5分,共20分。)
1.请阅读下列程序,写出运行结果。
#include <stdio.h>
int main()
{
int a[] = {3, 8, 1, 6, 4};
int i, s = 0;
for (i = 0; i < 5; i++)
if (a[i] > 5)
s += a[i];
printf("%d", s);
return 0;
}
2.请阅读下列程序,写出运行结果。
#include <stdio.h>
int main()
{
int a[] = {10, 20, 30, 40};
printf("%d", a[3] + a[0]);
return 0;
}
3.请阅读下列程序,写出运行结果。
#include <stdio.h>
int main()
{
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
int i, d = 0;
for (i = 0; i < 3; i++)
d += a[i][i];
printf("%d", d);
return 0;
}
4.请阅读下列程序,写出运行结果。
#include <stdio.h>
int main()
{
char s[20] = "C Language";
printf("%c", s[2]);
return 0;
}
五、编程题(共2题,每题10分,共20分。)
1.编写一个C程序,计算3×3二维数组中每一行元素的和并输出。数组初始化为{{1,2,3},{4,5,6},{7,8,9}}。
2.编写一个C程序,从键盘输入一个字符串(不超过50个字符),统计其中大写字母、小写字母和数字字符的个数并输出。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$