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

2025-09-09
| 2份
| 28页
| 85人阅读
| 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 (); 答案: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.编写程序,写一个函数,将两个字符串连接,在主函数中通过键盘向数组内输入字符串,调用时使用数组名作为函数参数。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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