第五章 数组《编程语言基础-C语言》(高教版第5版)章节过关卷(一)

2026-04-10
| 2份
| 16页
| 36人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 C语言程序设计高教版(第五版)全一册
年级 -
章节 第5章 数组
类型 作业-单元卷
知识点 数组
使用场景 同步教学-单元练习
学年 2026-2027
地区(省份) 全国
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 267 KB
发布时间 2026-04-10
更新时间 2026-04-10
作者 xkw_063129603
品牌系列 学易金卷·阶段检测模拟卷
审核时间 2026-04-10
下载链接 https://m.zxxk.com/soft/57276946.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

《编程语言基础-C语言》高等教育出版社(第5版) 第五章 数组 章节过关卷(一)(原卷版) 考试时间:90分钟 满分:100分 姓名 班级 学号 一、单项选择题(本题共25小题,每题2分,共50分) 1、以下关于一维数组的定义,正确的是( ) A. int a[5]; B. int a[5] = {0}; C. int a[] = {1,2,3}; D. 以上都正确 2、若有定义 int a[5] = {1,2,3};,则 a[3] 的值是( ) A. 0 B. 3 C. 随机值 D. 编译错误 3、以下代码的输出结果是( ) int a[3] = {1,2,3}; printf("%d", a[3]); A. 3 B. 0 C. 随机值 D. 编译错误 4、定义 int a[10];,则正确的数组元素引用是( ) A. a[10] B. a[0] C. a(1) D. a[1.5] 5、以下程序段中,能将数组a所有元素初始化为0的是( ) A. int a[5] = 0; B. int a[5] = {0}; C. int a[5] = {}; D. int a[5] = {1}; 6、以下对一维数组a的正确输入语句是( ) A. scanf("%d", a); B. for(i=0;i<5;i++) scanf("%d", a[i]); C. for(i=0;i<5;i++) scanf("%d", &a[i]); D. scanf("%d", &a); 7、以下代码的输出结果是( ) int a[5] = {2,4,6,8,10}; int i; for(i=0;i<5;i++) printf("%d", a[i]%3); A. 20211 B. 21020 C. 20210 D. 21021 8、以下关于二维数组的定义,错误的是( ) A. int a[2][3]; B. int a[][3] = {1,2,3,4,5}; C. int a[2][] = {1,2,3,4}; D. int a[2][3] = {{1},{2,3}}; 9、若有定义 int a[2][3] = {{1,2},{3,4,5}};,则 a[1][2] 的值是( ) A. 0 B. 5 C. 4 D. 随机值 10、以下代码的输出结果是( ) int a[3][3] = {1,2,3,4,5,6,7,8,9}; int i,j,s=0; for(i=0;i<3;i++) s += a[i][i]; printf("%d", s); A. 15 B. 12 C. 18 D. 9 11、以下对二维数组a中第i行第j列元素的正确引用是( ) A. a(i,j) B. a[i,j] C. a[i][j] D. a[i][j] 与 *(*(a+i)+j) 等价 12、若有定义 char str[10] = "hello";,则 strlen(str) 和 sizeof(str) 的值分别是( ) A. 5, 5 B. 5, 10 C. 6, 10 D. 5, 6 13、以下字符数组定义中,能正确存储字符串"abc"的是( ) A. char s[3] = {'a','b','c'}; B. char s[3] = "abc"; C. char s[4] = "abc"; D. char s[] = {'a','b','c'}; 14、以下代码的输出结果是( ) char s[20] = "hello"; strcpy(s, "world"); printf("%s", s); A. hello B. world C. helloworld D. 编译错误 15、以下代码的输出结果是( ) char s1[20] = "abc", s2[20] = "def"; strcat(s1, s2); printf("%s", s1); A. abc B. def C. abcdef D. abc def 16、以下代码中,能正确比较两个字符串是否相等的是( ) A. if(s1 == s2) B. if(strcmp(s1, s2) == 0) C. if(strcpy(s1, s2)) D. if(s1 = s2) 17、以下代码的输出结果是( ) char str[20] = "China"; printf("%d", strlen(str)); A. 5 B. 6 C. 20 D. 随机值 18、以下程序段用于将数组a中的元素逆序存放,划线处应填( ) int a[5] = {1,2,3,4,5}; int i, t; for(i=0; i<2; i++) { t = a[i]; a[i] = a[4-i]; ________; } A. a[i] = t B. a[4-i] = t C. a[4-i] = a[i] D. t = a[4-i] 19、以下代码的功能是( ) int a[10], i, max; max = a[0]; for(i=1; i<10; i++) if(a[i] > max) max = a[i]; A. 求数组最小值 B. 求数组最大值 C. 求数组和 D. 排序 20、以下关于二维数组的初始化,错误的是( ) A. int a[2][3] = {0}; B. int a[2][3] = {{1,2},{3,4,5}}; C. int a[2][3] = {1,2,3,4,5,6}; D. int a[2][3] = {1,2,3,4,5,6,7}; 21、以下代码的输出结果是( ) int a[3][3] = {{1,2},{3,4},{5,6}}; printf("%d", a[1][2]); A. 0 B. 4 C. 5 D. 随机值 22、以下函数用于输出二维数组的某一行,划线处应填( ) void print_row(int a[][3], int row) { for(int j=0; j<3; j++) printf("%d ", ________); } A. a[row][j] B. a[j][row] C. a[row+j] D. a[row] + j 23、以下代码的输出结果是( ) char s[] = "Hello\0World"; printf("%s", s); A. Hello B. HelloWorld C. Hello World D. Hello\0World 24、以下程序段中,能正确输入一个字符串到数组s的是( ) A. scanf("%s", &s); B. gets(s); C. scanf("%c", s); D. s = gets(); 25、判断字符串a和b是否相等,应当使用( )。 A.if (a == b) B.if (a = b) C.if (strcpy (a,b)) D.if (strcmp (a,b)) 二、多选题(本题共5小题,每题4分,共20分) 1、以下关于一维数组的定义,正确的有( ) A. int a[] = {1,2,3}; B. int a[3] = {0}; C. int a[3] = {1,2,3,4}; D. int a[3] = {1,2}; 2、以下关于二维数组的说法,正确的有( ) A. 二维数组可以看作特殊的一维数组,其元素是一维数组 B. 二维数组在内存中是按行优先顺序存储的 C. 定义二维数组时,第一维长度可以省略,但第二维不能省略 D. 二维数组的初始化可以采用嵌套花括号或线性列表 3、以下关于字符数组和字符串的说法,正确的有( ) A. 字符串以'\0'作为结束标志 B. 字符数组不一定要包含'\0' C. char s[] = "abc"; 等价于 char s[4] = {'a','b','c','\0'}; D. strlen(s) 计算的是字符数组的长度(包括'\0') 4、以下函数中,属于C语言标准库字符串处理函数的有( ) A. strcpy B. strcat C. strcmp D. strlen 5、以下关于数组作为函数参数的说法,正确的有( ) A. 数组名作为实参时,传递的是数组首地址 B. 形参可以是数组名或指针变量 C. 在被调函数中,可以通过形参修改实参数组元素的值 D. 数组长度作为参数时,通常需要额外传递 三、判断题(本题共10小题,每题2分,共20分) 1、定义数组时,数组长度可以是变量。( ) 2、数组元素的下标从0开始。( ) 3、二维数组在内存中是按列优先顺序存储的。( ) 4、字符数组只能存储字符,不能存储数字。( ) 5、使用strcpy(s1, s2)时,要求s1的长度足够存放s2的内容(包括'\0')。( ) 6、字符串"hello"的长度是6。( ) 7、数组名是一个指针常量,其值不能被改变。( ) 8、二维数组的行数可以省略,但列数不能省略。( ) 9、char s[10]; s = "hello"; 是合法的。( ) 10、使用gets函数输入字符串时,可以包含空格。( ) 四、填空题(本题共5小题,每题2分,共10分) 1、若有定义 int a[5] = {2,4,6,8,10};,则 a[4] 的值为( )。 2、以下程序段的功能是求数组a中所有元素的平均值,请填空。( ) int a[10], i, sum = 0; float avg; for(i=0; i<10; i++) sum += ________; avg = sum / 10.0; 3、以下程序段输出结果为 ( )。 char s[20] = "good"; strcat(s, " morning"); printf("%s", s); 4、二维数组 int a[3][4]; 共有( )个元素。 5、以下程序段输出字符串的长度为( )。 char str[100] = "Hello\0World"; printf("%d", strlen(str)); 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 《编程语言基础-C语言》高等教育出版社(第5版) 第五章 数组 章节过关卷(一)(解析版) 考试时间:90分钟 满分:100分 姓名 班级 学号 一、单项选择题(本题共25小题,每题2分,共50分) 1、以下关于一维数组的定义,正确的是( ) A. int a[5]; B. int a[5] = {0}; C. int a[] = {1,2,3}; D. 以上都正确 【答案】D 【解析】A定义了长度为5的整型数组;B初始化第一个元素为0,其余默认为0;C省略长度时由初始化列表决定长度为3。三种写法均正确。 2、若有定义 int a[5] = {1,2,3};,则 a[3] 的值是( ) A. 0 B. 3 C. 随机值 D. 编译错误 【答案】A 【解析】部分初始化时,未显式赋值的元素自动初始化为0。 3、以下代码的输出结果是( ) int a[3] = {1,2,3}; printf("%d", a[3]); A. 3 B. 0 C. 随机值 D. 编译错误 【答案】C 【解析】数组下标从0开始,a[3]越界访问,结果未定义,为随机值。 4、定义 int a[10];,则正确的数组元素引用是( ) A. a[10] B. a[0] C. a(1) D. a[1.5] 【答案】B 【解析】下标应为整型表达式,范围0~9。 5、以下程序段中,能将数组a所有元素初始化为0的是( ) A. int a[5] = 0; B. int a[5] = {0}; C. int a[5] = {}; D. int a[5] = {1}; 【答案】B 【解析】{0}将第一个元素赋0,其余自动为0;A语法错误;C不合法;D只有a[0]=1。 6、以下对一维数组a的正确输入语句是( ) A. scanf("%d", a); B. for(i=0;i<5;i++) scanf("%d", a[i]); C. for(i=0;i<5;i++) scanf("%d", &a[i]); D. scanf("%d", &a); 【答案】C 【解析】数组元素需用取地址符&;A中a是数组名代表首地址,但输入多个数时不正确;D中&a是数组地址,类型不匹配。 7、以下代码的输出结果是( ) int a[5] = {2,4,6,8,10}; int i; for(i=0;i<5;i++) printf("%d", a[i]%3); A. 20211 B. 21020 C. 20210 D. 21021 【答案】D 【解析】2%3=2,4%3=1,6%3=0,8%3=2,10%3=1,输出“21021” 8、以下关于二维数组的定义,错误的是( ) A. int a[2][3]; B. int a[][3] = {1,2,3,4,5}; C. int a[2][] = {1,2,3,4}; D. int a[2][3] = {{1},{2,3}}; 【答案】C 【解析】二维数组定义时,第二维的长度不能省略。 9、若有定义 int a[2][3] = {{1,2},{3,4,5}};,则 a[1][2] 的值是( ) A. 0 B. 5 C. 4 D. 随机值 【答案】B 【解析】第一行初始化1,2,0;第二行初始化3,4,5;a[1][2]即第二行第三列为5。 10、以下代码的输出结果是( ) int a[3][3] = {1,2,3,4,5,6,7,8,9}; int i,j,s=0; for(i=0;i<3;i++) s += a[i][i]; printf("%d", s); A. 15 B. 12 C. 18 D. 9 【答案】A 【解析】主对角线元素1,5,9之和为15。 11、以下对二维数组a中第i行第j列元素的正确引用是( ) A. a(i,j) B. a[i,j] C. a[i][j] D. a[i][j] 与 *(*(a+i)+j) 等价 【答案】D 【解析】C是标准写法,D是指针表示法,两者等价。 12、若有定义 char str[10] = "hello";,则 strlen(str) 和 sizeof(str) 的值分别是( ) A. 5, 5 B. 5, 10 C. 6, 10 D. 5, 6 【答案】B 【解析】strlen计算字符串长度(不含'\0'),为5;sizeof计算数组占用的字节数,为10。 13、以下字符数组定义中,能正确存储字符串"abc"的是( ) A. char s[3] = {'a','b','c'}; B. char s[3] = "abc"; C. char s[4] = "abc"; D. char s[] = {'a','b','c'}; 【答案】C 【解析】字符串需要结束符'\0',因此长度至少为4;A、D没有结束符,不是字符串(只是字符数组);B数组长度不够。 14、以下代码的输出结果是( ) char s[20] = "hello"; strcpy(s, "world"); printf("%s", s); A. hello B. world C. helloworld D. 编译错误 【答案】B 【解析】strcpy将"world"复制到s中,覆盖原内容。 15、以下代码的输出结果是( ) char s1[20] = "abc", s2[20] = "def"; strcat(s1, s2); printf("%s", s1); A. abc B. def C. abcdef D. abc def 【答案】C 【解析】strcat将s2连接到s1末尾,结果为"abcdef"。 16、以下代码中,能正确比较两个字符串是否相等的是( ) A. if(s1 == s2) B. if(strcmp(s1, s2) == 0) C. if(strcpy(s1, s2)) D. if(s1 = s2) 【答案】B 【解析】字符串比较应用strcmp函数,相等时返回0。 17、以下代码的输出结果是( ) char str[20] = "China"; printf("%d", strlen(str)); A. 5 B. 6 C. 20 D. 随机值 【答案】A 【解析】strlen计算字符个数直到'\0',不包括'\0',"China"有5个字符。 18、以下程序段用于将数组a中的元素逆序存放,划线处应填( ) int a[5] = {1,2,3,4,5}; int i, t; for(i=0; i<2; i++) { t = a[i]; a[i] = a[4-i]; ________; } A. a[i] = t B. a[4-i] = t C. a[4-i] = a[i] D. t = a[4-i] 【答案】B 【解析】交换a[i]和a[4-i]后,需将暂存的t赋给a[4-i]。 19、以下代码的功能是( ) int a[10], i, max; max = a[0]; for(i=1; i<10; i++) if(a[i] > max) max = a[i]; A. 求数组最小值 B. 求数组最大值 C. 求数组和 D. 排序 【答案】B 【解析】依次比较,max记录最大值。 20、以下关于二维数组的初始化,错误的是( ) A. int a[2][3] = {0}; B. int a[2][3] = {{1,2},{3,4,5}}; C. int a[2][3] = {1,2,3,4,5,6}; D. int a[2][3] = {1,2,3,4,5,6,7}; 【答案】D 【解析】初始化值个数不能超过数组元素总数。 21、以下代码的输出结果是( ) int a[3][3] = {{1,2},{3,4},{5,6}}; printf("%d", a[1][2]); A. 0 B. 4 C. 5 D. 随机值 【答案】A 【解析】每行未初始化部分自动补0,a[1][2]为0。 22、以下函数用于输出二维数组的某一行,划线处应填( ) void print_row(int a[][3], int row) { for(int j=0; j<3; j++) printf("%d ", ________); } A. a[row][j] B. a[j][row] C. a[row+j] D. a[row] + j 【答案】A 【解析】行下标为row,列下标为j。 23、以下代码的输出结果是( ) char s[] = "Hello\0World"; printf("%s", s); A. Hello B. HelloWorld C. Hello World D. Hello\0World 【答案】A 【解析】字符串遇'\0'结束,只输出"Hello"。 24、以下程序段中,能正确输入一个字符串到数组s的是( ) A. scanf("%s", &s); B. gets(s); C. scanf("%c", s); D. s = gets(); 【答案】B 【解析】gets(s)输入一行字符串(含空格)到s;A中&s是数组地址,但%s期望char*,类型不匹配但可能警告;C只输入一个字符;D语法错误。 25、判断字符串a和b是否相等,应当使用( )。 A.if (a == b) B.if (a = b) C.if (strcpy (a,b)) D.if (strcmp (a,b)) 【答案】D 【解析】对于字符串的大小判断只能用串比较函数,不能用关系运算符。 二、多选题(本题共5小题,每题4分,共20分) 1、以下关于一维数组的定义,正确的有( ) A. int a[] = {1,2,3}; B. int a[3] = {0}; C. int a[3] = {1,2,3,4}; D. int a[3] = {1,2}; 【答案】ABD 【解析】A省略长度由初始化决定;B全0初始化;D部分初始化;C初始化值过多,编译错误。 2、以下关于二维数组的说法,正确的有( ) A. 二维数组可以看作特殊的一维数组,其元素是一维数组 B. 二维数组在内存中是按行优先顺序存储的 C. 定义二维数组时,第一维长度可以省略,但第二维不能省略 D. 二维数组的初始化可以采用嵌套花括号或线性列表 【答案】ABCD 【解析】所有选项均正确。 3、以下关于字符数组和字符串的说法,正确的有( ) A. 字符串以'\0'作为结束标志 B. 字符数组不一定要包含'\0' C. char s[] = "abc"; 等价于 char s[4] = {'a','b','c','\0'}; D. strlen(s) 计算的是字符数组的长度(包括'\0') 【答案】ABC 【解析】strlen计算字符串长度,不包括'\0',D错误。 4、以下函数中,属于C语言标准库字符串处理函数的有( ) A. strcpy B. strcat C. strcmp D. strlen 【答案】ABCD 【解析】均为<string.h>中的常用函数。 5、以下关于数组作为函数参数的说法,正确的有( ) A. 数组名作为实参时,传递的是数组首地址 B. 形参可以是数组名或指针变量 C. 在被调函数中,可以通过形参修改实参数组元素的值 D. 数组长度作为参数时,通常需要额外传递 【答案】ABCD 【解析】数组名作参数传递地址,形参可写为int a[]或int *a,可通过指针修改原数组,长度需另外传递。 三、判断题(本题共10小题,每题2分,共20分) 1、定义数组时,数组长度可以是变量。( ) 【答案】× 【解析】C语言中数组长度必须是常量表达式。 2、数组元素的下标从0开始。( ) 【答案】√ 【解析】C语言数组下标起始为0。 3、二维数组在内存中是按列优先顺序存储的。( ) 【答案】× 【解析】按行优先顺序存储。 4、字符数组只能存储字符,不能存储数字。( ) 【答案】× 【解析】字符数组可存储数字字符,如'1',也可存储整数(ASCII码),但通常用于字符串。 5、使用strcpy(s1, s2)时,要求s1的长度足够存放s2的内容(包括'\0')。( ) 【答案】√ 【解析】否则会越界覆盖。 6、字符串"hello"的长度是6。( ) 【答案】× 【解析】字符串长度指字符个数,不含'\0',为5。 7、数组名是一个指针常量,其值不能被改变。( ) 【答案】√ 【解析】数组名代表数组首地址,不可赋值。 8、二维数组的行数可以省略,但列数不能省略。( ) 【答案】√ 【解析】定义时第二维必须指定,第一维可省略。 9、char s[10]; s = "hello"; 是合法的。( ) 【答案】× 【解析】数组名不能作为左值被赋值,只能用strcpy或初始化时赋值。 10、使用gets函数输入字符串时,可以包含空格。( ) 【答案】√ 【解析】gets读取一整行直到换行符,包括空格。 四、填空题(本题共5小题,每题2分,共10分) 1、若有定义 int a[5] = {2,4,6,8,10};,则 a[4] 的值为( )。 【答案】10 【解析】下标从0开始,a[4]是第五个元素。 2、以下程序段的功能是求数组a中所有元素的平均值,请填空。( ) int a[10], i, sum = 0; float avg; for(i=0; i<10; i++) sum += ________; avg = sum / 10.0; 【答案】a[i] 【解析】累加每个元素的值。 3、以下程序段输出结果为 ( )。 char s[20] = "good"; strcat(s, " morning"); printf("%s", s); 【答案】good morning 【解析】strcat将" morning"连接到"good"末尾。 4、二维数组 int a[3][4]; 共有( )个元素。 【答案】12 【解析】3行4列,共12个元素。 5、以下程序段输出字符串的长度为( )。 char str[100] = "Hello\0World"; printf("%d", strlen(str)); 【答案】5 【解析】strlen遇到第一个'\0'即停止,只计算"Hello"的5个字符。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第五章 数组《编程语言基础-C语言》(高教版第5版)章节过关卷(一)
1
第五章 数组《编程语言基础-C语言》(高教版第5版)章节过关卷(一)
2
第五章 数组《编程语言基础-C语言》(高教版第5版)章节过关卷(一)
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。