内容正文:
编写说明:2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第16卷,是知识点训练卷。按“C语言程序设计”考试纲要(五)数组的六点知识点要求编写,其六点要求是:
1.掌握数组和数组元素概念。2.掌握一维数值型数组的定义、引用、初始化。3.掌握二维数值型数组的定义、引用、初始化。4.了解字符数组的定义、引用、输入与输出。5.了解常用字符串处理函数:strlen()、strcat()、strcpy()、strcmp()。6.掌握简单一维数值型数组循环程序设计。
2026版吉林省《信息工程类(电子与信息类)考纲百套卷》第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};
2. 以下程序段的输出结果是( )
int a[5] = {1, 3, 5, 7, 9};
int *p = a;
printf("%d
", *(p + 2));
A. 1
B. 3
C. 5
D. 7
3. 执行以下程序段的输出结果是( )
main( )
{ int i, k,a[10],p[3];
k=5;
for(i=0;i<10;i++) a[i]=i;
for(i=0;i<3; i++) p[i]=a[i*(i+1)];
for(i=0;i<3; i++) k+=p[i]*2;
printf("%d
",k);
getch();}
A. 20
B. 21
C. 22
D. 23
4. 执行以下程序段的输出结果是( )
main( )
{ int p[7]={11,13,14,15,16,17,18}; int i=0,k=0;
while(i<7&&p[i]%2)
{k=k+p[i];
i++;}
printf("%d
",k);
getch();}
A. 58
B. 56
C. 24
D. 42
5.执行以下程序的输出结果是( )
main( )
{ int n[3],i,j,k;
for(i=0;i<3;i++)
n[i]=0;
k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++)
n[j]=n[i]+1;
printf("%d
",n[1]);
getch();}
A.0
B.1
C.2
D.3
6. 以下程序段的输出结果是( )
char str[] = "abc\0def";
printf("%s", str);
A. abc\0def
B. abc
C. def
D. 编译错误
7.若有 char str[] = "abcde";,则 strlen(str) 的返回值是( )
A. 5
B. 6
C. 7
D. 不确定
8.执行以下程序的输出结果是( )
main( )
{ int p[7]={11,13,14,15,16,17,18};
int i=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
printf("%d
",j);
getch();}
A. 25
B. 24
C. 26
D. 27
9. 有如下代码:
char str[20];
strcpy(str, "hello");
strcat(str, " world");
int len = strlen(str);
len 的值是( )
A. 5
B. 10
C. 11
D. 20
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;
}
二、判断题(本大题共10小题,每小题2分,共20分)
1. 在C语言中,语句:int a[5]=(0,1,2,3,4,);可以对一维数组a进行初始化。( )
2. 在C语言中,下列语句不能对一位数组a进行初始化。( )
#define N 10
int a[N];
3. 若有以下数组说明,则i=10;a[a[i]]元素数值是6。( )
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
4. 若有定义 int a[2][3];,则数组 a 的最后一个元素是 a[2][3]。( )
5. 可以使用 printf 函数输出字符数组中的单个字符。( )
6. 有如下所示的程序,由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3。( )
main()
{charp[]={'a','b','c'}; char q[10]={'a','b','c'};
printf("%d%d
",strlen(p),strlen(q));}
7.执行以下程序的输出结果为:3,4。( )
main()
{char p[]={'a','b','c'},q[]="abc";
printf("%d,%d
",sizeof(p),sizeof(q));}
8. strcpy 函数复制字符串时会自动复制字符串结束标志 '\0'。( )
9. 在使用一维数组进行循环时,循环变量的起始值和终止值可以根据需要任意设定,不会影响程序的正确性。( )
10.执行以下语句的输出结果是:3。( )
char sp[]="\t\v\\\0will
";
printf("%d",strlen(sp));
三、填空题(本大题共5小题,每题2分,共10分)
1.下列程序的功能是读入20个整数,统计非负数个数,并计算非负数之和,横线处应该填入的代码是 ______。
main( )
{ int i, a[20],s,count;
s=count=0;
for(i=0; i<20; i++)
scanf("%d", &a[i] );
for(i=0; i<20; i++)
{if( a[i]<0 )
continue ;
;
count++;}
printf("s=%d\t count=%d
", s, count);getch();}
2. 若有定义 int a[3][4];,要输出数组 a 第二行第三列的元素,应该使用语句 printf("%d
", ______);。
3. 若有定义 char str[10] = "abc";,则 strlen(str) 的值是 ______。
4. 有如下代码:
char str1[20] = "hello";
char str2[] = "world";
strcat(str1, str2);
执行后 str1 中的字符串是 ______。
5. 下列程序的功能是按以下形式输出数组右上半三角,横线处应该填入的代码是 ______。
main( )
{ int num[4][4]={{1,2,3,4},{5,6,7,8}, {9,10,11,12},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{ for(j=1;j<=i;j++) printf("%4c",' ');
for(j= ;j<4;j++) printf("%4d",num[i][j]);
printf("
");}
getch();}
四、读程序写结果题(本大题共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>
#include <conio.h>
main( )
{ int i,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)
a[i]=i;
for(i=0;i<3;i++)
p[i]=a[i*(i+1)];
for(i=0;i<3;i++)
k+=p[i]*2;
printf("%d
",k);
getch();}
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>
#include <conio.h>
main( )
{ int n[3][3],i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
n[i][j]=i+j;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
n[i+1][j+1]+=n[i][j];
printf("%d
",n[i][j]);
getch();}
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.编写程序,输出以下的杨辉三角形(要求输出10行)。
4.用户输入一维整数数组的元素个数和各个元素,找出数组中第二大的元素,若不存在则输出 -1。
5.编写程序,找出二维数组中的鞍点,即该位置上的元素在改行上最大、在该列上最小,一个二维数组也可能没有鞍点,但最多有一个鞍点。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第16卷,是知识点训练卷。按“C语言程序设计”考试纲要(五)数组的六点知识点要求编写,其六点要求是:
1.掌握数组和数组元素概念。2.掌握一维数值型数组的定义、引用、初始化。3.掌握二维数值型数组的定义、引用、初始化。4.了解字符数组的定义、引用、输入与输出。5.了解常用字符串处理函数:strlen()、strcat()、strcpy()、strcmp()。6.掌握简单一维数值型数组循环程序设计。
2026版吉林省《信息工程类(电子与信息类)考纲百套卷》第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. 执行以下程序段的输出结果是( )
main( )
{ int i, k,a[10],p[3];
k=5;
for(i=0;i<10;i++) a[i]=i;
for(i=0;i<3; i++) p[i]=a[i*(i+1)];
for(i=0;i<3; i++) k+=p[i]*2;
printf("%d
",k);
getch();}
A. 20
B. 21
C. 22
D. 23
答案:B
4. 执行以下程序段的输出结果是( )
main( )
{ int p[7]={11,13,14,15,16,17,18}; int i=0,k=0;
while(i<7&&p[i]%2)
{k=k+p[i];
i++;}
printf("%d
",k);
getch();}
A. 58
B. 56
C. 24
D. 42
答案:C
5.执行以下程序的输出结果是( )
main( )
{ int n[3],i,j,k;
for(i=0;i<3;i++)
n[i]=0;
k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++)
n[j]=n[i]+1;
printf("%d
",n[1]);
getch();}
A.0
B.1
C.2
D.3
答案:D
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.执行以下程序的输出结果是( )
main( )
{ int p[7]={11,13,14,15,16,17,18};
int i=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
printf("%d
",j);
getch();}
A. 25
B. 24
C. 26
D. 27
答案:B
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. 在C语言中,语句:int a[5]=(0,1,2,3,4,);可以对一维数组a进行初始化。( )
答案:错误
2. 在C语言中,下列语句不能对一位数组a进行初始化。( )
#define N 10
int a[N];
答案:错误
3. 若有以下数组说明,则i=10;a[a[i]]元素数值是6。( )
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
答案:正确
4. 若有定义 int a[2][3];,则数组 a 的最后一个元素是 a[2][3]。( )
答案:错误
5. 可以使用 printf 函数输出字符数组中的单个字符。( )
答案:正确
6. 有如下所示的程序,由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3。( )
main()
{charp[]={'a','b','c'}; char q[10]={'a','b','c'};
printf("%d%d
",strlen(p),strlen(q));}
答案:正确
7.执行以下程序的输出结果为:3,4。( )
main()
{char p[]={'a','b','c'},q[]="abc";
printf("%d,%d
",sizeof(p),sizeof(q));}
答案:正确
8. strcpy 函数复制字符串时会自动复制字符串结束标志 '\0'。( )
答案:正确
9. 在使用一维数组进行循环时,循环变量的起始值和终止值可以根据需要任意设定,不会影响程序的正确性。( )
答案:错误
10.执行以下语句的输出结果是:3。( )
char sp[]="\t\v\\\0will
";
printf("%d",strlen(sp));
答案:正确
三、填空题(本大题共5小题,每题2分,共10分)
1.下列程序的功能是读入20个整数,统计非负数个数,并计算非负数之和,横线处应该填入的代码是 ______。
main( )
{ int i, a[20],s,count;
s=count=0;
for(i=0; i<20; i++)
scanf("%d", &a[i] );
for(i=0; i<20; i++)
{if( a[i]<0 )
continue ;
;
count++;}
printf("s=%d\t count=%d
", s, count);getch();}
答案:s+=a[i]
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. 下列程序的功能是按以下形式输出数组右上半三角,横线处应该填入的代码是 ______。
main( )
{ int num[4][4]={{1,2,3,4},{5,6,7,8}, {9,10,11,12},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{ for(j=1;j<=i;j++) printf("%4c",' ');
for(j= ;j<4;j++) printf("%4d",num[i][j]);
printf("
");}
getch();}
答案:i
四、读程序写结果题(本大题共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>
#include <conio.h>
main( )
{ int i,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)
a[i]=i;
for(i=0;i<3;i++)
p[i]=a[i*(i+1)];
for(i=0;i<3;i++)
k+=p[i]*2;
printf("%d
",k);
getch();}
答案:21
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>
#include <conio.h>
main( )
{ int n[3][3],i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
n[i][j]=i+j;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
n[i+1][j+1]+=n[i][j];
printf("%d
",n[i][j]);
getch();}
答案:6
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.编写程序,输出以下的杨辉三角形(要求输出10行)。
答案代码:
#include <stdio.h>
#include <conio.h>
#define N 10
main( )
{
int i,j,a[N][N];
for(i=0;i<N;i++)
{a[i][i]=1;
a[i][0]=1;
}
for(i=2;i<N;i++)
for(j=1;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<N;i++)
{for(j=0;j<=i;j++)
printf("%6d",a[i][j]);
printf("
");
}
printf("
");
getch();}
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>
#include <conio.h>
#define N 3
#define M 4
main( )
{
int i,j,k,a[N][M],max,maxj,flag;
printf("please input matrix:
");
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);
for(i=0;i<N;i++)
{max=a[i][0];
maxj=0;
for(j=0;j<M;j++)
if(a[i][j]>max)
{max=a[i][j];
maxj=j;}
flag=1;
for(k=0;k<N;k++)
if(max>a[k][maxj])
{flag=0;
continue;
}
if(flag)
{printf("鞍点为a[%d][%d]=%d
",i,maxj,max);
break;}}
if(!flag)
printf("鞍点不存在!
");
getch();}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$