《C语言程序设计》(六)函数-知识点训练卷 2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》第18卷

2025-09-09
| 2份
| 26页
| 101人阅读
| 0人下载

内容正文:

编写说明: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.编写一个函数,输入一个十六进制数,输出相应的十进制数。要求整个程序实现,由用户决定是否继续进行数制转换。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

《C语言程序设计》(六)函数-知识点训练卷 2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》第18卷
1
《C语言程序设计》(六)函数-知识点训练卷 2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》第18卷
2
《C语言程序设计》(六)函数-知识点训练卷 2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》第18卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。