内容正文:
编写说明:2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第125卷,是常考题训练卷。按“C语言程序设计”考试纲要的七点要求编写,其七点要求是:
(一)C语言的概述(二)基本数据类型与简单程序设计(三)分支程序设计(四)循环程序设计(五)数组(六)函数(七)指针。
2026版吉林省《信息工程类(电子与信息类)考纲百套卷》
第125卷
《C语言程序设计》
常考题训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共10小题,每小题2分,共20分)
1.执行以下程序的输出结果是( )
main()
{
int a=8,b;
b=(a>>2)%2;
printf("%d,%d
",a,b);
getch();}
A. 8,0
B. 4,0
C. 4,1
D. 8,1
2.执行以下程序的输出结果是( )
main()
{
int i,array[5]={3,5,10,4};
for(i=0;i<5;i++)
printf("%d,",array[i]&3);
printf("
");
getch();}
A. 3,5,10,4,0,
B. 3,1,2,0,0,
C. 3,3,3,3,0,
D. 3,2,2,2,0,
3.执行以下程序的输出结果是( )
#include <stdio.h>
#include<string.h>
main()
{char str[12]={'s','t','r','i','n','g'};
printf("%d,%d
",strlen(str),sizeof(str));
getch();}
A. 12,12
B. 6,12
C. 7,12
D. 12,6
4. 以下关于 if - else 语句的说法,正确的是( )
A. if 语句后面的条件表达式只能是关系表达式
B. if 语句可以没有 else 分支
C. if 语句中的条件表达式必须用括号括起来,且括号后面要加分号
D. if - else 语句不能嵌套使用
5. 以下关于 for 循环的说法,错误的是( )
A. for 循环的初始化部分、条件判断部分和迭代部分都可以省略
B. for 循环的初始化部分只执行一次
C. for 循环的条件判断部分在每次循环结束后执行
D. for 循环可以嵌套使用
6. 以下代码的输出结果是( )
int a = 1;
while (a < 5) {
if (a % 2 == 0) {
break;
}
printf("%d ", a);
a++;
}
A. 1 3
B. 1
C. 1 2
D. 1 3 4
7. 若有函数定义 void func(int arr[], int size),调用该函数时,以下正确的是( )
A. int arr[5] = {1, 2, 3, 4, 5}; func(arr[0], 5);
B. int arr[5] = {1, 2, 3, 4, 5}; func(&arr, 5);
C. int arr[5] = {1, 2, 3, 4, 5}; func(arr[5], 5);
D. int arr[5] = {1, 2, 3, 4, 5}; func(arr, 5);
8. 执行以下程序的输出结果是( )
void fun(int *a,int *b)
{int *k;
k=a;a=b;b=k;}
main()
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d %d",a,b);
getch();}
A. 6 3
B. 3 6
C. 编译出错
D. 0 0
9. 若要将一个数组元素逆置,以下函数实现正确的是( )
A.
void reverse(int arr[], int size) {
int left = 0, right = size - 1;
while (left < right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
B.
void reverse(int arr[], int size) {
for (int i = 0; i < size; i++) {
int temp = arr[i];
arr[i] = arr[size - i - 1];
arr[size - i - 1] = temp;
}
}
C.
void reverse(int arr[], int size) {
for (int i = 0; i < size / 2; i++) {
int temp = arr[i];
arr[i] = arr[size - i];
arr[size - i] = temp;
}
}
D.
void reverse(int arr[], int size) {
for (int i = 0; i < size; i++) {
arr[i] = arr[size - i - 1];
}
}
10.下列程序段完全正确的是( )
A. int *p;scanf(“%d”,&p);
B. int *p;scanf(“%d”,p);
C. int k,*p=&k;scanf(“%d”,p);
D. int k,*p;*p=&k;scanf(“%d”,&p);
二、判断题(本大题共10小题,每小题2分,共20分)
1.for 循环的初始化部分只能初始化一个变量。( )
2.C语言中,unsigned int类型的变量可以存储比int类型更大的正整数。( )
3.C语言中,逻辑非运算符!的优先级高于算术运算符。( )
4. break 语句不仅可以用于循环语句,还可以用于 switch 语句。( )
5. do-while 循环 “int i=4; do {i+=2;} while (i<10);” 的循环体执行 3 次,i 最终为 10。( )
6. 二维数组 “int mat [2][3]={{1},{2}};” 中,mat [0][2] 的值为 0,mat [1][1] 的值为 0。( )
7.执行 “int a=6,b=3; int c=--a < b++?a:b;” 后,c 的值为 3,b 的值为 4。( )
8.若函数返回一个指向静态数组的指针,调用者在使用该指针时不需要担心内存释放问题。( )
9.函数声明 “int add (int a, int b);” 与函数定义 “int add (int x, int y){return x+y;}” 因参数名不同而不匹配。( )
10.执行 “int i=2,s=0; while (i<=5){s+=i*i; i++;}” 后,s 的值为 54。( )
三、填空题(本大题共5小题,每题2分,共10分)
1.以下函数的功能是用于求三个整数的最小值,横线处应该填入的程序代码是________。
int minThree(int x, int y, int z) {
int min = x;
if(y < min) min = y;
if( ) min = z;
return min;}
2.以下程序的功能是使用 while 循环计算 1 到 20 中能被 3 整除的数的个数,横线处应该填入的程序代码是________。
#include <stdio.h>
int main() {
int i=1, count=0;
while(i<=20) {
if( ) count++;
i++; }
printf("%d", count);}
3.以下程序的功能是调用函数计算数组所有元素的平均值,横线处应该填入的程序代码是________。
#include <stdio.h>
int avgArray(int arr[], int len) {
int sum=0;
for(int i=0; i<len; i++) {
sum += arr[i]; }
return ( );}
int main() {
int num[4]={78,85,92,69};
printf("%d", avgArray(num,4));}
4.C语言中,用于声明一个指向数组的指针的语法是:________ 指针名。
5.以下函数的功能是用于判断一个数是否为三位数,若是返回 1,否则返回 0,横线处应该填入的程序代码是________。
int isThreeDigit(int num) {
if( ) return 1;
else return 0;}
四、读程序写结果题(本大题共5小题,每题5分,共25分)
1.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
main()
{
int i=0,a=0;
while(i<20)
{
for(;;)
{
if(i%10==0) break;
else i--;
}
i+=11;
a+=i;
}
printf("%d
",a);
getch();}
2.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
#define N 4
void fun(int a[ ][N])
{int i;
for(i=0;i<N;i++)
a[0][i]=a[N-1][N-1-i];
}
main()
{
int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i;
fun(x);
for(i=0;i<N;i++)
printf("%d ",x[i][i]);
printf("
");
getch();}
3.以下程序的运行结果是______。
#include <stdio.h>
void func(int *a, int *b) {
*a = *a + *b;
*b = *a - *b;
*a = *a - *b;
}
int main() {
int x = 10, y = 20;
func(&x, &y);
printf("x = %d, y = %d
", x, y);
return 0;
}
4.以下程序的运行结果是______。
#include <stdio.h>
void func(int *a, int n) {
for (int i = 0; i < n; i++) {
if (*(a + i) > 5) {
break;
}
printf("%d ", *(a + i));
}
}
int main() {
int arr[] = {1, 2, 3, 6, 4};
func(arr, 5);
printf("
");
return 0;
}
5.以下程序的运行结果是______。
#include <stdio.h>
void transpose(int matrix[3][3]) {
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 3; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
int main() {
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
transpose(matrix);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("
");
}
return 0;
}
五、编程题(本大题共5小题,每题5分,共25分)
1. A、B、C、D、E 5个人在某天夜里合伙去捕鱼,到凌晨时都疲惫不堪,于是各自找地方睡觉。第二天,A第一个醒来,他将鱼分成5份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分为5份,把多余的一条扔掉,拿走自己的一份。C、D、E依次醒来,也按照同样的方法拿鱼。编写程序,求出它们合伙至少捕了多少条鱼?
2. 编写两个函数分别计算两个整数的最大公约数和最小公倍数,由主函数调用这两个函数。
3. 编写函数reverseArray逆序数组,并在主函数中调用。
4.编写一个程序,根据用户输入的二维数组的行数 m 和列数 n,以及数组元素,找出二维数组中的鞍点(即该元素在所在行上最大,在所在列上最小)。如果没有鞍点,输出提示信息。
5.编写一个程序,根据用户输入的学生成绩(整数),判断并输出对应的成绩等级。成绩等级划分如下:90 - 100 为 A,80 - 89 为 B,70 - 79 为 C,60 - 69 为 D,0 - 59 为 F。
答案:
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第125卷,是常考题训练卷。按“C语言程序设计”考试纲要的七点要求编写,其七点要求是:
(一)C语言的概述(二)基本数据类型与简单程序设计(三)分支程序设计(四)循环程序设计(五)数组(六)函数(七)指针。
2026版吉林省《信息工程类(电子与信息类)考纲百套卷》
第125卷
《C语言程序设计》
常考题训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共10小题,每小题2分,共20分)
1.执行以下程序的输出结果是( )
main()
{
int a=8,b;
b=(a>>2)%2;
printf("%d,%d
",a,b);
getch();}
A. 8,0
B. 4,0
C. 4,1
D. 8,1
答案:A
2.执行以下程序的输出结果是( )
main()
{
int i,array[5]={3,5,10,4};
for(i=0;i<5;i++)
printf("%d,",array[i]&3);
printf("
");
getch();}
A. 3,5,10,4,0,
B. 3,1,2,0,0,
C. 3,3,3,3,0,
D. 3,2,2,2,0,
答案:B
3.执行以下程序的输出结果是( )
#include <stdio.h>
#include<string.h>
main()
{char str[12]={'s','t','r','i','n','g'};
printf("%d,%d
",strlen(str),sizeof(str));
getch();}
A. 12,12
B. 6,12
C. 7,12
D. 12,6
答案:B
4. 以下关于 if - else 语句的说法,正确的是( )
A. if 语句后面的条件表达式只能是关系表达式
B. if 语句可以没有 else 分支
C. if 语句中的条件表达式必须用括号括起来,且括号后面要加分号
D. if - else 语句不能嵌套使用
答案:B
5. 以下关于 for 循环的说法,错误的是( )
A. for 循环的初始化部分、条件判断部分和迭代部分都可以省略
B. for 循环的初始化部分只执行一次
C. for 循环的条件判断部分在每次循环结束后执行
D. for 循环可以嵌套使用
答案:C
6. 以下代码的输出结果是( )
int a = 1;
while (a < 5) {
if (a % 2 == 0) {
break;
}
printf("%d ", a);
a++;
}
A. 1 3
B. 1
C. 1 2
D. 1 3 4
答案:A
7. 若有函数定义 void func(int arr[], int size),调用该函数时,以下正确的是( )
A. int arr[5] = {1, 2, 3, 4, 5}; func(arr[0], 5);
B. int arr[5] = {1, 2, 3, 4, 5}; func(&arr, 5);
C. int arr[5] = {1, 2, 3, 4, 5}; func(arr[5], 5);
D. int arr[5] = {1, 2, 3, 4, 5}; func(arr, 5);
答案:D
8. 执行以下程序的输出结果是( )
void fun(int *a,int *b)
{int *k;
k=a;a=b;b=k;}
main()
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d %d",a,b);
getch();}
A. 6 3
B. 3 6
C. 编译出错
D. 0 0
答案:B
9. 若要将一个数组元素逆置,以下函数实现正确的是( )
A.
void reverse(int arr[], int size) {
int left = 0, right = size - 1;
while (left < right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
B.
void reverse(int arr[], int size) {
for (int i = 0; i < size; i++) {
int temp = arr[i];
arr[i] = arr[size - i - 1];
arr[size - i - 1] = temp;
}
}
C.
void reverse(int arr[], int size) {
for (int i = 0; i < size / 2; i++) {
int temp = arr[i];
arr[i] = arr[size - i];
arr[size - i] = temp;
}
}
D.
void reverse(int arr[], int size) {
for (int i = 0; i < size; i++) {
arr[i] = arr[size - i - 1];
}
}
答案:A
10.下列程序段完全正确的是( )
A. int *p;scanf(“%d”,&p);
B. int *p;scanf(“%d”,p);
C. int k,*p=&k;scanf(“%d”,p);
D. int k,*p;*p=&k;scanf(“%d”,&p);
答案:C
二、判断题(本大题共10小题,每小题2分,共20分)
1.for 循环的初始化部分只能初始化一个变量。( )
答案:错误
2.C语言中,unsigned int类型的变量可以存储比int类型更大的正整数。( )
答案:正确
3.C语言中,逻辑非运算符!的优先级高于算术运算符。( )
答案:正确
4. break 语句不仅可以用于循环语句,还可以用于 switch 语句。( )
答案:正确
5. do-while 循环 “int i=4; do {i+=2;} while (i<10);” 的循环体执行 3 次,i 最终为 10。( )
答案:正确
6. 二维数组 “int mat [2][3]={{1},{2}};” 中,mat [0][2] 的值为 0,mat [1][1] 的值为 0。( )
答案:正确
7.执行 “int a=6,b=3; int c=--a < b++?a:b;” 后,c 的值为 3,b 的值为 4。( )
答案:正确
8.若函数返回一个指向静态数组的指针,调用者在使用该指针时不需要担心内存释放问题。( )
答案:正确
9.函数声明 “int add (int a, int b);” 与函数定义 “int add (int x, int y){return x+y;}” 因参数名不同而不匹配。( )
答案:错误
10.执行 “int i=2,s=0; while (i<=5){s+=i*i; i++;}” 后,s 的值为 54。( )
答案:正确
三、填空题(本大题共5小题,每题2分,共10分)
1.以下函数的功能是用于求三个整数的最小值,横线处应该填入的程序代码是________。
int minThree(int x, int y, int z) {
int min = x;
if(y < min) min = y;
if( ) min = z;
return min;}
答案:z < min
2.以下程序的功能是使用 while 循环计算 1 到 20 中能被 3 整除的数的个数,横线处应该填入的程序代码是________。
#include <stdio.h>
int main() {
int i=1, count=0;
while(i<=20) {
if( ) count++;
i++; }
printf("%d", count);}
答案:i%3 == 0
3.以下程序的功能是调用函数计算数组所有元素的平均值,横线处应该填入的程序代码是________。
#include <stdio.h>
int avgArray(int arr[], int len) {
int sum=0;
for(int i=0; i<len; i++) {
sum += arr[i]; }
return ( );}
int main() {
int num[4]={78,85,92,69};
printf("%d", avgArray(num,4));}
答案:sum/len
4.C语言中,用于声明一个指向数组的指针的语法是:________ 指针名。
答案:数据类型
5.以下函数的功能是用于判断一个数是否为三位数,若是返回 1,否则返回 0,横线处应该填入的程序代码是________。
int isThreeDigit(int num) {
if( ) return 1;
else return 0;}
答案:num>=100 && num<=999
四、读程序写结果题(本大题共5小题,每题5分,共25分)
1.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
main()
{
int i=0,a=0;
while(i<20)
{
for(;;)
{
if(i%10==0) break;
else i--;
}
i+=11;
a+=i;
}
printf("%d
",a);
getch();}
答案:32
2.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
#define N 4
void fun(int a[ ][N])
{int i;
for(i=0;i<N;i++)
a[0][i]=a[N-1][N-1-i];
}
main()
{
int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i;
fun(x);
for(i=0;i<N;i++)
printf("%d ",x[i][i]);
printf("
");
getch();}
答案:16 6 11 16
3.以下程序的运行结果是______。
#include <stdio.h>
void func(int *a, int *b) {
*a = *a + *b;
*b = *a - *b;
*a = *a - *b;
}
int main() {
int x = 10, y = 20;
func(&x, &y);
printf("x = %d, y = %d
", x, y);
return 0;
}
答案:x = 20, y = 10
4.以下程序的运行结果是______。
#include <stdio.h>
void func(int *a, int n) {
for (int i = 0; i < n; i++) {
if (*(a + i) > 5) {
break;
}
printf("%d ", *(a + i));
}
}
int main() {
int arr[] = {1, 2, 3, 6, 4};
func(arr, 5);
printf("
");
return 0;
}
答案:1 2 3
5.以下程序的运行结果是______。
#include <stdio.h>
void transpose(int matrix[3][3]) {
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 3; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
int main() {
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
transpose(matrix);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("
");
}
return 0;
}
答案:
1 4 7
2 5 8
3 6 9
五、编程题(本大题共5小题,每题5分,共25分)
1. A、B、C、D、E 5个人在某天夜里合伙去捕鱼,到凌晨时都疲惫不堪,于是各自找地方睡觉。第二天,A第一个醒来,他将鱼分成5份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分为5份,把多余的一条扔掉,拿走自己的一份。C、D、E依次醒来,也按照同样的方法拿鱼。编写程序,求出它们合伙至少捕了多少条鱼?
答案:
#include <stdio.h>
#include <conio.h>
int sub(int n)
{if(n==1)
{static int i=0;
do{i++;}while(i%5!=0);
return i+1;}
else
{int t;
do{
t=sub(n-1);
}while(t%4!=0);
return (t/4*5+1);}}
main()
{
int total;
total=sub(5);
printf("the total number of fish is %d
",total);
getch();}
2. 编写两个函数分别计算两个整数的最大公约数和最小公倍数,由主函数调用这两个函数。
答案:
#include <stdio.h>
#include <conio.h>
int hf(int u,int v)
{int t,r;
if(v>u)
{t=u;
u=v;
v=t;}
while((r=u%v)!=0)
{u=v;
v=r;
}
return v;}
int ld(int u,int v,int h)
{return (u*v/h);}
main()
{
int u,v,h,l;
printf("input two integer number:
");
scanf("%d%d",&u,&v);
h=hf(u,v);
l=ld(u,v,h);
printf("最大公约数是:%d
",h);
printf("最小公倍数是:%d
",l);
getch();}
3. 编写函数reverseArray逆序数组,并在主函数中调用。
答案:
#include <stdio.h>
void reverseArray(int arr[], int n) {
for (int i = 0; i < n / 2; i++) {
int temp = arr[i];
arr[i] = arr[n - i - 1];
arr[n - i - 1] = temp;
}
}
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) scanf("%d", &arr[i]);
reverseArray(arr, n);
for (int i = 0; i < n; i++) printf("%d ", arr[i]);
return 0;
}
4.编写一个程序,根据用户输入的二维数组的行数 m 和列数 n,以及数组元素,找出二维数组中的鞍点(即该元素在所在行上最大,在所在列上最小)。如果没有鞍点,输出提示信息。
答案:
#include <stdio.h>
#define MAX_ROWS 100
#define MAX_COLS 100
int findSaddlePoint(int matrix[MAX_ROWS][MAX_COLS], int m, int n) {
for (int i = 0; i < m; i++) {
int maxInRow = matrix[i][0];
int maxColIndex = 0;
// 找出当前行的最大值及其列索引
for (int j = 1; j < n; j++) {
if (matrix[i][j] > maxInRow) {
maxInRow = matrix[i][j];
maxColIndex = j;
}
}
// 检查该最大值是否为所在列的最小值
int isSaddle = 1;
for (int k = 0; k < m; k++) {
if (matrix[k][maxColIndex] < maxInRow) {
isSaddle = 0;
break;
}
}
if (isSaddle) {
printf("鞍点是: %d,位于第 %d 行,第 %d 列
", maxInRow, i + 1, maxColIndex + 1);
return 1;
}
}
printf("没有找到鞍点。
");
return 0;
}
int main() {
int m, n;
int matrix[MAX_ROWS][MAX_COLS];
printf("请输入二维数组的行数 m: ");
scanf("%d", &m);
printf("请输入二维数组的列数 n: ");
scanf("%d", &n);
printf("请输入二维数组的 %d 行 %d 列元素:
", m, n);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &matrix[i][j]);
}
}
findSaddlePoint(matrix, m, n);
return 0;
}
5.编写一个程序,根据用户输入的学生成绩(整数),判断并输出对应的成绩等级。成绩等级划分如下:90 - 100 为 A,80 - 89 为 B,70 - 79 为 C,60 - 69 为 D,0 - 59 为 F。
答案:
#include <stdio.h>
char getGrade(int score) {
if (score >= 90 && score <= 100) {
return 'A';
} else if (score >= 80 && score <= 89) {
return 'B';
} else if (score >= 70 && score <= 79) {
return 'C';
} else if (score >= 60 && score <= 69) {
return 'D';
} else if (score >= 0 && score <= 59) {
return 'F';
} else {
return 'X'; // 表示输入的成绩无效
}
}
int main() {
int score;
char grade;
printf("请输入学生的成绩: ");
scanf("%d", &score);
grade = getGrade(score);
if (grade == 'X') {
printf("输入的成绩无效,请输入 0 - 100 之间的整数。
");
} else {
printf("该学生的成绩等级是: %c
", grade);
}
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$