内容正文:
编写说明:广西《电子与信息大类考纲百套卷》,是依据广西《高等职业教育考试大纲与说明(电子与信息大类)》2026版编写。本套试卷共100份,由三个部分组成。第一部分是按考点要求编写的60份知识点训练卷;第二部分是针对三门课程编写的30份常考题训练卷;第三个部分是10份专业知识综合训练卷。
本试卷是广西《电子与信息大类考纲百套卷》的第35卷,是知识点训练卷,其编写要求如下:
(1)掌握一维数组的定义及引用;
(2)掌握二维数组的定义及引用;
(3)了解字符数组的定义及引用。
广西《电子与信息类考纲百套卷》 第35卷
《程序设计基础》
5.数组-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单项选择题(本大题共20小题,每小题3分,共60分)
1.以下正确的数组声明是( )
A.int a(5);
B.int n=5; int a[n];
C.float arr[3.5];
D.char str[10];
答案:D
2.若int a[5]={0};,以下引用正确的是( )
A.a[5] = 10;
B.a[2.5] = 3;
C.a[3] = a[0] + 1;
D.a = {1,2,3};
答案:C
3.逆序输出数组的正确代码段是( )
A.for(int i=0; i<5; i++) printf("%d", a[5-i]);
B.for(int i=5; i>=0; i--) printf("%d", a[i]);
C.for(int i=5; i>0; i--) printf("%d", a[i]);
D.for(int i=0; i<5; i++) printf("%d", a[4-i]);
答案:D
5.以下代码段存在的主要问题是( )
int arr[5] = {1,2,3,4,5};
for(int i=0; i<=5; i++) printf("%d", arr[i]);
A.语法错误
B.数组未初始化
C.输出顺序错误
D.越界访问
答案:D
6.执行以下代码后输出结果为( )
char str[10] = "hello";
printf("%d", strlen(str));
A.5
B.6
C.10
D.随机值
答案:A
7.以下代码的输出是( )
int arr[] = {9,8,7,6};
int *p = arr;
printf("%d", *(p+3));
A.9
B.8
C.7
D.6
答案:D
8.执行int a[2][3] = {1,2,3,4};后,a[1][2]的值是( )
A.0
B.4
C.5
D.编译错误
答案:A
9.以下代码的输出是( )
int a[2][3] = {{1,2,3}, {4,5,6}};
printf("%d", *(*(a+1)+1));
A.2
B.4
C.5
D.6
答案:C
10.以下代码的功能是( )
int a[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
int sum = 0;
for (int i=0; i<3; i++)
sum += a[i][i];
A.计算主对角线元素和
B.计算副对角线元素和
C.计算所有元素和
D.计算每行元素和
答案:A
11.以下代码的输出是( )
int arr[2][3] = {{1,2,3}, {4,5,6}};
printf("%d", *(*(arr + 1) + 2));
A.3
B.5
C.6
D.编译错误
答案:C
12.以下代码的功能是( )
int a[3][4], max_row = 0;
for(int i=0; i<3; i++)
for(int j=0; j<4; j++)
if(a[i][j] > a[max_row][0]) max_row = i;
A.找到最大元素所在行
B.找到每行第一个元素的最大值
C.找到第一列的最大值
D.逻辑错误
答案:B
13.以下字符数组定义错误的是( )
A.char s[5] = {'A','B','C','D','E'};
B.char s[] = "Hello";
C.char s[3] = {'1','2','\0'};
D.char s[2] = "China";
答案:D
14.若char str[10] = "ABCDE";,则str[5]的值是( )
A.'E'
B.'\0'
C.随机值
D.编译错误
答案:B
13.执行char arr[5] = {'a','\0','c','d','e'};后,printf("%s", arr);的输出是( )
A.a
B.acde
C.a cde
D.编译错误
答案:A
14.以下代码存在的主要问题是( )
char s[5];
strcpy(s, "Programming");
A.数组未初始化
B.越界写入
C.缺少结束符
D.语法错误
答案:B
15.以下代码的功能是( )
char s[20] = "Hello";
char *p = s + 3;
printf("%s", p);
A.输出"lo"
B.输出"Hello"
C.输出"llo"
D.越界访问
答案:A
16.以下初始化正确的是( )
A.char a[5] = "abcde";
B.char a[] = {'a','b','c'};
C.char a[3] = "abc";
D.char a[4] = "abcd";
答案:B
17.以下代码存在的主要问题是( )
char str1[5] = "test", str2[5];
strcpy(str2, str1);
A.str1未初始化
B.str2未初始化
C.strcpy可能导致缓冲区溢出
D.语法错误
答案:C
18.动态分配字符数组的正确方式是( )
A.char *str = malloc(10); strcpy(str, "Hello");
B.char str[10]; str = "Hello";
C.char *str; scanf("%s", str);
D.char *str = "Hello";
答案:A
19.以下代码的输出是( )
printf("%d", sizeof("AB\0CD"));
A.3
B.5
C.6
D.7
答案:C
20.若有定义char *p = "Hello";,以下合法操作是( )
A. p[0] = 'h'
B.scanf("%s", p)
C.printf("%s", p+1)
D.strcat(p, "!")
答案:C
二、判断题(本大题共10小题,每小题1分,共10分)
1.在 C 语言中,定义一维数组时,数组的大小可以是一个变量。( )
答案:×
2.定义一维数组时,可以不指定数组大小,但必须进行初始化。( )
答案:√
3.在 C 语言中,数组名代表数组首元素的地址。( )
答案:√
4.定义一维数组时,数组元素的数据类型可以是任意类型,包括自定义类型。( )
答案:√
5.可以使用 int arr[2, 3]; 来定义一个 2 行 3 列的二维数组。( )
答案:×
6.对于二维数组 int arr[2][3] = {{1, 2}, {3, 4}};,未明确初始化的元素会自动初始化为 0。( )
答案:√
7.可以通过 scanf("%d", arr); 一次性输入二维数组 arr 的所有元素。( )
答案:×
8.二维数组 int arr[2][3]; 的元素个数为 6 个。( )
答案:√
9.在 C 语言中,字符数组必须以 '\0' 结尾才能表示一个字符串。( )
答案:×
10.若有字符数组 char str[10] = {'h', 'e', 'l', 'l', 'o'};,则 strlen(str) 的结果是 5。( )
答案:√
三、填空题(本大题共5小题,每题3分,共15分)
1.定义一个包含 10 个整数的一维数组,数组名为 nums,应使用的语句是______。
答案:int nums[10];
2.若有 int arr[5] = {1, 2, 3, 4, 5}; ,则 *(arr + 1) 的值是______。
答案:2
3.定义一个 3 行 4 列的二维整数数组 matrix,应使用的语句是______。
答案:int matrix[3][4];
4.若有 int arr[2][3];,则 sizeof(arr) 表示的是______。
答案:二维数组 arr 所占用的总字节数
5.若要将字符串 "world" 复制到字符数组 str 中,可使用的函数是______。
答案:strcpy
四、应用题(本大题共2小题,共15分)
1.补全代码, 一维数组元素逆序
#include <stdio.h>
#define SIZE 5
void reverseArray(int arr[], int size) {
int left = 0, right = size - 1;
while (______) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
______;
______;
}
}
int main() {
int arr[SIZE] = {1, 2, 3, 4, 5};
reverseArray(arr, SIZE);
for (int i = 0; i < SIZE; i++) {
printf("%d ", arr[i]);
}
return 0;
}
答案:left < right,left++,right--
2.补全代码,二维数组转置
#include <stdio.h>
#define ROWS 3
#define COLS 3
void transpose(int arr[ROWS][COLS], int transposed[COLS][ROWS]) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; ______; j++) {
transposed[j][i] = ______;
}
}
}
int main() {
int arr[ROWS][COLS] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int transposed[COLS][ROWS];
transpose(arr, transposed);
for (int i = 0; i < COLS; i++) {
for (int j = 0; j < ROWS; j++) {
printf("%d ", transposed[i][j]);
}
printf("
");
}
return 0;
}
答案: j < COLS,arr[i][j]
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$
编写说明:广西《电子与信息大类考纲百套卷》,是依据广西《高等职业教育考试大纲与说明(电子与信息大类)》2026版编写。本套试卷共100份,由三个部分组成。第一部分是按考点要求编写的60份知识点训练卷;第二部分是针对三门课程编写的30份常考题训练卷;第三个部分是10份专业知识综合训练卷。
本试卷是广西《电子与信息大类考纲百套卷》的第35卷,是知识点训练卷,其编写要求如下:
(1)掌握一维数组的定义及引用;
(2)掌握二维数组的定义及引用;
(3)了解字符数组的定义及引用。
广西《电子与信息类考纲百套卷》 第35卷
《程序设计基础》
5.数组-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单项选择题(本大题共20小题,每小题3分,共60分)
1.以下正确的数组声明是( )
A.int a(5);
B.int n=5; int a[n];
C.float arr[3.5];
D.char str[10];
2.若int a[5]={0};,以下引用正确的是( )
A.a[5] = 10;
B.a[2.5] = 3;
C.a[3] = a[0] + 1;
D.a = {1,2,3};
3.逆序输出数组的正确代码段是( )
A.for(int i=0; i<5; i++) printf("%d", a[5-i]);
B.for(int i=5; i>=0; i--) printf("%d", a[i]);
C.for(int i=5; i>0; i--) printf("%d", a[i]);
D.for(int i=0; i<5; i++) printf("%d", a[4-i]);
5.以下代码段存在的主要问题是( )
int arr[5] = {1,2,3,4,5};
for(int i=0; i<=5; i++) printf("%d", arr[i]);
A.语法错误
B.数组未初始化
C.输出顺序错误
D.越界访问
6.执行以下代码后输出结果为( )
char str[10] = "hello";
printf("%d", strlen(str));
A.5
B.6
C.10
D.随机值
7.以下代码的输出是( )
int arr[] = {9,8,7,6};
int *p = arr;
printf("%d", *(p+3));
A.9
B.8
C.7
D.6
8.执行int a[2][3] = {1,2,3,4};后,a[1][2]的值是( )
A.0
B.4
C.5
D.编译错误
9.以下代码的输出是( )
int a[2][3] = {{1,2,3}, {4,5,6}};
printf("%d", *(*(a+1)+1));
A.2
B.4
C.5
D.6
10.以下代码的功能是( )
int a[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
int sum = 0;
for (int i=0; i<3; i++)
sum += a[i][i];
A.计算主对角线元素和
B.计算副对角线元素和
C.计算所有元素和
D.计算每行元素和
11.以下代码的输出是( )
int arr[2][3] = {{1,2,3}, {4,5,6}};
printf("%d", *(*(arr + 1) + 2));
A.3
B.5
C.6
D.编译错误
12.以下代码的功能是( )
int a[3][4], max_row = 0;
for(int i=0; i<3; i++)
for(int j=0; j<4; j++)
if(a[i][j] > a[max_row][0]) max_row = i;
A.找到最大元素所在行
B.找到每行第一个元素的最大值
C.找到第一列的最大值
D.逻辑错误
13.以下字符数组定义错误的是( )
A.char s[5] = {'A','B','C','D','E'};
B.char s[] = "Hello";
C.char s[3] = {'1','2','\0'};
D.char s[2] = "China";
14.若char str[10] = "ABCDE";,则str[5]的值是( )
A.'E'
B.'\0'
C.随机值
D.编译错误
13.执行char arr[5] = {'a','\0','c','d','e'};后,printf("%s", arr);的输出是( )
A.a
B.acde
C.a cde
D.编译错误
14.以下代码存在的主要问题是( )
char s[5];
strcpy(s, "Programming");
A.数组未初始化
B.越界写入
C.缺少结束符
D.语法错误
15.以下代码的功能是( )
char s[20] = "Hello";
char *p = s + 3;
printf("%s", p);
A.输出"lo"
B.输出"Hello"
C.输出"llo"
D.越界访问
16.以下初始化正确的是( )
A.char a[5] = "abcde";
B.char a[] = {'a','b','c'};
C.char a[3] = "abc";
D.char a[4] = "abcd";
17.以下代码存在的主要问题是( )
char str1[5] = "test", str2[5];
strcpy(str2, str1);
A.str1未初始化
B.str2未初始化
C.strcpy可能导致缓冲区溢出
D.语法错误
18.动态分配字符数组的正确方式是( )
A.char *str = malloc(10); strcpy(str, "Hello");
B.char str[10]; str = "Hello";
C.char *str; scanf("%s", str);
D.char *str = "Hello";
19.以下代码的输出是( )
printf("%d", sizeof("AB\0CD"));
A.3
B.5
C.6
D.7
20.若有定义char *p = "Hello";,以下合法操作是( )
A. p[0] = 'h'
B.scanf("%s", p)
C.printf("%s", p+1)
D.strcat(p, "!")
二、判断题(本大题共10小题,每小题1分,共10分)
1.在 C 语言中,定义一维数组时,数组的大小可以是一个变量。( )
2.定义一维数组时,可以不指定数组大小,但必须进行初始化。( )
3.在 C 语言中,数组名代表数组首元素的地址。( )
4.定义一维数组时,数组元素的数据类型可以是任意类型,包括自定义类型。( )
5.可以使用 int arr[2, 3]; 来定义一个 2 行 3 列的二维数组。( )
6.对于二维数组 int arr[2][3] = {{1, 2}, {3, 4}};,未明确初始化的元素会自动初始化为 0。( )
7.可以通过 scanf("%d", arr); 一次性输入二维数组 arr 的所有元素。( )
8.二维数组 int arr[2][3]; 的元素个数为 6 个。( )
9.在 C 语言中,字符数组必须以 '\0' 结尾才能表示一个字符串。( )
10.若有字符数组 char str[10] = {'h', 'e', 'l', 'l', 'o'};,则 strlen(str) 的结果是 5。( )
三、填空题(本大题共5小题,每题3分,共15分)
1.定义一个包含 10 个整数的一维数组,数组名为 nums,应使用的语句是______。
2.若有 int arr[5] = {1, 2, 3, 4, 5}; ,则 *(arr + 1) 的值是______。
3.定义一个 3 行 4 列的二维整数数组 matrix,应使用的语句是______。
答案:int matrix[3][4];
5.若要将字符串 "world" 复制到字符数组 str 中,可使用的函数是______。
四、应用题(本大题共2小题,共15分)
1.补全代码, 一维数组元素逆序
#include <stdio.h>
#define SIZE 5
void reverseArray(int arr[], int size) {
int left = 0, right = size - 1;
while (______) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
______;
______;
}
}
int main() {
int arr[SIZE] = {1, 2, 3, 4, 5};
reverseArray(arr, SIZE);
for (int i = 0; i < SIZE; i++) {
printf("%d ", arr[i]);
}
return 0;
}
2.补全代码,二维数组转置
#include <stdio.h>
#define ROWS 3
#define COLS 3
void transpose(int arr[ROWS][COLS], int transposed[COLS][ROWS]) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; ______; j++) {
transposed[j][i] = ______;
}
}
}
int main() {
int arr[ROWS][COLS] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int transposed[COLS][ROWS];
transpose(arr, transposed);
for (int i = 0; i < COLS; i++) {
for (int j = 0; j < ROWS; j++) {
printf("%d ", transposed[i][j]);
}
printf("
");
}
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$