内容正文:
编写说明:吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第16卷,是知识点训练卷。按“C语言程序设计”考试纲要(五)数组的六点知识点要求编写,其六点要求是:
1.掌握数组和数组元素概念。2.掌握一维数值型数组的定义、引用、初始化。3.掌握二维数值型数组的定义、引用、初始化。4.了解字符数组的定义、引用、输入与输出。5.了解常用字符串处理函数:strlen()、strcat()、strcpy()、strcmp()。6.掌握简单一维数值型数组循环程序设计。
吉林省《信息工程类(电子与信息类)考纲百套卷》 第16卷
《C语言程序设计》
(五)数组-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共10小题,每小题2分,共20分)
1. 以下对一维数组 a 进行正确初始化的语句是( )
A. int a[5] = {1, 2, 3, 4, 5, 6};
B. int a[] = {1, 2, 3, 4, 5};
C. int a[5] = {0 * 1, 0 * 2, 0 * 3, 0 * 4, 0 * 5};
D. int a[5] = {1, 2, 3, 4};
答案:B
2. 以下程序段的输出结果是( )
int a[5] = {1, 3, 5, 7, 9};
int *p = a;
printf("%d
", *(p + 2));
A. 1
B. 3
C. 5
D. 7
答案:C
3. 若有定义 int a[3][4];,则对数组 a 元素的正确引用是( )
A. a[3][4]
B. a[0, 0]
C. a[1][2]
D. a(2)(3)
答案:C
4. 若有定义 int a[2][3] = {1};,则数组元素 a[1][2] 的值是( )
A. 1
B. 随机值
C. 0
D. 以上都不对
答案:C
5.以下对字符数组 str 进行正确初始化的语句是( )
A. char str[5] = {'H', 'e', 'l', 'l', 'o'};
B. char str[] = "Hello";
C. char str[5] = "Hello";
D. char str[] = {'H', 'e', 'l', 'l', 'o', '\0'};
答案:B
6. 以下程序段的输出结果是( )
char str[] = "abc\0def";
printf("%s", str);
A. abc\0def
B. abc
C. def
D. 编译错误
答案:B
7.若有 char str[] = "abcde";,则 strlen(str) 的返回值是( )
A. 5
B. 6
C. 7
D. 不确定
答案:A
8. 若有 char str1[10] = "abc"; char str2[10] = "abc";,则 strcmp(str1, str2) 的返回值是( )
A. 0
B. 1
C. -1
D. 无法确定
答案:A
9. 有如下代码:
char str[20];
strcpy(str, "hello");
strcat(str, " world");
int len = strlen(str);
len 的值是( )
A. 5
B. 10
C. 11
D. 20
答案:C
10. 有一维数组 int arr[10];,以下哪个循环可以将数组元素初始化为其下标值( )
A.
for (int i = 0; i < 10; i++) {
arr[i] = i;
}
B.
for (int i = 1; i <= 10; i++) {
arr[i] = i;
}
C.
for (int i = 0; i < 10; i++) {
arr[i + 1] = i;
}
D.
for (int i = 0; i <= 10; i++) {
arr[i] = i;
}
答案:A
二、判断题(本大题共10小题,每小题2分,共20分)
1. 定义一维数组时,数组大小可以是变量。( )
答案:错误
2. 初始化一维数组时,可以只对部分元素进行初始化。( )
答案:正确
3. 可以通过数组名直接对整个二维数组进行赋值操作。( )
答案:错误
4. 若有定义 int a[2][3];,则数组 a 的最后一个元素是 a[2][3]。( )
答案:错误
5. 可以使用 printf 函数输出字符数组中的单个字符。( )
答案:正确
6. 字符数组的大小必须与所存储的字符串长度相等。( )
答案:错误
7.strlen 函数返回的字符串长度包括字符串结束标志 '\0'。( )
答案:错误
8. strcpy 函数复制字符串时会自动复制字符串结束标志 '\0'。( )
答案:正确
9. 在使用一维数组进行循环时,循环变量的起始值和终止值可以根据需要任意设定,不会影响程序的正确性。( )
答案:错误
10. 对于一维数组 int arr[5];,可以使用 arr = {1, 2, 3, 4, 5}; 来进行赋值。( )
答案:错误
三、填空题(本大题共5小题,每题2分,共10分)
1.若有定义 int a[10] = {1, 2, 3};,则数组 a 中元素 a[3] 的值是 ______。
答案:0
2. 若有定义 int a[3][4];,要输出数组 a 第二行第三列的元素,应该使用语句 printf("%d
", ______);。
答案:a[1][2]
3. 若有定义 char str[10] = "abc";,则 strlen(str) 的值是 ______。
答案:3
4. 有如下代码:
char str1[20] = "hello";
char str2[] = "world";
strcat(str1, str2);
执行后 str1 中的字符串是 ______。
答案:helloworld
5. 若要将字符串 str2 复制到 str1 中,应使用的函数是 ______。
答案:strcpy
四、读程序写结果题(本大题共5小题,每题5分,共25分)
1.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int i;
for (i = 0; i < 5; i++) {
if (i % 2 == 0) {
arr[i] *= 2;
}
}
for (i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
return 0;
}
答案:2 2 6 4 10
2.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a[4] = {1, 2, 3, 4};
int b[4];
for (int i = 0; i < 4; i++) {
b[i] = a[3 - i];
}
for (int i = 0; i < 4; i++) {
printf("%d ", b[i]);
}
return 0;
}
答案:4 3 2 1
3.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
int max = arr[0][0];
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
}
}
}
printf("%d
", max);
return 0;
}
答案:6
4.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int arr[5] = {10, 20, 30, 40, 50};
int *p = arr;
for (int i = 0; i < 5; i++) {
printf("%d ", *(p + i));
}
return 0;
}
答案:10 20 30 40 50
5.以下程序的运行结果是______。
#include <stdio.h>
int main() {
char str[] = "racecar";
int i = 0, j = 6;
int isPalindrome = 1;
while (i < j) {
if (str[i] != str[j]) {
isPalindrome = 0;
break;
}
i++;
j--;
}
if (isPalindrome) {
printf("Yes
");
} else {
printf("No
");
}
return 0;
}
答案:Yes
五、编程题(本大题共5小题,每题5分,共25分)
1.用户输入二维数组的行数和列数(假设为方阵,即行数等于列数)以及各个元素,将该二维数组的行和列互换后输出。
答案代码:
#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 temp;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = temp;
}
}
printf("行列互换后的二维数组为:
");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", arr[i][j]);
}
printf("
");
}
return 0;
}
2.用户输入一维整数数组的元素个数、各个元素以及要删除的元素,输出删除指定元素后的数组。
答案代码:
#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 target;
printf("请输入要删除的元素: ");
scanf("%d", &target);
int newLen = 0;
for (int i = 0; i < n; i++) {
if (arr[i] != target) {
arr[newLen] = arr[i];
newLen++;
}
}
printf("删除指定元素后的数组为: ");
for (int i = 0; i < newLen; i++) {
printf("%d ", arr[i]);
}
printf("
");
return 0;
}
3.用户输入二维数组的行数和列数以及各个元素,找出每行的最大值并输出。
答案代码:
#include <stdio.h>
int main() {
int rows, cols;
printf("请输入二维数组的行数和列数: ");
scanf("%d %d", &rows, &cols);
int arr[rows][cols];
printf("请输入 %d 行 %d 列的整数:
", rows, cols);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
scanf("%d", &arr[i][j]);
}
}
for (int i = 0; i < rows; i++) {
int max = arr[i][0];
for (int j = 1; j < cols; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
}
}
printf("第 %d 行的最大值是: %d
", i + 1, max);
}
return 0;
}
4.用户输入一维整数数组的元素个数和各个元素,找出数组中第二大的元素,若不存在则输出 -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]);
}
if (n < 2) {
printf("-1
");
return 0;
}
int firstMax = arr[0] > arr[1] ? arr[0] : arr[1];
int secondMax = arr[0] < arr[1] ? arr[0] : arr[1];
for (int i = 2; i < n; i++) {
if (arr[i] > firstMax) {
secondMax = firstMax;
firstMax = arr[i];
} else if (arr[i] > secondMax && arr[i] != firstMax) {
secondMax = arr[i];
}
}
printf("数组中第二大的元素是: %d
", secondMax);
return 0;
}
5.用户输入一个字符串,去除字符串中多余的空格(连续的多个空格只保留一个)后输出。
答案代码:
#include <stdio.h>
int main() {
char str[100];
printf("请输入一个字符串: ");
scanf(" %[^
]s", str);
int i, j = 0;
for (i = 0; str[i] != '\0'; i++) {
if (str[i] != ' ' || (i > 0 && str[i - 1] != ' ')) {
str[j] = str[i];
j++;
}
}
str[j] = '\0';
printf("去除多余空格后的字符串为: %s
", str);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$
编写说明:吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第16卷,是知识点训练卷。按“C语言程序设计”考试纲要(五)数组的六点知识点要求编写,其六点要求是:
1.掌握数组和数组元素概念。2.掌握一维数值型数组的定义、引用、初始化。3.掌握二维数值型数组的定义、引用、初始化。4.了解字符数组的定义、引用、输入与输出。5.了解常用字符串处理函数:strlen()、strcat()、strcpy()、strcmp()。6.掌握简单一维数值型数组循环程序设计。
吉林省《信息工程类(电子与信息类)考纲百套卷》 第16卷
《C语言程序设计》
(五)数组-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共10小题,每小题2分,共20分)
1. 以下对一维数组 a 进行正确初始化的语句是( )
A. int a[5] = {1, 2, 3, 4, 5, 6};
B. int a[] = {1, 2, 3, 4, 5};
C. int a[5] = {0 * 1, 0 * 2, 0 * 3, 0 * 4, 0 * 5};
D. int a[5] = {1, 2, 3, 4};
答案:B
2. 以下程序段的输出结果是( )
int a[5] = {1, 3, 5, 7, 9};
int *p = a;
printf("%d
", *(p + 2));
A. 1
B. 3
C. 5
D. 7
答案:C
3. 若有定义 int a[3][4];,则对数组 a 元素的正确引用是( )
A. a[3][4]
B. a[0, 0]
C. a[1][2]
D. a(2)(3)
答案:C
4. 若有定义 int a[2][3] = {1};,则数组元素 a[1][2] 的值是( )
A. 1
B. 随机值
C. 0
D. 以上都不对
答案:C
5.以下对字符数组 str 进行正确初始化的语句是( )
A. char str[5] = {'H', 'e', 'l', 'l', 'o'};
B. char str[] = "Hello";
C. char str[5] = "Hello";
D. char str[] = {'H', 'e', 'l', 'l', 'o', '\0'};
答案:B
6. 以下程序段的输出结果是( )
char str[] = "abc\0def";
printf("%s", str);
A. abc\0def
B. abc
C. def
D. 编译错误
答案:B
7.若有 char str[] = "abcde";,则 strlen(str) 的返回值是( )
A. 5
B. 6
C. 7
D. 不确定
答案:A
8. 若有 char str1[10] = "abc"; char str2[10] = "abc";,则 strcmp(str1, str2) 的返回值是( )
A. 0
B. 1
C. -1
D. 无法确定
答案:A
9. 有如下代码:
char str[20];
strcpy(str, "hello");
strcat(str, " world");
int len = strlen(str);
len 的值是( )
A. 5
B. 10
C. 11
D. 20
答案:C
10. 有一维数组 int arr[10];,以下哪个循环可以将数组元素初始化为其下标值( )
A.
for (int i = 0; i < 10; i++) {
arr[i] = i;
}
B.
for (int i = 1; i <= 10; i++) {
arr[i] = i;
}
C.
for (int i = 0; i < 10; i++) {
arr[i + 1] = i;
}
D.
for (int i = 0; i <= 10; i++) {
arr[i] = i;
}
答案:A
二、判断题(本大题共10小题,每小题2分,共20分)
1. 定义一维数组时,数组大小可以是变量。( )
答案:错误
2. 初始化一维数组时,可以只对部分元素进行初始化。( )
答案:正确
3. 可以通过数组名直接对整个二维数组进行赋值操作。( )
答案:错误
4. 若有定义 int a[2][3];,则数组 a 的最后一个元素是 a[2][3]。( )
答案:错误
5. 可以使用 printf 函数输出字符数组中的单个字符。( )
答案:正确
6. 字符数组的大小必须与所存储的字符串长度相等。( )
答案:错误
7.strlen 函数返回的字符串长度包括字符串结束标志 '\0'。( )
答案:错误
8. strcpy 函数复制字符串时会自动复制字符串结束标志 '\0'。( )
答案:正确
9. 在使用一维数组进行循环时,循环变量的起始值和终止值可以根据需要任意设定,不会影响程序的正确性。( )
答案:错误
10. 对于一维数组 int arr[5];,可以使用 arr = {1, 2, 3, 4, 5}; 来进行赋值。( )
答案:错误
三、填空题(本大题共5小题,每题2分,共10分)
1.若有定义 int a[10] = {1, 2, 3};,则数组 a 中元素 a[3] 的值是 ______。
答案:0
2. 若有定义 int a[3][4];,要输出数组 a 第二行第三列的元素,应该使用语句 printf("%d
", ______);。
答案:a[1][2]
3. 若有定义 char str[10] = "abc";,则 strlen(str) 的值是 ______。
答案:3
4. 有如下代码:
char str1[20] = "hello";
char str2[] = "world";
strcat(str1, str2);
执行后 str1 中的字符串是 ______。
答案:helloworld
5. 若要将字符串 str2 复制到 str1 中,应使用的函数是 ______。
答案:strcpy
四、读程序写结果题(本大题共5小题,每题5分,共25分)
1.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int i;
for (i = 0; i < 5; i++) {
if (i % 2 == 0) {
arr[i] *= 2;
}
}
for (i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
return 0;
}
2.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a[4] = {1, 2, 3, 4};
int b[4];
for (int i = 0; i < 4; i++) {
b[i] = a[3 - i];
}
for (int i = 0; i < 4; i++) {
printf("%d ", b[i]);
}
return 0;
}
3.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
int max = arr[0][0];
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
}
}
}
printf("%d
", max);
return 0;
}
4.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int arr[5] = {10, 20, 30, 40, 50};
int *p = arr;
for (int i = 0; i < 5; i++) {
printf("%d ", *(p + i));
}
return 0;
}
5.以下程序的运行结果是______。
#include <stdio.h>
int main() {
char str[] = "racecar";
int i = 0, j = 6;
int isPalindrome = 1;
while (i < j) {
if (str[i] != str[j]) {
isPalindrome = 0;
break;
}
i++;
j--;
}
if (isPalindrome) {
printf("Yes
");
} else {
printf("No
");
}
return 0;
}
五、编程题(本大题共5小题,每题5分,共25分)
1.用户输入二维数组的行数和列数(假设为方阵,即行数等于列数)以及各个元素,将该二维数组的行和列互换后输出。
2.用户输入一维整数数组的元素个数、各个元素以及要删除的元素,输出删除指定元素后的数组。
3.用户输入二维数组的行数和列数以及各个元素,找出每行的最大值并输出。
4.用户输入一维整数数组的元素个数和各个元素,找出数组中第二大的元素,若不存在则输出 -1。
5.用户输入一个字符串,去除字符串中多余的空格(连续的多个空格只保留一个)后输出。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$