内容正文:
编写说明:2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第17卷,是知识点训练卷。按“C语言程序设计”考试纲要(五)数组的六点知识点要求编写,其六点要求是:
1.掌握数组和数组元素概念。2.掌握一维数值型数组的定义、引用、初始化。3.掌握二维数值型数组的定义、引用、初始化。4.了解字符数组的定义、引用、输入与输出。5.了解常用字符串处理函数:strlen()、strcat()、strcpy()、strcmp()。6.掌握简单一维数值型数组循环程序设计。
2026版吉林省《信息工程类(电子与信息类)考纲百套卷》第17卷
《C语言程序设计》
(五)数组-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共10小题,每小题2分,共20分)
1.执行以下程序的输出结果是( )
main( )
{ int i,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d,",x[i][2-i]);
getch();}
A. 1,5,9,
B. 1,4,7,
C. 3,5,7,
D. 3,6,9,
2.执行以下程序的输出结果是( )
main( )
{ int m[][3]={1,4,7,2,5,8,3,6,9};
int i,j,k=2;
for(i=0;i<3;i++)
{ printf("%d ",m[k][i]); }
getch();}
A. 2 5 8
B. 4 5 6
C. 3 6 9
D. 7 8 9
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};
4.定义如下变量和数组:
int i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是( )
for(i=0;i<3;i++) printf("%d ",x[i][2-i]);
A. 1 5 9
B. 1 4 7
C. 3 5 7
D. 3 6 9
5. 执行以下程序的输出结果是( )
main( )
{ char s[]="abcde";
s+=2;
printf("%d
",s[0]);
getch();}
A. 输出字符a的ASCII码
B. 输出字符c的ASCII码
C. 输出字符c
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);
7. 执行以下程序的输出结果是( )
main( )
{ int i,a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
getch();}
A. 258
B. 852
C. 369
D. 741
8. 执行以下程序的输出结果是( )
int n[5]={0,0,0},i,k=2;
for(i=0;i<k;i++)
n[i]=n[i]+1;
printf("%d
",n[k]);
A. 0
B. 1
C. 2
D. 不确定值
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
10. 若要比较两个字符串 str1 和 str2 的大小,以下正确的做法是( )
A. if (str1 == str2)
B. if (str1 > str2)
C. if (strcmp(str1, str2) == 0)
D. if (strcpy(str1, str2) == 0)
二、判断题(本大题共10小题,每小题2分,共20分)
1. 函数调用:strcat(strcpy(str1,str2),str3)的功能是将串str2复制到串str1中后再将串str3连接到串str1之后。( )
3. 在C语言中,语句:char str="\x43";可以正确定义字符串数组。( )
3. 定义二维数组时,第一维的大小可以省略,但第二维的大小不能省略。( )
4. 执行以下语句的输出结果是:6,6。( )
char s[]="
123\\";
printf("%d,%d
",strlen(s),sizeof(s));
5.执行下面的程序段后,变量k中的值为:30。( )
int k=3,s[2];
s[0]=k; k=s[1]*10;
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
", ______);。
2. 若有定义 int a[2][3] = {{1, 2}, {4}};,则数组元素 a[0][2] 的值是 ______。
3. 下列程序的功能是产生一个10×10的方阵,要求该方阵副对角线上的元素均为2,其余元素均为0,最后输出该方阵,横线处应该填入的代码是 ______。
main( )
{ int i,j;int a[10][10]={0};
for(i=0;i<10;i++)
=2;
for(i=0;i<10;i++)
{for(j=0;j<10;j++)
printf("%d ",a[i][j]);
printf("
");}
getch();}
4.下列程序的功能是从键盘输入一个字符串,将其按照逆序输出。横线处应该填入的程序代码是 ______。
#include <stdio.h>
#include<string.h>
main( )
{ char a[20];int i;
gets(a);
for(i= ;i>=0;i--)
printf("%c",a[i]);getch();}
5. 有一维数组 int arr[5] = {1, 3, 5, 7, 9};,通过循环计算数组元素之和的代码如下,请补充完整:
int sum = 0;
for (int i = 0; i < ______; i++) {
sum += arr[i];
}
四、读程序写结果题(本大题共5小题,每题5分,共25分)
1.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
main( )
{
int i, f[10];
f[0]=f[1]=1;
for(i=2;i<10;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<10;i++)
{ if(i%4==0)
printf("
");
printf("%3d",f[i]);
}
getch();}
2.以下程序的运行结果是______。
#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;
printf("%d ", n[i][j]);}
printf("
");}
getch();}
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>
#include <conio.h>
main( )
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
for(i=0;i<=1;i++)
{for(j=0;j<=2;j++)
b[j][i]=a[i][j];
}
for(i=0;i<=2;i++)
{for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
}
getch();}
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.编写程序,在一个已经排好序的数组中,按照要求输入一个数之后,按原来排序的规律将它插入到数组中去。
3.编写程序,使用筛选法求100之内的素数。
4.用户输入二维数组的阶数(假设为方阵)和各个元素,计算主对角线和副对角线元素之和(如果是奇数阶矩阵,中间元素只加一次)并输出。
5.用户输入一维整数数组的元素个数和各个元素,使用插入排序算法对数组进行排序后输出。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第17卷,是知识点训练卷。按“C语言程序设计”考试纲要(五)数组的六点知识点要求编写,其六点要求是:
1.掌握数组和数组元素概念。2.掌握一维数值型数组的定义、引用、初始化。3.掌握二维数值型数组的定义、引用、初始化。4.了解字符数组的定义、引用、输入与输出。5.了解常用字符串处理函数:strlen()、strcat()、strcpy()、strcmp()。6.掌握简单一维数值型数组循环程序设计。
2026版吉林省《信息工程类(电子与信息类)考纲百套卷》第17卷
《C语言程序设计》
(五)数组-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共10小题,每小题2分,共20分)
1.执行以下程序的输出结果是( )
main( )
{ int i,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d,",x[i][2-i]);
getch();}
A. 1,5,9,
B. 1,4,7,
C. 3,5,7,
D. 3,6,9,
答案:C
2.执行以下程序的输出结果是( )
main( )
{ int m[][3]={1,4,7,2,5,8,3,6,9};
int i,j,k=2;
for(i=0;i<3;i++)
{ printf("%d ",m[k][i]); }
getch();}
A. 2 5 8
B. 4 5 6
C. 3 6 9
D. 7 8 9
答案: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 i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是( )
for(i=0;i<3;i++) printf("%d ",x[i][2-i]);
A. 1 5 9
B. 1 4 7
C. 3 5 7
D. 3 6 9
答案:C
5. 执行以下程序的输出结果是( )
main( )
{ char s[]="abcde";
s+=2;
printf("%d
",s[0]);
getch();}
A. 输出字符a的ASCII码
B. 输出字符c的ASCII码
C. 输出字符c
D. 程序出错
答案: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. 执行以下程序的输出结果是( )
main( )
{ int i,a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
getch();}
A. 258
B. 852
C. 369
D. 741
答案:B
8. 执行以下程序的输出结果是( )
int n[5]={0,0,0},i,k=2;
for(i=0;i<k;i++)
n[i]=n[i]+1;
printf("%d
",n[k]);
A. 0
B. 1
C. 2
D. 不确定值
答案:A
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. 函数调用:strcat(strcpy(str1,str2),str3)的功能是将串str2复制到串str1中后再将串str3连接到串str1之后。( )
答案:正确
3. 在C语言中,语句:char str="\x43";可以正确定义字符串数组。( )
答案:错误
3. 定义二维数组时,第一维的大小可以省略,但第二维的大小不能省略。( )
答案:正确
4. 执行以下语句的输出结果是:6,6。( )
char s[]="
123\\";
printf("%d,%d
",strlen(s),sizeof(s));
答案:错误
5.执行下面的程序段后,变量k中的值为:30。( )
int k=3,s[2];
s[0]=k; k=s[1]*10;
答案:错误
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. 下列程序的功能是产生一个10×10的方阵,要求该方阵副对角线上的元素均为2,其余元素均为0,最后输出该方阵,横线处应该填入的代码是 ______。
main( )
{ int i,j;int a[10][10]={0};
for(i=0;i<10;i++)
=2;
for(i=0;i<10;i++)
{for(j=0;j<10;j++)
printf("%d ",a[i][j]);
printf("
");}
getch();}
答案:a[i][9-i]
4.下列程序的功能是从键盘输入一个字符串,将其按照逆序输出。横线处应该填入的程序代码是 ______。
#include <stdio.h>
#include<string.h>
main( )
{ char a[20];int i;
gets(a);
for(i= ;i>=0;i--)
printf("%c",a[i]);getch();}
答案:strlen(a)-1
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>
#include <conio.h>
main( )
{
int i, f[10];
f[0]=f[1]=1;
for(i=2;i<10;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<10;i++)
{ if(i%4==0)
printf("
");
printf("%3d",f[i]);
}
getch();}
答案:
1 1 2 3
5 8 13 21
34 55
2.以下程序的运行结果是______。
#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;
printf("%d ", n[i][j]);}
printf("
");}
getch();}
答案:
0 1 2
1 2 3
2 3 4
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>
#include <conio.h>
main( )
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
for(i=0;i<=1;i++)
{for(j=0;j<=2;j++)
b[j][i]=a[i][j];
}
for(i=0;i<=2;i++)
{for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
}
getch();}
答案: 1 4 2 5 3 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.编写程序,在一个已经排好序的数组中,按照要求输入一个数之后,按原来排序的规律将它插入到数组中去。
答案代码:
#include <stdio.h>
#include <conio.h>
main( )
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int templ ,temp2 ,number,end,i,j;
printf("array a:
");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("
");
printf("insert data:");
scanf("%d",&number);
end=a[9];
if (number>end)
a[10]=number;
else
{for(i=0;i<10;i++)
{if (a[i]>number)
{templ=a[i];
a[i]=number;
for (j=i+1;j<11;j++)
{temp2=a[j];
a[j]=templ;
templ=temp2;
}
break;
}
}
}
printf("Now array a:
");
for(i=0;i<11;i++)
printf("%5d",a[i]);
printf("
");
getch();}
3.编写程序,使用筛选法求100之内的素数。
答案代码:
#include <stdio.h>
#include <conio.h>
#include<math.h>
main( )
{
int i,j,n,a[101]; //定义a数组包含101个元素
for(i=1;i<=100;i++) //a[0]不用,只用a[1]~a[100]
a[i]=i; //使[1]~a[100]的值为1~100
a[1]=0; //先“挖掉"[1]
for(i=2;i<sqrt(100);i++)
for (j=i+1;j<=100;j++)
{if(a[i]!=0 &&a[j]!=0)
if (a[j]%a[i]==0)
a[j]=0; //把非素数“挖掉”
}
printf("
");
for(i=2,n=0;i<=100;i++)
{if(a[i]!=0) //选出值不为0的数组元素,即素数
{printf("%5d",a[i]); //输出素数,宽度为5列
n++; //累积本行已输出的数据个数
}
if(n==10)
{printf("
");
n=0;
}
}
printf("
");
getch();}
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;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$