《C语言程序设计》(五)数组-知识点训练卷 吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》第17卷

2025-02-24
| 2份
| 26页
| 102人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 -
年级 -
章节 -
类型 题集-专项训练
知识点 数组
使用场景 中职复习
学年 2025-2026
地区(省份) 吉林省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 179 KB
发布时间 2025-02-24
更新时间 2025-02-24
作者 胥豆豆老师
品牌系列 学易金卷·考纲百套卷
审核时间 2025-02-24
下载链接 https://m.zxxk.com/soft/50622467.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

编写说明:吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。 本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第17卷,是知识点训练卷。按“C语言程序设计”考试纲要(五)数组的六点知识点要求编写,其六点要求是: 1.掌握数组和数组元素概念。2.掌握一维数值型数组的定义、引用、初始化。3.掌握二维数值型数组的定义、引用、初始化。4.了解字符数组的定义、引用、输入与输出。5.了解常用字符串处理函数:strlen()、strcat()、strcpy()、strcmp()。6.掌握简单一维数值型数组循环程序设计。 吉林省《信息工程类(电子与信息类)考纲百套卷》 第17卷 《C语言程序设计》 (五)数组-知识点训练卷 考试时间60分钟 满分100分 班级 姓名 学号 成绩 一、选择题(本大题共10小题,每小题2分,共20分) 1. 若有定义 int a[10];,则对数组 a 元素的正确引用是( ) A. a[10] B. a[3.5] C. a(5) D. a[0] 答案:D 2. 若有定义 int a[10] = {1, 2, 3, 4, 5};,则数组 a 中元素 a[5] 的值是( ) A. 5 B. 随机值 C. 0 D. 以上都不对 答案:C 3. 以下对二维数组 a 进行正确初始化的语句是( ) A. int a[2][3] = {{1, 2}, {3, 4}, {5, 6}}; B. int a[][3] = {{1, 2, 3}, {4, 5, 6}}; C. int a[2][] = {{1, 2, 3}, {4, 5, 6}}; D. int a[2][3] = {1, 2, 3; 4, 5, 6}; 答案:B 4.以下程序段的输出结果是( ) int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; printf("%d ", a[1][0]); A. 1 B. 2 C. 4 D. 5 答案:C 5. 若有定义 char str[10];,使用 scanf 函数输入字符串时,以下正确的输入语句是( ) A. scanf("%s", &str); B. scanf("%s", str[0]); C. scanf("%c", str); D. scanf("%s", str); 答案:D 6. 若有定义 char str1[10] = "abc", str2[10] = "def";,要将 str2 连接到 str1 后面,以下正确的操作是( ) A. str1 = str1 + str2; B. strcpy(str1, str2); C. strcat(str1, str2); D. strcat(str2, str1); 答案:C 7. 以下代码的输出结果是( ) char str1[10] = "abc"; char str2[10] = "def"; strcat(str1, str2); printf("%s", str1); A. abcdef B. def C. abc D. 编译错误 答案:A 8. 以下代码执行后,str1 的内容是( ) char str1[10] = "abc"; char str2[10] = "def"; strcpy(str1, str2); A. abc B. def C. abcdef D. 编译错误 答案:B 9. 有一维数组 int arr[5] = {1, 2, 3, 4, 5};,以下代码的输出结果是( ) int sum = 0; for (int i = 0; i < 5; i++) { sum += arr[i]; } printf("%d", sum); A. 10 B. 15 C. 5 D. 20 答案:B 10. 若要比较两个字符串 str1 和 str2 的大小,以下正确的做法是( ) A. if (str1 == str2) B. if (str1 > str2) C. if (strcmp(str1, str2) == 0) D. if (strcpy(str1, str2) == 0) 答案:C 二、判断题(本大题共10小题,每小题2分,共20分) 1. 可以通过数组名直接对整个数组进行赋值操作。( ) 答案:错误 3. 若有定义 int a[5];,则数组 a 的最后一个元素是 a[4]。( ) 答案:正确 3. 定义二维数组时,第一维的大小可以省略,但第二维的大小不能省略。( ) 答案:正确 4. 初始化二维数组时,必须对所有元素进行初始化。( ) 答案:错误 5.字符数组在定义时必须进行初始化。( ) 答案:错误 6. 当使用 scanf 函数输入字符串时,遇到空格会自动停止输入。( ) 答案:正确 7. strcat 函数可以将任意长度的字符串连接到目标字符串后面,不会产生越界问题。( ) 答案:错误 8. 若 strcmp(str1, str2) 返回值为正,则表示 str1 的字典序小于 str2。( ) 答案:错误 9. 可以使用 strlen 函数来计算字符数组的大小。( ) 答案:错误 10. strcat 和 strcpy 函数都要求目标数组有足够的空间来存储结果。( ) 答案:正确 三、填空题(本大题共5小题,每题2分,共10分) 1. 若有定义 int a[5] = {1, 2, 3, 4, 5};,要输出数组 a 的第 3 个元素,应该使用语句 printf("%d ", ______);。 答案:a[2] 2. 若有定义 int a[2][3] = {{1, 2}, {4}};,则数组元素 a[0][2] 的值是 ______。 答案:0 3. 若要使用 gets 函数输入一个字符串到字符数组 str 中,正确的语句是 ______。 答案:gets(str); 4.若有 char str[] = "programming";,则 strlen(str) 的值是 ______。 答案:11 5. 有一维数组 int arr[5] = {1, 3, 5, 7, 9};,通过循环计算数组元素之和的代码如下,请补充完整: int sum = 0; for (int i = 0; i < ______; i++) { sum += arr[i]; } 答案:5 四、读程序写结果题(本大题共5小题,每题5分,共25分) 1.以下程序的运行结果是______。 #include <stdio.h> int main() { int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int sum = 0; for (int i = 0; i < 3; i++) { sum += arr[i][i]; } printf("%d ", sum); return 0; } 答案:15 2.以下程序的运行结果是______。 #include <stdio.h> int main() { char str[] = "Hello"; int len = 0; while (str[len] != '\0') { len++; } printf("%d ", len); return 0; } 答案:5 3.以下程序的运行结果是______。 #include <stdio.h> int main() { char str1[] = "abc"; char str2[] = "def"; char str3[10]; int i = 0, j = 0; while (str1[i] != '\0') { str3[i] = str1[i]; i++; } while (str2[j] != '\0') { str3[i] = str2[j]; i++; j++; } str3[i] = '\0'; printf("%s ", str3); return 0; } 答案:abcdef 4.以下程序的运行结果是______。 #include <stdio.h> int main() { int arr[3][2] = {{1, 2}, {3, 4}, {5, 6}}; for (int j = 0; j < 2; j++) { for (int i = 0; i < 3; i++) { printf("%d ", arr[i][j]); } } return 0; } 答案:1 3 5 2 4 6 5.以下程序的运行结果是______。 #include <stdio.h> int main() { int arr[5] = {5, 4, 3, 2, 1}; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } for (int i = 0; i < 5; i++) { printf("%d ", arr[i]); } return 0; } 答案:1 2 3 4 5 五、编程题(本大题共5小题,每题5分,共25分) 1. 用户输入一维整数数组的元素个数和各个元素,将该数组元素逆置后输出。 答案代码: #include <stdio.h> int main() { int n; printf("请输入数组元素的个数: "); scanf("%d", &n); int arr[n]; printf("请输入 %d 个整数: ", n); for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } int left = 0, right = n - 1; while (left < right) { int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; left++; right--; } printf("逆置后的数组为: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf(" "); return 0; } 2.用户输入一个主字符串和一个子字符串,查找子字符串在主字符串中第一次出现的位置,若未找到则输出 -1。 答案代码: #include <stdio.h> #include <string.h> int main() { char str[100], sub[100]; printf("请输入主字符串: "); scanf("%s", str); printf("请输入子字符串: "); scanf("%s", sub); int strLen = strlen(str); int subLen = strlen(sub); int pos = -1; for (int i = 0; i <= strLen - subLen; i++) { int j; for (j = 0; j < subLen; j++) { if (str[i + j] != sub[j]) { break; } } if (j == subLen) { pos = i; break; } } printf("子字符串第一次出现的位置是: %d ", pos); return 0; } 3.用户输入一个字符串,将字符串中的大写字母转换为小写字母,小写字母转换为大写字母后输出。 答案代码: #include <stdio.h> int main() { char str[100]; printf("请输入一个字符串: "); scanf("%s", str); for (int i = 0; str[i] != '\0'; i++) { if (str[i] >= 'A' && str[i] <= 'Z') { str[i] = str[i] + 32; } else if (str[i] >= 'a' && str[i] <= 'z') { str[i] = str[i] - 32; } } printf("大小写转换后的字符串为: %s ", str); return 0; } 4.用户输入二维数组的阶数(假设为方阵)和各个元素,计算主对角线和副对角线元素之和(如果是奇数阶矩阵,中间元素只加一次)并输出。 答案代码: #include <stdio.h> int main() { int n; printf("请输入二维数组的阶数(方阵): "); scanf("%d", &n); int arr[n][n]; printf("请输入 %d 行 %d 列的整数: ", n, n); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { scanf("%d", &arr[i][j]); } } int sum = 0; for (int i = 0; i < n; i++) { sum += arr[i][i]; sum += arr[i][n - 1 - i]; } if (n % 2 == 1) { int mid = n / 2; sum -= arr[mid][mid]; } printf("对角线元素之和为: %d ", sum); return 0; } 5.用户输入一维整数数组的元素个数和各个元素,使用插入排序算法对数组进行排序后输出。 答案代码: #include <stdio.h> int main() { int n; printf("请输入数组元素的个数: "); scanf("%d", &n); int arr[n]; printf("请输入 %d 个整数: ", n); for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } for (int i = 1; i < n; i++) { int key = arr[i]; int j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } printf("排序后的数组为: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf(" "); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$ 编写说明:吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。 本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第17卷,是知识点训练卷。按“C语言程序设计”考试纲要(五)数组的六点知识点要求编写,其六点要求是: 1.掌握数组和数组元素概念。2.掌握一维数值型数组的定义、引用、初始化。3.掌握二维数值型数组的定义、引用、初始化。4.了解字符数组的定义、引用、输入与输出。5.了解常用字符串处理函数:strlen()、strcat()、strcpy()、strcmp()。6.掌握简单一维数值型数组循环程序设计。 吉林省《信息工程类(电子与信息类)考纲百套卷》 第17卷 《C语言程序设计》 (五)数组-知识点训练卷 考试时间60分钟 满分100分 班级 姓名 学号 成绩 一、选择题(本大题共10小题,每小题2分,共20分) 1. 若有定义 int a[10];,则对数组 a 元素的正确引用是( ) A. a[10] B. a[3.5] C. a(5) D. a[0] 答案:D 2. 若有定义 int a[10] = {1, 2, 3, 4, 5};,则数组 a 中元素 a[5] 的值是( ) A. 5 B. 随机值 C. 0 D. 以上都不对 答案:C 3. 以下对二维数组 a 进行正确初始化的语句是( ) A. int a[2][3] = {{1, 2}, {3, 4}, {5, 6}}; B. int a[][3] = {{1, 2, 3}, {4, 5, 6}}; C. int a[2][] = {{1, 2, 3}, {4, 5, 6}}; D. int a[2][3] = {1, 2, 3; 4, 5, 6}; 答案:B 4.以下程序段的输出结果是( ) int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; printf("%d ", a[1][0]); A. 1 B. 2 C. 4 D. 5 答案:C 5. 若有定义 char str[10];,使用 scanf 函数输入字符串时,以下正确的输入语句是( ) A. scanf("%s", &str); B. scanf("%s", str[0]); C. scanf("%c", str); D. scanf("%s", str); 答案:D 6. 若有定义 char str1[10] = "abc", str2[10] = "def";,要将 str2 连接到 str1 后面,以下正确的操作是( ) A. str1 = str1 + str2; B. strcpy(str1, str2); C. strcat(str1, str2); D. strcat(str2, str1); 答案:C 7. 以下代码的输出结果是( ) char str1[10] = "abc"; char str2[10] = "def"; strcat(str1, str2); printf("%s", str1); A. abcdef B. def C. abc D. 编译错误 答案:A 8. 以下代码执行后,str1 的内容是( ) char str1[10] = "abc"; char str2[10] = "def"; strcpy(str1, str2); A. abc B. def C. abcdef D. 编译错误 答案:B 9. 有一维数组 int arr[5] = {1, 2, 3, 4, 5};,以下代码的输出结果是( ) int sum = 0; for (int i = 0; i < 5; i++) { sum += arr[i]; } printf("%d", sum); A. 10 B. 15 C. 5 D. 20 答案:B 10. 若要比较两个字符串 str1 和 str2 的大小,以下正确的做法是( ) A. if (str1 == str2) B. if (str1 > str2) C. if (strcmp(str1, str2) == 0) D. if (strcpy(str1, str2) == 0) 答案:C 二、判断题(本大题共10小题,每小题2分,共20分) 1. 可以通过数组名直接对整个数组进行赋值操作。( ) 答案:错误 3. 若有定义 int a[5];,则数组 a 的最后一个元素是 a[4]。( ) 答案:正确 3. 定义二维数组时,第一维的大小可以省略,但第二维的大小不能省略。( ) 答案:正确 4. 初始化二维数组时,必须对所有元素进行初始化。( ) 答案:错误 5.字符数组在定义时必须进行初始化。( ) 答案:错误 6. 当使用 scanf 函数输入字符串时,遇到空格会自动停止输入。( ) 答案:正确 7. strcat 函数可以将任意长度的字符串连接到目标字符串后面,不会产生越界问题。( ) 答案:错误 8. 若 strcmp(str1, str2) 返回值为正,则表示 str1 的字典序小于 str2。( ) 答案:错误 9. 可以使用 strlen 函数来计算字符数组的大小。( ) 答案:错误 10. strcat 和 strcpy 函数都要求目标数组有足够的空间来存储结果。( ) 答案:正确 三、填空题(本大题共5小题,每题2分,共10分) 1. 若有定义 int a[5] = {1, 2, 3, 4, 5};,要输出数组 a 的第 3 个元素,应该使用语句 printf("%d ", ______);。 答案:a[2] 2. 若有定义 int a[2][3] = {{1, 2}, {4}};,则数组元素 a[0][2] 的值是 ______。 答案:0 3. 若要使用 gets 函数输入一个字符串到字符数组 str 中,正确的语句是 ______。 答案:gets(str); 4.若有 char str[] = "programming";,则 strlen(str) 的值是 ______。 答案:11 5. 有一维数组 int arr[5] = {1, 3, 5, 7, 9};,通过循环计算数组元素之和的代码如下,请补充完整: int sum = 0; for (int i = 0; i < ______; i++) { sum += arr[i]; } 答案:5 四、读程序写结果题(本大题共5小题,每题5分,共25分) 1.以下程序的运行结果是______。 #include <stdio.h> int main() { int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int sum = 0; for (int i = 0; i < 3; i++) { sum += arr[i][i]; } printf("%d ", sum); return 0; } 2.以下程序的运行结果是______。 #include <stdio.h> int main() { char str[] = "Hello"; int len = 0; while (str[len] != '\0') { len++; } printf("%d ", len); return 0; } 3.以下程序的运行结果是______。 #include <stdio.h> int main() { char str1[] = "abc"; char str2[] = "def"; char str3[10]; int i = 0, j = 0; while (str1[i] != '\0') { str3[i] = str1[i]; i++; } while (str2[j] != '\0') { str3[i] = str2[j]; i++; j++; } str3[i] = '\0'; printf("%s ", str3); return 0; } 4.以下程序的运行结果是______。 #include <stdio.h> int main() { int arr[3][2] = {{1, 2}, {3, 4}, {5, 6}}; for (int j = 0; j < 2; j++) { for (int i = 0; i < 3; i++) { printf("%d ", arr[i][j]); } } return 0; } 5.以下程序的运行结果是______。 #include <stdio.h> int main() { int arr[5] = {5, 4, 3, 2, 1}; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } for (int i = 0; i < 5; i++) { printf("%d ", arr[i]); } return 0; } 五、编程题(本大题共5小题,每题5分,共25分) 1. 用户输入一维整数数组的元素个数和各个元素,将该数组元素逆置后输出。 2.用户输入一个主字符串和一个子字符串,查找子字符串在主字符串中第一次出现的位置,若未找到则输出 -1。 3.用户输入一个字符串,将字符串中的大写字母转换为小写字母,小写字母转换为大写字母后输出。 4.用户输入二维数组的阶数(假设为方阵)和各个元素,计算主对角线和副对角线元素之和(如果是奇数阶矩阵,中间元素只加一次)并输出。 5.用户输入一维整数数组的元素个数和各个元素,使用插入排序算法对数组进行排序后输出。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$

资源预览图

《C语言程序设计》(五)数组-知识点训练卷 吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》第17卷
1
《C语言程序设计》(五)数组-知识点训练卷 吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》第17卷
2
《C语言程序设计》(五)数组-知识点训练卷 吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》第17卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。