内容正文:
编写说明:吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(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.用户输入一维整数数组的元素个数和各个元素,使用插入排序算法对数组进行排序后输出。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$