内容正文:
编写说明:2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第19卷,是知识点训练卷。按“C语言程序设计”考试纲要(六)函数的六点知识点要求编写,其六点要求是:
1.掌握函数的定义和调用方法。2.理解形参和实参之间的关系。3.掌握函数的返回值。4.掌握函数的调用。5.理解函数的原型。6.了解函数的嵌套调用和递归调用。7.理解数组元素作为函数参数。8.了解多维数组作为函数参数。9.了解数组名作为函数参数。10.了解函数变量的作用域。11.了解变量的存储类型。
2026版吉林省《信息工程类(电子与信息类)考纲百套卷》第19卷
《C语言程序设计》
(六)函数-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共10小题,每小题2分,共20分)
1. 有如下函数定义:
int func(int a, int b) {
return a + b;
}
调用该函数时,以下实参传递正确的是( )
A. func (3.5, 4.5);
B. func (3, 4);
C. func ("3", "4");
D. func ();
答案:B
2.执行以下程序后,变量w中的值为( )
int fun1(double a)
{ return a*=a; }
int fun2(double x,double y)
{double a=0,b=0;
a=fun1(x);
b=fun1(y);
return (int)(a+b);}
main()
{double w;
w=fun2(1.1,2.0);
getch();}
A. 0.0
B. 5
C. 5.0
D. 5.21
答案:C
3. 若函数 func 的定义如下:
int func(int x) {
return x * x;
}
调用 int y = func(func(2)); 后,y 的值是( )
A. 2
B. 4
C. 8
D. 16
答案:D
4. 有如下函数定义和调用:
int add(int a, int b) {
return a + b;
}
int main() {
int x = 3, y = 4;
int result = add(x, y);
return 0;
}
在函数调用 add(x, y) 时,以下说法正确的是( )
A. 实参 x 和 y 的值会被改变
B. 形参 a 和 b 是 x 和 y 的别名
C. 形参 a 和 b 接收的是实参 x 和 y 的值
D. 函数 add 会直接修改实参 x 和 y 的值
答案:C
5.执行以下程序的输出结果是( )
long fib(int n)
{if(n>2)
return(fib(n-1)+fib(n-2));
else return(2);}
main()
{ printf("%ld
",fib(3));
getch();}
A. 2
B. 4
C. 6
D. 8
答案:B
6. 已知函数 void func(int arr[], int n),以下哪种方式可以将数组元素作为参数传递给该函数( )
A. int a[5] = {1, 2, 3, 4, 5}; func(a[2], 5);
B. int a[5] = {1, 2, 3, 4, 5}; func(a, 5);
C. int a[5] = {1, 2, 3, 4, 5}; func(&a[2], 5);
D. int a[5] = {1, 2, 3, 4, 5}; func(&a, 5);
答案:B
7. 对于二维数组 int arr[3][4],若要将其作为参数传递给函数 void func(int arr[][4], int rows),以下调用正确的是( )
A. func(arr, 3);
B. func(arr[3], 3);
C. func(&arr[0][0], 3);
D. func(arr[][4], 3);
答案:A
8. 若有以下程序,则则以下叙述不正确的是( )
#include <stdio.h>
void f(int n)
main()
{
void f(int n);
f(5);
}
void f(int n);
{ printf("%d
",n); }
A. 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B. 若在主函数前对函数f进行说明,则在主函数和其它函数中都可以正确调用函数f
C. 对于以上程序,编译时系统会出提示出错信息:提示对f函数重复说明
D. 函数f无返回值,所以可用void将其类型定义为无值型
答案:C
9. 以下递归函数的功能是计算 n 的阶乘:
int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
调用 factorial(3) 的返回值是( )
A. 3
B. 6
C. 9
D. 12
答案:B
10. 若程序中定义了以下函数
double myadd(double a,double b)
{ return (a+b); }
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( )
A. double myadd(double a,b);
B. double myadd(double,double);
C. double myadd(double b,double a);
D. double myadd(double x,double y);
答案:A
二、判断题(本大题共10小题,每小题2分,共20分)
1. 函数调用时,实参的个数和类型必须与形参的个数和类型完全一致。( )
答案:正确
2. 函数的返回值只能是一个基本数据类型的值,不能是数组或结构体。( )
答案:错误
3. 以下函数值的类型是float。( )
fun(float x)
{float y;
y=3*x-4;
return y;}
答案:错误
4. 函数int calc(int a, int b) { return (a&b) + (a|b); },调用calc(6, 3)的结果为9。( )
答案:正确
5. 对于int fun(int x) { return x << 2 + x >> 1; },调用fun(4),因优先级先算移位再算加法,结果为18。( )
答案:错误
6. 函数int fun(int a[], int n) { int s=0; for(int i=0;i<n;i++) s+=a[i++]; return s; },传入数组{1,2,3,4}和n=4,返回值为4。( )
答案:正确
7. 局部变量的作用域仅限于定义它的函数内部,函数调用结束后,局部变量的内存空间会被释放。( )
答案:正确
8. 函数int fun(int n) { int s=1; while(n-->1) s*=n; return s; },调用fun(5)计算4!,返回值为24。( )
答案:正确
9. 对于int fun(int n) { int s=0; for(int i=1;i<=n;i++) s+=i%3; return s; },调用fun(5),累加1+2+0+1+2=6。( )
答案:正确
10. 当使用 extern 声明变量时,表示该变量是外部变量,存储在外部存储设备中。( )
答案:错误
三、填空题(本大题共5小题,每题2分,共10分)
1.下列函数的功能是查找m×n矩阵中的最大值,并将对应元素的行下标和列下标之和返回主调函数,横线处应该填入的程序代码是______。
int fun(int a[m][n])
{int i,j,x=0,y=0,max=a[0][0];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if( )
{max=a[i][j];
x=i;
y=j;}
return x+y;}
答案:max<a[i][j]
2. 函数调用时,实参和形参之间的数据传递方式通常有值传递和 ______。
答案:指针传递
3. 函数的递归调用需要有 ______,否则会导致栈溢出错误。
答案:终止条件
4. 局部变量存储在 ______ 区,静态变量存储在 ______ 区。
答案:栈;静态存储
5. 下列函数的功能是判断整数a是否为素数,当a是素数时返回值为1,否则返回值为0,横线处应该填入的程序代码是 ______。
int fact(int a)
{int i,k;
k=a-1;
for(i=2;i<=k;i++)
if(a%i==0)
break;
if(i>= )
return 1;
else return 0;}
答案:k+1
四、读程序写结果题(本大题共5小题,每题5分,共25分)
1.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
void fun1(int n)
{int i,j,k;
for(i=0;i<=n;i++)
{for(j=0;j<=2-i;j++)
printf(" ");
for(k=0;k<2*i+1;k++)
printf("*");
printf("
");}}
void fun2(int n)
{int i,j,k;
for(i=n;i>=0;i--)
{for(j=0;j<=2-i;j++)
printf(" ");
for(k=0;k<2*i+1;k++)
printf("*");
printf("
");}}
main()
{int n=3;
fun1(n);
fun2(n);
getch();}
答案:
*
***
*****
*******
*******
*****
***
*
2.以下程序的运行结果是______。
#include <stdio.h>
int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int num = 4;
int result = factorial(num);
printf("%d
", result);
return 0;
}
答案:24
3.以下程序的运行结果是______。
#include <stdio.h>
void func(int a[][3], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 3; j++) {
a[i][j] += 1;
}
}
}
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
func(arr, 2);
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("
");
}
return 0;
}
答案:
2 3 4
4.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
#include<math.h>
double addprime(int n);
int isprime(int a);
main()
{int n=30;
printf("1-%d:%.1f
",n,addprime(n));
getch();}
double addprime(int n)
{int i;
double s=0;
for(i=1;i<=n;i++)
if(isprime(i))
s=s+i;
return s;
}
int isprime(int a)
{int i;
if(a==1)
return 0;
for(i=2;i<=sqrt(a);i++)
if(a%i==0)
return 0;
return 1;}
答案:1-30:129.0
5.以下程序的运行结果是______。
#include <stdio.h>
int max(int a, int b) {
return (a > b) ? a : b;
}
int findMax(int arr[], int n) {
if (n == 1) {
return arr[0];
} else {
return max(arr[n - 1], findMax(arr, n - 1));
}
}
int main() {
int arr[] = {3, 7, 2, 9, 5};
int size = sizeof(arr) / sizeof(arr[0]);
int result = findMax(arr, size);
printf("%d
", result);
return 0;
}
答案:9
五、编程题(本大题共5小题,每题5分,共25分)
1.编写一个函数 square 用于计算一个数的平方,再编写一个函数 sumOfSquares 调用 square 函数计算数组元素的平方和。在 main 函数中初始化一个数组,调用 sumOfSquares 函数计算并输出结果。
答案代码:
#include <stdio.h>
// 计算一个数的平方
int square(int num) {
return num * num;
}
// 计算数组元素的平方和
int sumOfSquares(int arr[], int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
sum += square(arr[i]);
}
return sum;
}
int main() {
int arr[] = {1, 2, 3, 4};
int size = sizeof(arr) / sizeof(arr[0]);
int result = sumOfSquares(arr, size);
printf("数组元素的平方和是: %d
", result);
return 0;
}
2.编写一个函数 transpose,以二维数组作为参数,对传入的矩阵进行转置操作。在 main 函数中初始化一个矩阵,调用 transpose 函数进行转置并输出转置后的矩阵。
答案代码:
#include <stdio.h>
#define ROWS 3
#define COLS 3
// 矩阵转置函数
void transpose(int matrix[ROWS][COLS]) {
int temp;
for (int i = 0; i < ROWS; i++) {
for (int j = i + 1; j < COLS; j++) {
temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
int main() {
int matrix[ROWS][COLS] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
transpose(matrix);
printf("转置后的矩阵是:
");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", matrix[i][j]);
}
printf("
");
}
return 0;
}
3.编写一个函数 isPrime,用于判断一个数是否为素数。在 main 函数中初始化一个数组,遍历数组,将每个元素作为参数传递给 isPrime 函数,输出数组中所有素数。
答案代码:
#include <stdio.h>
#include <math.h>
// 判断一个数是否为素数
int isPrime(int num) {
if (num < 2) return 0;
for (int i = 2; i <= sqrt(num); i++) {
if (num % i == 0) return 0;
}
return 1;
}
int main() {
int arr[] = {2, 3, 4, 5, 6, 7, 8, 9};
int size = sizeof(arr) / sizeof(arr[0]);
printf("数组中的素数有: ");
for (int i = 0; i < size; i++) {
if (isPrime(arr[i])) {
printf("%d ", arr[i]);
}
}
printf("
");
return 0;
}
4.编写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。
答案代码:
#include <stdio.h>
#include <conio.h>
int main()
{int hcf(int,int); //函数声明
int lcd(int,int,int); //函数声明
int u,v,h,l;
scanf("%d,%d",&u,&v);
h=hcf(u,v);
printf("H. C. F=%d
",h);
l=lcd(u,v,h);
printf("L. C. D=%d
",l);
getch();
}
int hcf(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 lcd(int u,int v,int h)
{
return(u* v/h);
}
5.编写程序,写一个函数,将两个字符串连接,在主函数中通过键盘向数组内输入字符串,调用时使用数组名作为函数参数。
答案代码:
#include <stdio.h>
#include <conio.h>
#include<string.h>
int main( )
{ void concatenate(char string1[ ],char string2[ ],char string[ ]);
char s1[100],s2[100],s[100];
printf("input string1:");
scanf("%s",s1);
printf("input string2:");
scanf("%s",s2);
concatenate(s1,s2,s);
printf("
The new string is :%s
",s);
getch();
}
void concatenate( char string1[ ],char string2[ ],char string[ ])
{int i,j;
for(i=0;string1[i]!='\0';i++)
string[i]=string1[i];
for(j=0;string2[j]!='\0';j++)
string[i+j]=string2[j];
string[i+j]='\0';
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第19卷,是知识点训练卷。按“C语言程序设计”考试纲要(六)函数的六点知识点要求编写,其六点要求是:
1.掌握函数的定义和调用方法。2.理解形参和实参之间的关系。3.掌握函数的返回值。4.掌握函数的调用。5.理解函数的原型。6.了解函数的嵌套调用和递归调用。7.理解数组元素作为函数参数。8.了解多维数组作为函数参数。9.了解数组名作为函数参数。10.了解函数变量的作用域。11.了解变量的存储类型。
2026版吉林省《信息工程类(电子与信息类)考纲百套卷》第19卷
《C语言程序设计》
(六)函数-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共10小题,每小题2分,共20分)
1. 有如下函数定义:
int func(int a, int b) {
return a + b;
}
调用该函数时,以下实参传递正确的是( )
A. func (3.5, 4.5);
B. func (3, 4);
C. func ("3", "4");
D. func ();
2.执行以下程序后,变量w中的值为( )
int fun1(double a)
{ return a*=a; }
int fun2(double x,double y)
{double a=0,b=0;
a=fun1(x);
b=fun1(y);
return (int)(a+b);}
main()
{double w;
w=fun2(1.1,2.0);
getch();}
A. 0.0
B. 5
C. 5.0
D. 5.21
3. 若函数 func 的定义如下:
int func(int x) {
return x * x;
}
调用 int y = func(func(2)); 后,y 的值是( )
A. 2
B. 4
C. 8
D. 16
4. 有如下函数定义和调用:
int add(int a, int b) {
return a + b;
}
int main() {
int x = 3, y = 4;
int result = add(x, y);
return 0;
}
在函数调用 add(x, y) 时,以下说法正确的是( )
A. 实参 x 和 y 的值会被改变
B. 形参 a 和 b 是 x 和 y 的别名
C. 形参 a 和 b 接收的是实参 x 和 y 的值
D. 函数 add 会直接修改实参 x 和 y 的值
5.执行以下程序的输出结果是( )
long fib(int n)
{if(n>2)
return(fib(n-1)+fib(n-2));
else return(2);}
main()
{ printf("%ld
",fib(3));
getch();}
A. 2
B. 4
C. 6
D. 8
6. 已知函数 void func(int arr[], int n),以下哪种方式可以将数组元素作为参数传递给该函数( )
A. int a[5] = {1, 2, 3, 4, 5}; func(a[2], 5);
B. int a[5] = {1, 2, 3, 4, 5}; func(a, 5);
C. int a[5] = {1, 2, 3, 4, 5}; func(&a[2], 5);
D. int a[5] = {1, 2, 3, 4, 5}; func(&a, 5);
7. 对于二维数组 int arr[3][4],若要将其作为参数传递给函数 void func(int arr[][4], int rows),以下调用正确的是( )
A. func(arr, 3);
B. func(arr[3], 3);
C. func(&arr[0][0], 3);
D. func(arr[][4], 3);
8. 若有以下程序,则则以下叙述不正确的是( )
#include <stdio.h>
void f(int n)
main()
{
void f(int n);
f(5);
}
void f(int n);
{ printf("%d
",n); }
A. 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B. 若在主函数前对函数f进行说明,则在主函数和其它函数中都可以正确调用函数f
C. 对于以上程序,编译时系统会出提示出错信息:提示对f函数重复说明
D. 函数f无返回值,所以可用void将其类型定义为无值型
9. 以下递归函数的功能是计算 n 的阶乘:
int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
调用 factorial(3) 的返回值是( )
A. 3
B. 6
C. 9
D. 12
10. 若程序中定义了以下函数
double myadd(double a,double b)
{ return (a+b); }
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( )
A. double myadd(double a,b);
B. double myadd(double,double);
C. double myadd(double b,double a);
D. double myadd(double x,double y);
二、判断题(本大题共10小题,每小题2分,共20分)
1. 函数调用时,实参的个数和类型必须与形参的个数和类型完全一致。( )
2. 函数的返回值只能是一个基本数据类型的值,不能是数组或结构体。( )
3. 以下函数值的类型是float。( )
fun(float x)
{float y;
y=3*x-4;
return y;}
4. 函数int calc(int a, int b) { return (a&b) + (a|b); },调用calc(6, 3)的结果为9。( )
5. 对于int fun(int x) { return x << 2 + x >> 1; },调用fun(4),因优先级先算移位再算加法,结果为18。( )
6. 函数int fun(int a[], int n) { int s=0; for(int i=0;i<n;i++) s+=a[i++]; return s; },传入数组{1,2,3,4}和n=4,返回值为4。( )
7. 局部变量的作用域仅限于定义它的函数内部,函数调用结束后,局部变量的内存空间会被释放。( )
8. 函数int fun(int n) { int s=1; while(n-->1) s*=n; return s; },调用fun(5)计算4!,返回值为24。( )
9. 对于int fun(int n) { int s=0; for(int i=1;i<=n;i++) s+=i%3; return s; },调用fun(5),累加1+2+0+1+2=6。( )
10. 当使用 extern 声明变量时,表示该变量是外部变量,存储在外部存储设备中。( )
三、填空题(本大题共5小题,每题2分,共10分)
1.下列函数的功能是查找m×n矩阵中的最大值,并将对应元素的行下标和列下标之和返回主调函数,横线处应该填入的程序代码是______。
int fun(int a[m][n])
{int i,j,x=0,y=0,max=a[0][0];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if( )
{max=a[i][j];
x=i;
y=j;}
return x+y;}
2. 函数调用时,实参和形参之间的数据传递方式通常有值传递和 ______。
3. 函数的递归调用需要有 ______,否则会导致栈溢出错误。
4. 局部变量存储在 ______ 区,静态变量存储在 ______ 区。
5. 下列函数的功能是判断整数a是否为素数,当a是素数时返回值为1,否则返回值为0,横线处应该填入的程序代码是 ______。
int fact(int a)
{int i,k;
k=a-1;
for(i=2;i<=k;i++)
if(a%i==0)
break;
if(i>= )
return 1;
else return 0;}
四、读程序写结果题(本大题共5小题,每题5分,共25分)
1.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
void fun1(int n)
{int i,j,k;
for(i=0;i<=n;i++)
{for(j=0;j<=2-i;j++)
printf(" ");
for(k=0;k<2*i+1;k++)
printf("*");
printf("
");}}
void fun2(int n)
{int i,j,k;
for(i=n;i>=0;i--)
{for(j=0;j<=2-i;j++)
printf(" ");
for(k=0;k<2*i+1;k++)
printf("*");
printf("
");}}
main()
{int n=3;
fun1(n);
fun2(n);
getch();}
2.以下程序的运行结果是______。
#include <stdio.h>
int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int num = 4;
int result = factorial(num);
printf("%d
", result);
return 0;
}
3.以下程序的运行结果是______。
#include <stdio.h>
void func(int a[][3], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 3; j++) {
a[i][j] += 1;
}
}
}
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
func(arr, 2);
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("
");
}
return 0;
}
4.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
#include<math.h>
double addprime(int n);
int isprime(int a);
main()
{int n=30;
printf("1-%d:%.1f
",n,addprime(n));
getch();}
double addprime(int n)
{int i;
double s=0;
for(i=1;i<=n;i++)
if(isprime(i))
s=s+i;
return s;
}
int isprime(int a)
{int i;
if(a==1)
return 0;
for(i=2;i<=sqrt(a);i++)
if(a%i==0)
return 0;
return 1;}
5.以下程序的运行结果是______。
#include <stdio.h>
int max(int a, int b) {
return (a > b) ? a : b;
}
int findMax(int arr[], int n) {
if (n == 1) {
return arr[0];
} else {
return max(arr[n - 1], findMax(arr, n - 1));
}
}
int main() {
int arr[] = {3, 7, 2, 9, 5};
int size = sizeof(arr) / sizeof(arr[0]);
int result = findMax(arr, size);
printf("%d
", result);
return 0;
}
五、编程题(本大题共5小题,每题5分,共25分)
1.编写一个函数 square 用于计算一个数的平方,再编写一个函数 sumOfSquares 调用 square 函数计算数组元素的平方和。在 main 函数中初始化一个数组,调用 sumOfSquares 函数计算并输出结果。
2.编写一个函数 transpose,以二维数组作为参数,对传入的矩阵进行转置操作。在 main 函数中初始化一个矩阵,调用 transpose 函数进行转置并输出转置后的矩阵。
3.编写一个函数 isPrime,用于判断一个数是否为素数。在 main 函数中初始化一个数组,遍历数组,将每个元素作为参数传递给 isPrime 函数,输出数组中所有素数。
4.编写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。
5.编写程序,写一个函数,将两个字符串连接,在主函数中通过键盘向数组内输入字符串,调用时使用数组名作为函数参数。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$