第12卷 函数的调用《C语言程序设计》山东省春季高考《软件与应用技术类考纲百套卷》

2026-06-12
| 2份
| 20页
| 5人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 C语言程序设计高教版(第五版)全一册
年级 高一
章节 6.2 函数的调用
类型 题集-专项训练
知识点 函数
使用场景 中职复习
学年 2026-2027
地区(省份) 山东省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 186 KB
发布时间 2026-06-12
更新时间 2026-06-12
作者 xkw__007
品牌系列 学易金卷·考纲百套卷
审核时间 2026-06-12
下载链接 https://m.zxxk.com/soft/58312457.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

编写说明:山东省春季高考《软件与应用技术类考纲百套卷》,依据山东省《软件与应用技术类专业知识考试标准》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。 本试卷是第12卷,按《C语言程序设计》范围和要求编写。具体内容为: 掌握函数的调用。 山东省《软件与应用技术类考纲百套卷》 第12卷 《C语言程序设计》 函数的调用 考点训练卷 考试时间60分钟 满分100分 班级 姓名 学号 成绩 一、选择题(本大题共20小题,每题3分,共60分) 1.以下函数调用语句中,正确的是( ) A. fun (); B. fun; C. int a=fun; D. fun (1,2,3); 2.以下关于函数原型的描述中,正确的是( ) A. 函数原型必须包含参数名 B. 函数原型用于告诉编译器函数的返回值类型和参数类型 C. 函数原型必须在函数定义之后 D. 函数原型可以省略返回值类型 3.数组作为函数参数时,传递的是( ) A. 数组的全部元素值 B. 数组第一个元素的值 C. 数组的首地址 D. 数组的长度 4.以下关于递归调用的描述中,正确的是( ) A. 递归调用就是函数直接调用自身 B. 递归调用不需要终止条件 C. 递归调用的执行效率比循环高 D. 递归调用必须有明确的终止条件 5.以下关于函数嵌套调用的描述中,正确的是( ) A. 函数可以嵌套定义 B. 函数可以嵌套调用 C. 嵌套调用最多只能有两层 D. main 函数可以被其他函数嵌套调用 6.以下函数原型声明中,正确的是( ) A. int fun (int a, b); B. int fun (int, int); C. fun (int a, int b); D. int fun (a, b); 7.若有函数定义void fun(int a[]),则以下调用语句中正确的是( ) A. int arr [5]; fun (arr); B. int arr [5]; fun (arr [5]); C. int arr [5]; fun (&arr); D. int arr [5]; fun (arr [0]); 8.以下递归函数的功能是计算( ) int fun(int n) { if(n==0) return 1; else return n*fun(n-1); } A. n 的累加和 B. n 的阶乘 C. n 的平方 D. 2 的 n 次方 9.执行以下程序段后,输出结果是( ) void fun(int a) { a++; } int main() { int x=5; fun(x); printf("%d", x); return 0; } A. 5 B. 6 C. 7 D. 不确定 10.以下关于函数原型作用的描述中,错误的是( ) A. 告诉编译器函数的返回值类型 B. 告诉编译器函数的参数个数和类型 C. 告诉编译器函数的功能 D. 帮助编译器进行类型检查 11.执行以下程序段后,输出结果是( ) void fun(int a[]) { a[0]=10; } int main() { int arr[3]={1,2,3}; fun(arr); printf("%d", arr[0]); return 0; } A. 1 B. 2 C. 10 D. 不确定 12.执行以下递归函数调用fun(3)的输出结果是( ) void fun(int n) { if(n>0) { fun(n-1); printf("%d ", n); } } A. 1 2 3 B. 3 2 1 C. 1 2 D. 3 2 13.以下函数嵌套调用的执行顺序是( ) void fun2() { printf("2"); } void fun1() { printf("1"); fun2(); printf("3"); } int main() { fun1(); return 0; } A. 1→2→3 B. 1→3→2 C. 2→1→3 D. 3→2→1 14.若有函数定义int fun(int a, int b),则以下函数原型声明中错误的是( ) A. int fun (int, int); B. int fun (int x, int y); C. int fun (int a, b); D. int fun (int, int y); 15.以下关于数组作为函数参数的描述中,正确的是( ) A. 形参数组的长度必须与实参数组相同 B. 形参数组名是一个变量指针 C. 对形参数组的修改不会影响实参数组 D. 数组作为函数参数时是值传递 16.以下递归函数调用fun(4)的返回值是( ) int fun(int n) { if(n<=1) return 1; else return fun(n-1)+fun(n-2); } A. 3 B. 5 C. 8 D. 13 17.以下函数调用语句中,实参个数正确的是( ) A. int fun (int a, int b); fun (1); B. int fun (int a, int b); fun (1,2); C. int fun (int a, int b); fun (1,2,3); D. int fun (); fun (1); 18.以下关于函数原型与函数定义的区别描述中,正确的是( ) A. 函数原型有函数体,函数定义没有 B. 函数定义有函数体,函数原型没有 C. 函数原型必须指定参数名,函数定义可以省略 D. 函数定义必须指定参数名,函数原型可以省略 19.若有函数定义void fun(int a[10]),则以下说法正确的是( ) A. 实参数组长度必须为 10 B. 形参数组 a 的长度为 10 C. 形参数组 a 本质是一个 int 型指针 D. 函数只能接收长度为 10 的数组 20.执行以下程序段后,输出结果是( ) int fun(int n) { if(n==1) return 1; else return n+fun(n-1); } int main() { printf("%d", fun(5)); return 0; } A. 5 B. 10 C. 15 D. 20 二、简答题(本大题共2小题,每题10分,共20分) 1.阅读以下 C 语言程序,程序运行后的结果为______ #include <stdio.h> void fun2(int b) { b *= 2; printf("fun2: b=%d ", b); } void fun1(int a) { a++; fun2(a); printf("fun1: a=%d ", a); } int main() { int x=3; fun1(x); printf("main: x=%d ", x); return 0; } 2.阅读以下 C 语言程序,程序运行后的结果为______ #include <stdio.h> void reverse(int a[], int n) { int i, temp; for(i=0;i<n/2;i++) { temp=a[i]; a[i]=a[n-1-i]; a[n-1-i]=temp; } } int main() { int arr[5]={1,2,3,4,5}; reverse(arr, 5); for(int i=0;i<5;i++) printf("%d ", arr[i]); return 0; } 三、案例分析题(本大题共1小题,每题10分,共10分) 1.以下程序的功能是:定义一个递归函数计算 n 的阶乘,主函数输入 n,调用该函数输出结果。请在程序的下划线处填入正确的内容,使程序完整并能正确运行。 #include <stdio.h> ____1____; int main() { int n; long result; printf("请输入一个非负整数:"); scanf("%d", &n); if(n<0) { printf("输入错误! "); return 1; } result=____2____; printf("%d! = %ld ", n, result); return 0; } long factorial(int n) { if(____3____) return 1; else return ____4____; } 四、综合应用题(本大题共1小题,每题10分,共10分) 1.编写一个 C 语言程序,实现以下功能:定义一个函数arrayMax,接收一个整型数组和数组长度,返回数组中的最大值。在主函数输入 10 个整数存入数组,调用arrayMax函数输出最大值。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:山东省春季高考《软件与应用技术类考纲百套卷》,依据山东省《软件与应用技术类专业知识考试标准》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。 本试卷是第12卷,按《C语言程序设计》范围和要求编写。具体内容为: 掌握函数的调用。 山东省《软件与应用技术类考纲百套卷》 第12卷 《C语言程序设计》 函数的调用 考点训练卷 考试时间60分钟 满分100分 班级 姓名 学号 成绩 一、选择题(本大题共20小题,每题3分,共60分) 1.以下函数调用语句中,正确的是( ) A. fun (); B. fun; C. int a=fun; D. fun (1,2,3); 【答案】A 【解析】无参数函数调用必须加空括号。B 缺少括号;C 错误,函数名是地址不能直接赋值给 int 变量;D 函数未定义三个参数。 2.以下关于函数原型的描述中,正确的是( ) A. 函数原型必须包含参数名 B. 函数原型用于告诉编译器函数的返回值类型和参数类型 C. 函数原型必须在函数定义之后 D. 函数原型可以省略返回值类型 【答案】B 【解析】函数原型的作用是向编译器声明函数的接口信息。A 错误,参数名可以省略;C 错误,原型必须在调用之前;D 错误,返回值类型不能省略。 3.数组作为函数参数时,传递的是( ) A. 数组的全部元素值 B. 数组第一个元素的值 C. 数组的首地址 D. 数组的长度 【答案】C 【解析】C 语言中数组名代表首地址,数组作为函数参数时采用地址传递,形参和实参共享同一块内存空间。 4.以下关于递归调用的描述中,正确的是( ) A. 递归调用就是函数直接调用自身 B. 递归调用不需要终止条件 C. 递归调用的执行效率比循环高 D. 递归调用必须有明确的终止条件 【答案】D 【解析】递归调用必须有终止条件,否则会导致栈溢出。A 错误,也可以间接调用;B 错误,必须有终止条件;C 错误,递归效率通常低于循环。 5.以下关于函数嵌套调用的描述中,正确的是( ) A. 函数可以嵌套定义 B. 函数可以嵌套调用 C. 嵌套调用最多只能有两层 D. main 函数可以被其他函数嵌套调用 【答案】B 【解析】C 语言允许函数嵌套调用,但不允许嵌套定义。A 错误;C 错误,嵌套层数没有限制;D 错误,main 函数不能被调用。 6.以下函数原型声明中,正确的是( ) A. int fun (int a, b); B. int fun (int, int); C. fun (int a, int b); D. int fun (a, b); 【答案】B 【解析】函数原型可以省略参数名,但必须指定每个参数的类型和返回值类型。A、C、D 格式错误。 7.若有函数定义void fun(int a[]),则以下调用语句中正确的是( ) A. int arr [5]; fun (arr); B. int arr [5]; fun (arr [5]); C. int arr [5]; fun (&arr); D. int arr [5]; fun (arr [0]); 【答案】A 【解析】数组作为函数参数时,实参直接写数组名即可。B 传递的是数组元素;C 传递的是数组指针的地址;D 传递的是单个元素。 8.以下递归函数的功能是计算( ) int fun(int n) { if(n==0) return 1; else return n*fun(n-1); } A. n 的累加和 B. n 的阶乘 C. n 的平方 D. 2 的 n 次方 【答案】B 【解析】阶乘的递归实现:n! = n × (n-1)!,终止条件是 0! = 1。 9.执行以下程序段后,输出结果是( ) void fun(int a) { a++; } int main() { int x=5; fun(x); printf("%d", x); return 0; } A. 5 B. 6 C. 7 D. 不确定 【答案】A 【解析】普通变量作为函数参数时是值传递,形参的改变不会影响实参,因此 x 的值仍为 5。 10.以下关于函数原型作用的描述中,错误的是( ) A. 告诉编译器函数的返回值类型 B. 告诉编译器函数的参数个数和类型 C. 告诉编译器函数的功能 D. 帮助编译器进行类型检查 【答案】C 【解析】函数原型只声明函数的接口,不包含函数的功能实现。A、B、D 都是函数原型的正确作用。 11.执行以下程序段后,输出结果是( ) void fun(int a[]) { a[0]=10; } int main() { int arr[3]={1,2,3}; fun(arr); printf("%d", arr[0]); return 0; } A. 1 B. 2 C. 10 D. 不确定 【答案】C 【解析】数组作为函数参数时是地址传递,形参数组的修改会直接影响实参数组,因此 arr [0] 变为 10。 12.执行以下递归函数调用fun(3)的输出结果是( ) void fun(int n) { if(n>0) { fun(n-1); printf("%d ", n); } } A. 1 2 3 B. 3 2 1 C. 1 2 D. 3 2 【答案】A 【解析】递归的 "先递后归" 执行过程:先调用 fun (2)→fun (1)→fun (0)(终止),然后依次输出 1、2、3。 13.以下函数嵌套调用的执行顺序是( ) void fun2() { printf("2"); } void fun1() { printf("1"); fun2(); printf("3"); } int main() { fun1(); return 0; } A. 1→2→3 B. 1→3→2 C. 2→1→3 D. 3→2→1 【答案】A 【解析】嵌套调用执行顺序:main 调用 fun1→输出 1→调用 fun2→输出 2→返回 fun1→输出 3。 14.若有函数定义int fun(int a, int b),则以下函数原型声明中错误的是( ) A. int fun (int, int); B. int fun (int x, int y); C. int fun (int a, b); D. int fun (int, int y); 【答案】C 【解析】函数原型中每个参数都必须指定类型,C 选项第二个参数 b 没有指定类型,错误。 15.以下关于数组作为函数参数的描述中,正确的是( ) A. 形参数组的长度必须与实参数组相同 B. 形参数组名是一个变量指针 C. 对形参数组的修改不会影响实参数组 D. 数组作为函数参数时是值传递 【答案】B 【解析】形参数组名本质是一个指针变量,接收实参数组的首地址。A 错误,形参数组长度可以省略;C、D 错误,是地址传递,修改会影响实参。 16.以下递归函数调用fun(4)的返回值是( ) int fun(int n) { if(n<=1) return 1; else return fun(n-1)+fun(n-2); } A. 3 B. 5 C. 8 D. 13 【答案】B 【解析】斐波那契数列的递归实现:fun (4)=fun (3)+fun (2)=[fun (2)+fun (1)]+[fun (1)+fun (0)]=(2+1)+(1+1)=5。 17.以下函数调用语句中,实参个数正确的是( ) A. int fun (int a, int b); fun (1); B. int fun (int a, int b); fun (1,2); C. int fun (int a, int b); fun (1,2,3); D. int fun (); fun (1); 【答案】B 【解析】函数调用时实参个数必须与形参个数一致。A 少一个参数;C 多一个参数;D 函数无参数,不能传参。 18.以下关于函数原型与函数定义的区别描述中,正确的是( ) A. 函数原型有函数体,函数定义没有 B. 函数定义有函数体,函数原型没有 C. 函数原型必须指定参数名,函数定义可以省略 D. 函数定义必须指定参数名,函数原型可以省略 【答案】B 【解析】函数定义包含函数体,是函数的完整实现;函数原型只有函数头,没有函数体。A 错误;C、D 错误,两者都可以省略参数名。 19.若有函数定义void fun(int a[10]),则以下说法正确的是( ) A. 实参数组长度必须为 10 B. 形参数组 a 的长度为 10 C. 形参数组 a 本质是一个 int 型指针 D. 函数只能接收长度为 10 的数组 【答案】C 【解析】形参数组的长度会被编译器忽略,本质是指针。A、B、D 错误,函数可以接收任意长度的 int 数组。 20.执行以下程序段后,输出结果是( ) int fun(int n) { if(n==1) return 1; else return n+fun(n-1); } int main() { printf("%d", fun(5)); return 0; } A. 5 B. 10 C. 15 D. 20 【答案】C 【解析】1 到 n 累加和的递归实现:fun (5)=5+4+3+2+1=15。 二、简答题(本大题共2小题,每题10分,共20分) 1.阅读以下 C 语言程序,程序运行后的结果为______ #include <stdio.h> void fun2(int b) { b *= 2; printf("fun2: b=%d ", b); } void fun1(int a) { a++; fun2(a); printf("fun1: a=%d ", a); } int main() { int x=3; fun1(x); printf("main: x=%d ", x); return 0; } 【答案】 fun2: b=8 fun1: a=4 main: x=3 2.阅读以下 C 语言程序,程序运行后的结果为______ #include <stdio.h> void reverse(int a[], int n) { int i, temp; for(i=0;i<n/2;i++) { temp=a[i]; a[i]=a[n-1-i]; a[n-1-i]=temp; } } int main() { int arr[5]={1,2,3,4,5}; reverse(arr, 5); for(int i=0;i<5;i++) printf("%d ", arr[i]); return 0; } 【答案】5 4 3 2 1 三、案例分析题(本大题共1小题,每题10分,共10分) 1.以下程序的功能是:定义一个递归函数计算 n 的阶乘,主函数输入 n,调用该函数输出结果。请在程序的下划线处填入正确的内容,使程序完整并能正确运行。 #include <stdio.h> ____1____; int main() { int n; long result; printf("请输入一个非负整数:"); scanf("%d", &n); if(n<0) { printf("输入错误! "); return 1; } result=____2____; printf("%d! = %ld ", n, result); return 0; } long factorial(int n) { if(____3____) return 1; else return ____4____; } 【答案】 1.long factorial(int n)(或long factorial(int)) 2.factorial(n) 3.n==0 || n==1(或n<=1) 4.n * factorial(n-1) 四、综合应用题(本大题共1小题,每题10分,共10分) 1.编写一个 C 语言程序,实现以下功能:定义一个函数arrayMax,接收一个整型数组和数组长度,返回数组中的最大值。在主函数输入 10 个整数存入数组,调用arrayMax函数输出最大值。 【答案】 #include <stdio.h> int arrayMax(int a[], int n) { int max=a[0], i; for(i=1;i<n;i++) { if(a[i]>max) max=a[i]; } return max; } int main() { int arr[10], i, max; printf("请输入10个整数:"); for(i=0;i<10;i++) { scanf("%d", &arr[i]); } max=arrayMax(arr, 10); printf("数组中的最大值为:%d ", max); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第12卷 函数的调用《C语言程序设计》山东省春季高考《软件与应用技术类考纲百套卷》
1
第12卷 函数的调用《C语言程序设计》山东省春季高考《软件与应用技术类考纲百套卷》
2
第12卷 函数的调用《C语言程序设计》山东省春季高考《软件与应用技术类考纲百套卷》
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。