内容正文:
编写说明:重庆市《计算机类考纲百套卷》依据重庆市《高等职业教育分类考试专业综合理论测试计算机类考试说明》编写,本套试卷共88份分为三个部分,第一部分是根据考试说明的各章节的要求,编写了58份知识点训练卷,第二部分是针对每门课程的重点内容,编写的20份常考题训练卷,第三个部分是参考近几年重庆市计算机类专业理论考试真题,编写了10份专业综合训练卷。
本试卷是重庆市《计算机类考纲百套卷》的第55卷,是知识点训练卷,按考纲中《C语言程序设计》---(五)数组与结构类型的5-6要求编写。其两点要求是:5.掌握使用一维数组的常见处理算法;说明:能找出最大值、最小值, 计数,统计总数、平均数,查找、排序、插入等;6.掌握结构类型的定义,结构类型变量定义、初始化和输出。
重庆市《计算机类考纲百套卷》 第55卷
C语言程序设计
(五)数组与结构类型 知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、填空题(本大题共15小题,每题2分,共30分)
1. 类型名 数组名[______];补充完整一维数组定义的一般形式。
2. 要找出一个整型数组中的最大值,需要遍历数组,并用一个变量记录当前的最大值,该变量初始值应为数组的第一个元素,即______。
3. sizeof(数组名) / sizeof(______);计算一维数组中元素个数的公式。
4. 在C语言中,结构类型的定义关键字是______。
5. 对一维数组进行冒泡排序时,每次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来,这样一趟排序后,数组中最大的数就被移到了最后。这个过程需要重复______次。
6. 要在整型数组中查找一个特定的值,可以使用______循环来实现。
7. 在C语言中,结构类型变量初始化时,可以使用______进行赋值。
8. 插入排序的基本思想是:每步将一个待排序的记录按其关键字的大小插入到前面已经排好序的子序列中的适当位置,直到全部插入排序完为止。在插入过程中,需要从后向前逐个比较已排序元素,因此需要使用______循环。
9. 计算一维数组元素的平均值,需要将所有元素相加后除以______。
10. 定义一个结构体变量时,可以使用______关键字来定义结构体类型。
11. 结构体变量的成员可以通过______运算符来访问。
12. 可以使用______函数来输出结构体变量的成员值。
13. 对一维数组进行选择排序时,每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的序列的最后,直到全部排完为止。每一趟排序需要找到一个最小值,因此需要使用______变量来记录最小值的索引。
14. 声明一个结构体数组时,需要先______结构体类型。
15. 结构体变量在内存中的存储空间是按照其成员的______进行字节对齐的。
二、单项选择题(本大题共15小题,每题2分,共30分)
1. 在一维数组中,以下哪个选项不是其特点?( )
A. 数据类型相同
B. 占用连续的内存空间
C. 可以存储不同类型的数据
D. 通过下标访问元素
2. 在一维数组中,以下哪个函数可以用来找出最大值?( )
A. max()
B. min()
C. sort()
D. sum()
3. 在一维数组的常见处理算法中,以下哪个选项不属于其中?( )
A. 计数
B. 排序
C. 查找
D. 循环
4. 在C语言中,以下哪个关键字用于定义结构体?( )
A. struct
B. union
C. enum
D. typedef
5. 定义结构体变量时,以下哪个选项是正确的?( )
A. struct 结构体名 变量名;
B. struct 结构体名;
C. 结构体名 变量名;
D. 结构体名;
6. 初始化结构体变量时,以下哪个选项是正确的?( )
A. struct 结构体名 变量名 = {初始值};
B. struct 结构体名 变量名 = 初始值;
C. 结构体名 变量名 = {初始值};
D. 结构体名 变量名 = 初始值;
7. 输出结构体变量的成员时,以下哪个选项是正确的?( )
A. printf("%d", 结构体变量名.成员名);
B. printf("%d", 结构体名.成员名);
C. printf("%d", 结构体变量名);
D. printf("%d", 结构体名);
8. 在一维数组中,以下哪个算法用于插入元素?( )
A. 冒泡排序
B. 选择排序
C. 插入排序
D. 快速排序
9. 对一维数组的操作中,以下哪个选项不是操作之一?( )
A. 查找元素
B. 删除元素
C. 插入元素
D. 修改元素
10. 在C语言中,以下哪个关键字用于定义结构体类型?( )
A. struct
B. class
C. type
D. define
11. 关于将二维数组元素全都初始化为0的正确方式,以下哪个选项是正确的?( )
A. int arr[2][2] = {{0}};
B. int arr[2][2] = {0};
C. int arr[2][2] = {0, 0, 0, 0};
D. int arr[2][2] = {0, 0};
12. 在C语言中,以下哪个选项是正确的二维数组部分初始化方式的示例?( )
A. int arr[3][2] = {{1, 2}, {3}};
B. int arr[3][2] = {1, 2, {3}};
C. int arr[3][2] = {1, {3, 4}, 5};
D. int arr[3][2] = {1, {3}, {4}};
13. 关于二维数组初始化方式的错误示例,以下哪个选项是错误的?( )
A. int arr[2][2] = {{1, 2}, {3, 4}, {5, 6}};
B. int arr[2][2] = {};
C. int arr[2][2] = {1, 2, 3, 4};
D. int arr[2][2] = {{1, 2}, {3, 4, 5}};
14. 在C语言中,以下哪个选项是正确的二维整型数组的初始化方式?( )
A. int arr[2][2] = {{1, 2}, {3, 4}};
B. int arr[2][2] = {1, 2, 3, 4};
C. int arr[2][2] = {"1", "2", "3", "4"};
D. int arr[2][2] = {'1', '2', '3', '4'};
15. 关于结构体的描述,以下哪个选项是错误的?( )
A. 结构体可以包含不同类型的数据
B. 结构体成员可以是一个结构体
C. 结构体成员不能是函数
D. 结构体成员必须是基本数据类型
三、判断题(本大题共6小题,每题2分,共12分)
1. 一维数组可以通过下标直接访问数组中的任意元素。( )
2. 在C语言中,数组的下标从1开始。( )
3. 冒泡排序是一种稳定的排序算法,它的时间复杂度为O(n)。( )
4. 结构体类型的变量可以在定义时进行初始化。( )
5. 在一维数组中,插入一个元素的操作一定需要移动其他元素。( )
6. 结构体类型的变量不能包含指向自身类型的指针。( )
四、程序填空题(本大题共2小题,每题8分,共16分)
1.找出数组中的最大值和最小值。
#include <stdio.h>
int main() {
int numbers[] = {3, 6, 2, 8, 4, 7};
int max = numbers[0]; // 假设第一个元素为最大值
int min = numbers[0]; // 假设第一个元素为最小值
int i;
// 遍历数组,找出最大值和最小值
for(i = 1; i < sizeof(numbers) / sizeof(numbers[0]); i++) {
if(numbers[i] > max) {
________(1) // 更新最大值
}
if(numbers[i] < min) {
________(2) // 更新最小值
}
}
printf("Max: %d
", max);
printf("Min: %d
", min);
return 0;
}
2.定义并初始化一个结构体,然后输出其成员的值。
#include <stdio.h>
// 定义一个结构体
struct Student {
char name[50];
int age;
float score;
};
int main() {
// 定义并初始化结构体变量
struct Student stu = {"张三", 20, 92.5};
// 输出结构体变量的成员值
________(1)
printf("Age: %d
", stu.age);
________(2)
return 0;
}
五、阅读程序题(本大题共12分)
1.阅读以下程序,并回答问题。
#include <stdio.h>
// 定义一个结构体
struct Student {
char name[50];
int age;
float score;
};
void printStudent(struct Student stu) {
printf("Name: %s
", stu.name);
printf("Age: %d
", stu.age);
printf("Score: %.2f
", stu.score);
}
int main() {
// 声明并初始化一个结构体数组
struct Student students[3] = {
{"张三", 18, 88.5},
{"李四", 19, 92.0},
{"王五", 20, 95.5}
};
// 计算所有学生的平均分
float sum = 0.0;
for (int i = 0; i < 3; i++) {
sum += students[i].score;
}
float average = sum / 3;
printf("Average score: %.2f
", average);
// 输出每个学生的信息
for (int i = 0; i < 3; i++) {
printStudent(students[i]);
}
return 0;
}
(1)请问上述程序定义了一个名为Student的结构体,它包含哪些成员?
(2)printStudent函数的作用是什么?
(3)在main函数中,students数组初始化时包含了几个Student结构体?
(4)程序是如何计算所有学生的平均分数的?
(5)printStudent函数是如何被调用的?它是在哪个循环中被调用的?
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
编写说明:重庆市《计算机类考纲百套卷》依据重庆市《高等职业教育分类考试专业综合理论测试计算机类考试说明》编写,本套试卷共88份分为三个部分,第一部分是根据考试说明的各章节的要求,编写了58份知识点训练卷,第二部分是针对每门课程的重点内容,编写的20份常考题训练卷,第三个部分是参考近几年重庆市计算机类专业理论考试真题,编写了10份专业综合训练卷。
本试卷是重庆市《计算机类考纲百套卷》的第55卷,是知识点训练卷,按考纲中《C语言程序设计》---(五)数组与结构类型的5-6要求编写。其两点要求是:5.掌握使用一维数组的常见处理算法;说明:能找出最大值、最小值, 计数,统计总数、平均数,查找、排序、插入等;6.掌握结构类型的定义,结构类型变量定义、初始化和输出。
重庆市《计算机类考纲百套卷》 第55卷
C语言程序设计
(五)数组与结构类型 知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、填空题(本大题共15小题,每题2分,共30分)
1. 类型名 数组名[______];补充完整一维数组定义的一般形式。
【答案】常量表达式
2. 要找出一个整型数组中的最大值,需要遍历数组,并用一个变量记录当前的最大值,该变量初始值应为数组的第一个元素,即______。
【答案】数组名[0]
3. sizeof(数组名) / sizeof(______);计算一维数组中元素个数的公式。
【答案】数组名[0]
4. 在C语言中,结构类型的定义关键字是______。
【答案】struct
5. 对一维数组进行冒泡排序时,每次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来,这样一趟排序后,数组中最大的数就被移到了最后。这个过程需要重复______次。
【答案】数组长度-1
6. 要在整型数组中查找一个特定的值,可以使用______循环来实现。
【答案】for
7. 在C语言中,结构类型变量初始化时,可以使用______进行赋值。
【答案】花括号{}
8. 插入排序的基本思想是:每步将一个待排序的记录按其关键字的大小插入到前面已经排好序的子序列中的适当位置,直到全部插入排序完为止。在插入过程中,需要从后向前逐个比较已排序元素,因此需要使用______循环。
【答案】while
9. 计算一维数组元素的平均值,需要将所有元素相加后除以______。
【答案】数组长度
10. 定义一个结构体变量时,可以使用______关键字来定义结构体类型。
【答案】typedef
11. 结构体变量的成员可以通过______运算符来访问。
【答案】点
12. 可以使用______函数来输出结构体变量的成员值。
【答案】printf
13. 对一维数组进行选择排序时,每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的序列的最后,直到全部排完为止。每一趟排序需要找到一个最小值,因此需要使用______变量来记录最小值的索引。
【答案】int
14. 声明一个结构体数组时,需要先______结构体类型。
【答案】定义
15. 结构体变量在内存中的存储空间是按照其成员的______进行字节对齐的。
【答案】类型大小
二、单项选择题(本大题共15小题,每题2分,共30分)
1. 在一维数组中,以下哪个选项不是其特点?( )
A. 数据类型相同
B. 占用连续的内存空间
C. 可以存储不同类型的数据
D. 通过下标访问元素
【答案】C
2. 在一维数组中,以下哪个函数可以用来找出最大值?( )
A. max()
B. min()
C. sort()
D. sum()
【答案】A
3. 在一维数组的常见处理算法中,以下哪个选项不属于其中?( )
A. 计数
B. 排序
C. 查找
D. 循环
【答案】D
4. 在C语言中,以下哪个关键字用于定义结构体?( )
A. struct
B. union
C. enum
D. typedef
【答案】A
5. 定义结构体变量时,以下哪个选项是正确的?( )
A. struct 结构体名 变量名;
B. struct 结构体名;
C. 结构体名 变量名;
D. 结构体名;
【答案】A
6. 初始化结构体变量时,以下哪个选项是正确的?( )
A. struct 结构体名 变量名 = {初始值};
B. struct 结构体名 变量名 = 初始值;
C. 结构体名 变量名 = {初始值};
D. 结构体名 变量名 = 初始值;
【答案】A
7. 输出结构体变量的成员时,以下哪个选项是正确的?( )
A. printf("%d", 结构体变量名.成员名);
B. printf("%d", 结构体名.成员名);
C. printf("%d", 结构体变量名);
D. printf("%d", 结构体名);
【答案】A
8. 在一维数组中,以下哪个算法用于插入元素?( )
A. 冒泡排序
B. 选择排序
C. 插入排序
D. 快速排序
【答案】C
9. 对一维数组的操作中,以下哪个选项不是操作之一?( )
A. 查找元素
B. 删除元素
C. 插入元素
D. 修改元素
【答案】B
10. 在C语言中,以下哪个关键字用于定义结构体类型?( )
A. struct
B. class
C. type
D. define
【答案】A
11. 关于将二维数组元素全都初始化为0的正确方式,以下哪个选项是正确的?( )
A. int arr[2][2] = {{0}};
B. int arr[2][2] = {0};
C. int arr[2][2] = {0, 0, 0, 0};
D. int arr[2][2] = {0, 0};
【答案】A
12. 在C语言中,以下哪个选项是正确的二维数组部分初始化方式的示例?( )
A. int arr[3][2] = {{1, 2}, {3}};
B. int arr[3][2] = {1, 2, {3}};
C. int arr[3][2] = {1, {3, 4}, 5};
D. int arr[3][2] = {1, {3}, {4}};
【答案】A
13. 关于二维数组初始化方式的错误示例,以下哪个选项是错误的?( )
A. int arr[2][2] = {{1, 2}, {3, 4}, {5, 6}};
B. int arr[2][2] = {};
C. int arr[2][2] = {1, 2, 3, 4};
D. int arr[2][2] = {{1, 2}, {3, 4, 5}};
【答案】A
14. 在C语言中,以下哪个选项是正确的二维整型数组的初始化方式?( )
A. int arr[2][2] = {{1, 2}, {3, 4}};
B. int arr[2][2] = {1, 2, 3, 4};
C. int arr[2][2] = {"1", "2", "3", "4"};
D. int arr[2][2] = {'1', '2', '3', '4'};
【答案】A
15. 关于结构体的描述,以下哪个选项是错误的?( )
A. 结构体可以包含不同类型的数据
B. 结构体成员可以是一个结构体
C. 结构体成员不能是函数
D. 结构体成员必须是基本数据类型
【答案】D
三、判断题(本大题共6小题,每题2分,共12分)
1. 一维数组可以通过下标直接访问数组中的任意元素。( )
【答案】√
2. 在C语言中,数组的下标从1开始。( )
【答案】×
3. 冒泡排序是一种稳定的排序算法,它的时间复杂度为O(n)。( )
【答案】×
4. 结构体类型的变量可以在定义时进行初始化。( )
【答案】√
5. 在一维数组中,插入一个元素的操作一定需要移动其他元素。( )
【答案】√
6. 结构体类型的变量不能包含指向自身类型的指针。( )
【答案】×
四、程序填空题(本大题共2小题,每题8分,共16分)
1.找出数组中的最大值和最小值。
#include <stdio.h>
int main() {
int numbers[] = {3, 6, 2, 8, 4, 7};
int max = numbers[0]; // 假设第一个元素为最大值
int min = numbers[0]; // 假设第一个元素为最小值
int i;
// 遍历数组,找出最大值和最小值
for(i = 1; i < sizeof(numbers) / sizeof(numbers[0]); i++) {
if(numbers[i] > max) {
________(1) // 更新最大值
}
if(numbers[i] < min) {
________(2) // 更新最小值
}
}
printf("Max: %d
", max);
printf("Min: %d
", min);
return 0;
}
【答案】
(1)max = numbers[i]; // 更新最大值
(2)min = numbers[i]; // 更新最小值
2.定义并初始化一个结构体,然后输出其成员的值。
#include <stdio.h>
// 定义一个结构体
struct Student {
char name[50];
int age;
float score;
};
int main() {
// 定义并初始化结构体变量
struct Student stu = {"张三", 20, 92.5};
// 输出结构体变量的成员值
________(1)
printf("Age: %d
", stu.age);
________(2)
return 0;
}
【答案】
(1)printf("Name: %s
", stu.name);
(2)printf("Score: %.1f
", stu.score);
五、阅读程序题(本大题共12分)
1.阅读以下程序,并回答问题。
#include <stdio.h>
// 定义一个结构体
struct Student {
char name[50];
int age;
float score;
};
void printStudent(struct Student stu) {
printf("Name: %s
", stu.name);
printf("Age: %d
", stu.age);
printf("Score: %.2f
", stu.score);
}
int main() {
// 声明并初始化一个结构体数组
struct Student students[3] = {
{"张三", 18, 88.5},
{"李四", 19, 92.0},
{"王五", 20, 95.5}
};
// 计算所有学生的平均分
float sum = 0.0;
for (int i = 0; i < 3; i++) {
sum += students[i].score;
}
float average = sum / 3;
printf("Average score: %.2f
", average);
// 输出每个学生的信息
for (int i = 0; i < 3; i++) {
printStudent(students[i]);
}
return 0;
}
(1)请问上述程序定义了一个名为Student的结构体,它包含哪些成员?
(2)printStudent函数的作用是什么?
(3)在main函数中,students数组初始化时包含了几个Student结构体?
(4)程序是如何计算所有学生的平均分数的?
(5)printStudent函数是如何被调用的?它是在哪个循环中被调用的?
【答案】
(1)结构体Student包含三个成员:一个字符数组name,一个整型age,和一个浮点型score。
(2)printStudent函数的作用是打印一个Student结构体变量的成员信息,即学生的姓名、年龄和分数。
(3)students数组初始化时包含了3个Student结构体。
(4)程序通过一个for循环遍历students数组,将每个学生的分数累加到变量sum中,然后将sum除以学生数量3,得到平均分数。
(5)printStudent函数在main函数的第二个for循环中被调用,这个循环遍历students数组,对每个元素调用printStudent函数,以打印每个学生的信息。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$