内容正文:
编写说明:2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第18卷,是知识点训练卷。按“C语言程序设计”考试纲要(六)函数的六点知识点要求编写,其六点要求是:
1.掌握函数的定义和调用方法。2.理解形参和实参之间的关系。3.掌握函数的返回值。4.掌握函数的调用。5.理解函数的原型。6.了解函数的嵌套调用和递归调用。7.理解数组元素作为函数参数。8.了解多维数组作为函数参数。9.了解数组名作为函数参数。10.了解函数变量的作用域。11.了解变量的存储类型。
2026版吉林省《信息工程类(电子与信息类)考纲百套卷》第18卷
《C语言程序设计》
(六)函数-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共10小题,每小题2分,共20分)
1. 以下关于函数定义的说法,正确的是( )
A. 函数定义可以嵌套,即一个函数内部可以定义另一个函数
B. 函数定义时,形参的类型可以省略
C. 函数定义的一般形式为:返回值类型 函数名 (形参列表) {函数体}
D. 函数定义时,函数名可以与变量名相同
答案:C
2. 若有函数定义:
void func() {
printf("Hello");
}
以下关于该函数返回值的说法,正确的是( )
A. 函数返回值为 Hello
B. 函数返回值为 void 类型
C. 函数没有返回值
D. 函数返回值为一个随机值
答案:C
3. 执行以下程序的输出结果是( )
void f(int v,int w)
{int t;
t=v;v=w;w=t;}
main()
{int x=1,y=3,z=2;
if(x>y) f(x,y);
else if(y>z) f(y,z);
else f(x,z);
printf("%d,%d,%d
",x,y,z);
A. 1,2,3
B. 1,3,2
C. 3,1,2
D. 2,3,1
答案:B
4. 关于形参和实参的关系,以下说法错误的是( )
A. 形参在函数调用时才分配内存空间
B. 实参和形参可以同名
C. 实参和形参的数据类型必须一致
D. 函数调用结束后,形参的内存空间不会释放
答案:D
5.执行以下程序的输出结果是( )
int a,b;
void fun()
{a=100;
b=200;}
main()
{int a=5,b=7;
fun();
printf("%d%d
",a,b);
getch();}
A. 100200
B. 200100
C. 57
D. 75
答案:C
6. 有如下函数:
int func1(int a) {
return a + 1;
}
int func2(int b) {
return func1(b) * 2;
}
这属于( )
A. 函数的嵌套调用
B. 函数的递归调用
C. 非法调用
D. 以上都不是
答案:A
7. 当数组名作为函数参数时,以下说法正确的是( )
A. 函数内部对数组元素的修改不会影响原数组
B. 传递的是数组的副本
C. 传递的是数组的首地址
D. 数组名作为参数和普通变量作为参数没有区别
答案:C
8. 有如下代码:
#include <stdio.h>
void func() {
int a = 10;
printf("%d
", a);
}
int main() {
func();
// 此处能否访问变量 a
// printf("%d
", a);
return 0;
}
关于变量 a 的作用域,以下说法正确的是( )
A. a 是全局变量,在 main 函数中可以访问
B. a 是局部变量,仅在 func 函数内部可以访问
C. a 是静态变量,在整个程序中都可以访问
D. a 的作用域是从定义处到文件末尾
答案:B
9. 执行以下程序的输出结果是( )
main()
{int k=4,m=1,p;
p=func(k,m); printf("%d,",p);
p=func(k,m); printf("%d
",p);getch();}
int func(int a,int b)
{static int m=0,i=2;
i+=m+1; m=i+a+b;
return(m);}
A. 8,8
B. 8,16
C. 8,17
D. 8,20
答案:C
10. 执行以下程序的输出结果是( )
void func(int b[ ])
{ int j;
for(j=0;j<4;j++)
b[j]=j; }
main( )
{ int a[4], i;
func(a);
for(i=0; i<4; i++)
printf("%2d",a[i]);
getch();}
A. 1 2 3 4
B. 0 1 2 3
C. 2 3 4 5
D. -1 0 1 2
答案:B
二、判断题(本大题共10小题,每小题2分,共20分)
1. 函数定义时,返回值类型可以省略,默认返回 int 类型。( )
答案:正确
2. 设有函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是5个。( )
答案:错误
3. 若int add(int a, int b) { return a + b; },调用add(2.5, 3.5)时,会自动将实参转换为int类型进行计算,返回值为5。( )
答案:正确
4. 若int fun(int x) { return x++; },调用fun(3)后,返回值为3,变量x的值变为4。( )
答案:错误
5. 对于int fun(int a, int b) { return (a++ > b--) ? a : b; },调用fun(3, 3),先比较3>3为假,再自增自减,返回b=2。( )
答案:错误
6. 当数组元素作为函数参数时,是值传递,函数内部对参数的修改不会影响原数组元素。( )
答案:正确
7. 数组名作为函数参数传递的是数组的首地址,函数内部可以通过该地址修改原数组的元素。( )
答案:正确
8. 静态变量在程序运行期间只初始化一次,之后每次进入函数时,会保留上次的值。( )
答案:正确
9. 函数int max(int a, int b) { return a > b ? a : b; },调用max(5, 7)的返回值为7。( )
答案:正确
10. 若int sum(int n) { if (n == 1) return 1; else return n + sum(n - 1); },调用sum(5)的返回值为15。( )
答案:正确
三、填空题(本大题共5小题,每题2分,共10分)
1. 函数定义的一般形式为:______ 函数名 (形参列表) {函数体}。
答案:返回值类型
2. 以下函数的功能是:求x的y次方,横线处应该填入的程序代码是 ______。
double fun(double x,int y)
{ int i;
double z;
for(i=1,z=x;i<y;i++) z=______;
return z;
}
答案:z*x
3.下列程序的功能是从键盘输入两个整数,输出最大数,则横线处应该填入的程序代码是 ______ 。
int max(int x,int y)
{int z;
;
return (z);}
main()
{int a,b,c;
scanf("%d%d",&a,&b);
c=max(a,b);
printf("Max is %d
",c);
getch();}
答案:z=x>y?x:y
4. 当数组名作为函数参数时,传递的是数组的 ______。
答案:首地址
5. 若要在一个文件中使用另一个文件中定义的全局变量,需要使用 ______ 关键字进行声明。
答案:extern
四、读程序写结果题(本大题共5小题,每题5分,共25分)
1.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
main()
{ printf("main( ) :%d
",fact(5));
fact(-5);
getch();
}
int fact(int value)
{ int f;
if(value<0)
{ printf("Arg error
");
return(-1);
}
else if(value==1||value==0) f=1;
else f=value*fact(value-1)+1;
printf("This called value=%d
",f);
return f;
}
答案:
This called value=1
This called value=3
This called value=10
This called value=41
This called value=206
main( ) :206
Arg error
2.以下程序的运行结果是______。
#include <stdio.h>
void modifyArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
arr[i] *= 2;
}
}
int main() {
int arr[] = {1, 2, 3};
int size = sizeof(arr) / sizeof(arr[0]);
modifyArray(arr, size);
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("
");
return 0;
}
答案:2 4 6
3.以下程序的运行结果是______。
#include <stdio.h>
int sum(int arr[], int n) {
if (n == 0) {
return 0;
} else {
return arr[n - 1] + sum(arr, n - 1);
}
}
int main() {
int arr[] = {1, 2, 3, 4};
int size = sizeof(arr) / sizeof(arr[0]);
int result = sum(arr, size);
printf("%d
", result);
return 0;
}
答案:10
4.以下程序的运行结果是______。
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int operate(int x, int y, int (*func)(int, int)) {
return func(x, y);
}
int main() {
int num1 = 10;
int num2 = 5;
int sum = operate(num1, num2, add);
printf("两数之和为: %d
", sum);
int difference = operate(num1, num2, subtract);
printf("两数之差为: %d
", difference);
return 0;
}
答案:
两数之和为: 15
两数之差为: 5
5.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
#define N 3
int fun(int a[N][N]);
main()
{int a[N][N]={1,-2,-5,-1,2,5,-4,4,-3},s;
s=fun(a);
printf("s=%d
",s);
getch();}
int fun(int a[N][N])
{int i,j,sum=0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(a[i][j]<i+j)
sum=sum+a[i][j];
return sum;}
答案:s=-15
五、编程题(本大题共5小题,每题5分,共25分)
1. 编写一个递归函数,用于计算斐波那契数列的第 n 项。斐波那契数列定义为:F(0) = 0, F(1) = 1,F(n)=F(n-1)+F(n-2)(n>1)。要求在 main 函数中接收用户输入的 n 值,调用递归函数计算结果并输出。
答案代码:
#include <stdio.h>
// 递归函数计算斐波那契数列第 n 项
int fibonacci(int n) {
if (n == 0) return 0;
if (n == 1) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
int n;
printf("请输入要计算的斐波那契数列的项数 n: ");
scanf("%d", &n);
int result = fibonacci(n);
printf("斐波那契数列的第 %d 项是: %d
", n, result);
return 0;
}
2.编写一个函数 bubbleSort,使用数组名作为参数,对传入的整数数组进行冒泡排序。在 main 函数中初始化一个数组,调用 bubbleSort 函数进行排序并输出排序后的数组。
答案代码:
#include <stdio.h>
// 冒泡排序函数
void bubbleSort(int arr[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {5, 3, 8, 4, 2};
int size = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, size);
printf("排序后的数组是: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("
");
return 0;
}
3.编写一个函数,输入一行字符,将此字符串中最长的单词输出,在主函数中调用该函数。
答案代码:
#include <stdio.h>
#include <conio.h>
#include<string.h>
int main()
{int alphabetic(char);
int longest(char[]);
int i;
char line[100];
printf("input one line:
");
gets(line);
printf("The longest word is :");
for (i=longest(line);alphabetic(line[i]);i++)
printf("%c",line[i]);
printf("
");
getch();
}
int alphabetic(char c)
{if ((c>='a' && c<='z')||(c>='A'&&c<='z'))
return(1);
else
return(0);
}
int longest( char string[ ])
{int len=0,i,length=0,flag=1,place=0,point;
for (i=0;i<=strlen(string);i++)
if (alphabetic(string[i]))
if (flag)
{point=i;
flag=0;
}
else
len++;
else
{flag=1;
if(len>=length)
{length=len;
place=point;
len=0;
}
}
return(place);
}
4.编写一个函数 factorial 用于计算一个数的阶乘,再编写一个函数 combination 调用 factorial 函数计算组合数 。在 main 函数中接收用户输入的 n 和 k 值,调用 combination 函数计算并输出结果。
答案代码:
#include <stdio.h>
// 计算阶乘
int factorial(int num) {
if (num == 0 || num == 1) return 1;
return num * factorial(num - 1);
}
// 计算组合数
int combination(int n, int k) {
return factorial(n) / (factorial(k) * factorial(n - k));
}
int main() {
int n, k;
printf("请输入 n 和 k 的值(n >= k): ");
scanf("%d %d", &n, &k);
int result = combination(n, k);
printf("组合数 C(%d, %d) 是: %d
", n, k, result);
return 0;
}
5.编写一个函数,输入一个十六进制数,输出相应的十进制数。要求整个程序实现,由用户决定是否继续进行数制转换。
答案代码:
#include <stdio.h>
#include <conio.h>
# define MAX 1000
int main( )
{int htoi( char s[]);
int c,i,flag,flag1 ;
char t[MAX];
i=0;
flag=0;
flag1=1;
printf("input aHEX number:");
while((c=getchar( ))!='\0'&& i<MAX&&flag1)
{if(c>='0' &&c<='9'||c>='a'&& c<='f'||c>='A'&&c<='F')
{flag=1;
t[i++]=c;
}
else if (flag)
{t[i]='\0';
printf("decimal number %d
",htoi(t));
printf("continue or not?") ;
c=getchar( );
if(c=='N'||c=='n')
flag1=0;
else
{flag=0;
i=0;
printf("
input a HEX number:");
}
}
}
getch();
}
int htoi(char s[])
{int i,n;
n=0;
for(i=0;s[i]!='\0';i++)
{if(s[i]>='0'&&s[i]<='9')
n=n* 16+s[i]-'0';
if (s[i]>='a' && s[i]<='f')
n=n*16+s[i]-'a'+10;
if (s[i]>='A' &&s[i]<='F')
n=n*16+s[i]-'A'+10;
}
return(n);
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第18卷,是知识点训练卷。按“C语言程序设计”考试纲要(六)函数的六点知识点要求编写,其六点要求是:
1.掌握函数的定义和调用方法。2.理解形参和实参之间的关系。3.掌握函数的返回值。4.掌握函数的调用。5.理解函数的原型。6.了解函数的嵌套调用和递归调用。7.理解数组元素作为函数参数。8.了解多维数组作为函数参数。9.了解数组名作为函数参数。10.了解函数变量的作用域。11.了解变量的存储类型。
2026版吉林省《信息工程类(电子与信息类)考纲百套卷》第18卷
《C语言程序设计》
(六)函数-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共10小题,每小题2分,共20分)
1. 以下关于函数定义的说法,正确的是( )
A. 函数定义可以嵌套,即一个函数内部可以定义另一个函数
B. 函数定义时,形参的类型可以省略
C. 函数定义的一般形式为:返回值类型 函数名 (形参列表) {函数体}
D. 函数定义时,函数名可以与变量名相同
2. 若有函数定义:
void func() {
printf("Hello");
}
以下关于该函数返回值的说法,正确的是( )
A. 函数返回值为 Hello
B. 函数返回值为 void 类型
C. 函数没有返回值
D. 函数返回值为一个随机值
3. 执行以下程序的输出结果是( )
void f(int v,int w)
{int t;
t=v;v=w;w=t;}
main()
{int x=1,y=3,z=2;
if(x>y) f(x,y);
else if(y>z) f(y,z);
else f(x,z);
printf("%d,%d,%d
",x,y,z);
A. 1,2,3
B. 1,3,2
C. 3,1,2
D. 2,3,1
4. 关于形参和实参的关系,以下说法错误的是( )
A. 形参在函数调用时才分配内存空间
B. 实参和形参可以同名
C. 实参和形参的数据类型必须一致
D. 函数调用结束后,形参的内存空间不会释放
5.执行以下程序的输出结果是( )int a,b;
void fun()
{a=100;
b=200;}
main()
{int a=5,b=7;
fun();
printf("%d%d
",a,b);
getch();}
A. 100200
B. 200100
C. 57
D. 75
6. 有如下函数:
int func1(int a) {
return a + 1;
}
int func2(int b) {
return func1(b) * 2;
}
这属于( )
A. 函数的嵌套调用
B. 函数的递归调用
C. 非法调用
D. 以上都不是
7. 当数组名作为函数参数时,以下说法正确的是( )
A. 函数内部对数组元素的修改不会影响原数组
B. 传递的是数组的副本
C. 传递的是数组的首地址
D. 数组名作为参数和普通变量作为参数没有区别
8. 有如下代码:
#include <stdio.h>
void func() {
int a = 10;
printf("%d
", a);
}
int main() {
func();
// 此处能否访问变量 a
// printf("%d
", a);
return 0;
}
关于变量 a 的作用域,以下说法正确的是( )
A. a 是全局变量,在 main 函数中可以访问
B. a 是局部变量,仅在 func 函数内部可以访问
C. a 是静态变量,在整个程序中都可以访问
D. a 的作用域是从定义处到文件末尾
9. 执行以下程序的输出结果是( )
main()
{int k=4,m=1,p;
p=func(k,m); printf("%d,",p);
p=func(k,m); printf("%d
",p);getch();}
int func(int a,int b)
{static int m=0,i=2;
i+=m+1; m=i+a+b;
return(m);}
A. 8,8
B. 8,16
C. 8,17
D. 8,20
10. 执行以下程序的输出结果是( )
void func(int b[ ])
{ int j;
for(j=0;j<4;j++)
b[j]=j; }
main( )
{ int a[4], i;
func(a);
for(i=0; i<4; i++)
printf("%2d",a[i]);
getch();}
A. 1 2 3 4
B. 0 1 2 3
C. 2 3 4 5
D. -1 0 1 2
二、判断题(本大题共10小题,每小题2分,共20分)
1. 函数定义时,返回值类型可以省略,默认返回 int 类型。( )
2. 设有函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句中实参的个数是5个。( )
3. 若int add(int a, int b) { return a + b; },调用add(2.5, 3.5)时,会自动将实参转换为int类型进行计算,返回值为5。( )
4. 若int fun(int x) { return x++; },调用fun(3)后,返回值为3,变量x的值变为4。( )
5. 对于int fun(int a, int b) { return (a++ > b--) ? a : b; },调用fun(3, 3),先比较3>3为假,再自增自减,返回b=2。( )
6. 当数组元素作为函数参数时,是值传递,函数内部对参数的修改不会影响原数组元素。( )
7. 数组名作为函数参数传递的是数组的首地址,函数内部可以通过该地址修改原数组的元素。( )
8. 静态变量在程序运行期间只初始化一次,之后每次进入函数时,会保留上次的值。( )
9. 函数int max(int a, int b) { return a > b ? a : b; },调用max(5, 7)的返回值为7。( )
10. 若int sum(int n) { if (n == 1) return 1; else return n + sum(n - 1); },调用sum(5)的返回值为15。( )
三、填空题(本大题共5小题,每题2分,共10分)
1. 函数定义的一般形式为:______ 函数名 (形参列表) {函数体}。
2. 以下函数的功能是:求x的y次方,横线处应该填入的程序代码是 ______。
double fun(double x,int y)
{ int i;
double z;
for(i=1,z=x;i<y;i++) z=______;
return z;
}
3.下列程序的功能是从键盘输入两个整数,输出最大数,则横线处应该填入的程序代码是 ______ 。
int max(int x,int y)
{int z;
;
return (z);}
main()
{int a,b,c;
scanf("%d%d",&a,&b);
c=max(a,b);
printf("Max is %d
",c);
getch();}
4. 当数组名作为函数参数时,传递的是数组的 ______。
5. 若要在一个文件中使用另一个文件中定义的全局变量,需要使用 ______ 关键字进行声明。
四、读程序写结果题(本大题共5小题,每题5分,共25分)
1.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
main()
{ printf("main( ) :%d
",fact(5));
fact(-5);
getch();
}
int fact(int value)
{ int f;
if(value<0)
{ printf("Arg error
");
return(-1);
}
else if(value==1||value==0) f=1;
else f=value*fact(value-1)+1;
printf("This called value=%d
",f);
return f;
}
2.以下程序的运行结果是______。
#include <stdio.h>
void modifyArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
arr[i] *= 2;
}
}
int main() {
int arr[] = {1, 2, 3};
int size = sizeof(arr) / sizeof(arr[0]);
modifyArray(arr, size);
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("
");
return 0;
}
3.以下程序的运行结果是______。
#include <stdio.h>
int sum(int arr[], int n) {
if (n == 0) {
return 0;
} else {
return arr[n - 1] + sum(arr, n - 1);
}
}
int main() {
int arr[] = {1, 2, 3, 4};
int size = sizeof(arr) / sizeof(arr[0]);
int result = sum(arr, size);
printf("%d
", result);
return 0;
}
4.以下程序的运行结果是______。
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int operate(int x, int y, int (*func)(int, int)) {
return func(x, y);
}
int main() {
int num1 = 10;
int num2 = 5;
int sum = operate(num1, num2, add);
printf("两数之和为: %d
", sum);
int difference = operate(num1, num2, subtract);
printf("两数之差为: %d
", difference);
return 0;
}
5.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
#define N 3
int fun(int a[N][N]);
main()
{int a[N][N]={1,-2,-5,-1,2,5,-4,4,-3},s;
s=fun(a);
printf("s=%d
",s);
getch();}
int fun(int a[N][N])
{int i,j,sum=0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(a[i][j]<i+j)
sum=sum+a[i][j];
return sum;}
五、编程题(本大题共5小题,每题5分,共25分)
1. 编写一个递归函数,用于计算斐波那契数列的第 n 项。斐波那契数列定义为:F(0) = 0, F(1) = 1,F(n)=F(n-1)+F(n-2)(n>1)。要求在 main 函数中接收用户输入的 n 值,调用递归函数计算结果并输出。
2.编写一个函数 bubbleSort,使用数组名作为参数,对传入的整数数组进行冒泡排序。在 main 函数中初始化一个数组,调用 bubbleSort 函数进行排序并输出排序后的数组。
3.编写一个函数,输入一行字符,将此字符串中最长的单词输出,在主函数中调用该函数。
4.编写一个函数 factorial 用于计算一个数的阶乘,再编写一个函数 combination 调用 factorial 函数计算组合数 。在 main 函数中接收用户输入的 n 和 k 值,调用 combination 函数计算并输出结果。
5.编写一个函数,输入一个十六进制数,输出相应的十进制数。要求整个程序实现,由用户决定是否继续进行数制转换。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$