第26卷 C语言-C语言卷13——函数的定义、调用与参数传递——江苏省计算机类——考纲百套卷

2026-07-01
| 2份
| 20页
| 4人阅读
| 0人下载

资源信息

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

内容正文:

编写说明:江苏省对口招生计算机类《考纲百套卷》,依据《江苏省计算机类专业综合理论考试大纲》编写。本专辑涵盖5门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。 本试卷是第26卷为专业核心模块训练卷,按《C语言》中"C语言卷13——函数的定义、调用与参数传递"范围和要求编写。具体内容为:掌握函数的定义方法;掌握形式参数与实在参数,参数值的传递。 江苏省对口招生职业技能考试 C语言 试卷 (C语言卷13——函数的定义、调用与参数传递) 考试时间:90分钟 满分:100分 一、单项选择题(共20题,每题2分,共40分) 1. 下列关于函数定义,正确的是( ) A.函数定义格式:类型 函数名(参数) 函数体 B.函数定义可以嵌套 C.函数定义不能省略返回类型 D.函数名可以省略 2. 想要定义一个没有返回值函数,返回类型应该是( ) A.void类型 B.int类型 C.char类型 D.null类型 3. 下列关于函数调用,正确的是( ) A.函数调用时参数个数必须与被调用函数定义时相同 B.函数调用时参数类型必须完全相同 C.函数不能调用自己(递归) D.函数必须在main函数之前定义 4. 下列关于C语言函数的形参和实参,说法错误的是( ) A. 形参在函数调用时才分配内存空间 B. 实参可以是常量、变量或表达式 C. 形参的作用域是整个程序 D. 实参和形参之间是值传递关系 5. 下列关于实际参数(实参),正确的是( ) A.实参可以是常量、变量或表达式 B.实参必须在函数定义时确定 C.实参和形参占用同一内存单元 D.实参必须和形参同名 6. 下列关于参数传递,正确的是( ) A.C语言函数参数传递是值传递 B.参数传递时形参和实参占用同一内存单元 C.数组作为整体传递 D.参数传递是地址传递(引用传递) 7. 想要在函数间传递大量数据,应该使用( ) A.值传递 B.地址传递 C.全局变量 D.B和C都可以 8. 下列关于函数声明(函数原型),正确的是( ) A.函数声明可以省略参数名 B.函数声明必须和函数定义完全相同 C.函数声明可以省略返回类型 D.函数声明必须放在函数调用之后 9. 想要在函数调用前定义函数,可以( ) A.在函数调用前定义函数 B.在函数调用前写函数声明 C.将函数定义在main函数内部 D.A和B都可以 10. 下列关于递归函数,正确的是( ) A.递归函数不能调用自己 B.递归函数必须有递归出口条件 C.递归函数比循环效率高 D.递归函数不能使用局部变量 11. 下列函数定义正确的是( ) A.int fun(int a,b) { } B.void fun(int a;int b) { } C.int fun(int a,int b) { } D.void fun() { return 0; } 12. 以下关于函数 return 语句的说法,正确的是( ) A. 所有非void函数必须至少有一个return语句 B. void函数中不能出现return语句 C. return语句可以返回多个值,用逗号分隔 D. 函数中return语句执行后,函数立即结束 13. 想要从函数返回多个值,应该( ) A.使用多个return语句 B.使用指针参数 C.使用全局变量 D.B和C都可以 14. 下列关于数组作为函数参数,正确的是( ) A.数组作为整体传递 B.数组传递的是首元素地址 C.数组不能在函数中修改 D.数组作为函数参数时必须指定大小 15. 下列关于函数的存储类型,正确的是( ) A.函数默认是extern存储类型 B.函数不能声明为static C.函数必须声明为extern D.static函数可以被其他文件调用 16. 想要限制函数只能被本文件使用,应该使用( ) A.extern关键字 B.static关键字 C.void关键字 D.const关键字 17. 下列关于函数的调用,错误的是( ) A.函数可以调用自己 B.函数可以先调用后定义 C.函数不能调用main函数 D.函数可以嵌套调用 18. 下列关于return语句,正确的是( ) A.void函数不能有return语句 B.return语句后面必须有表达式 C.return语句可以出现在函数任何位置 D.一个函数只能有一个return语句 19. 想要在函数间传递字符串,应该使用( ) A.值传递 B.传递字符数组名 C.传递字符串字面量 D.B和C都可以 20. 以下关于函数声明(原型)和函数定义的说法,正确的是( ) // 函数声明 int max(int, int); // 函数定义 int max(int a, int b) { return a > b ? a : b; } A. 声明中的参数名可以省略,定义中的参数名也可以省略 B. 声明和定义的参数名必须完全一致 C. 声明中的参数名只是为了文档说明,编译时被忽略 D. 定义中的参数名是为了在函数体内使用,声明中参数名没有实际作用但可以保留 二、判断题(共10题,每题1分,共10分) 21. C语言函数参数传递是值传递( ) 22. 函数定义可以嵌套(在一个函数内定义另一个函数)( ) 23. 数组作为函数参数时,传递的是数组首元素的地址( ) 24. void类型的函数不能有任何return语句( ) 25. 函数声明(函数原型)可以省略参数名( ) 26. 递归函数必须有递归出口条件,否则会无限递归( ) 27. static函数可以被其他文件中的函数调用( ) 28. 函数可以调用自己,这称为递归调用( ) 29. 想要从函数返回多个值,只能使用全局变量( ) 30. 函数必须在main函数之前定义,否则不能调用( ) 三、填空题(共10空,每空2分,共20分) 31. C语言函数定义的基本格式是:____ 函数名(参数列表) {函数体}。 32. 想要定义没有返回值的函数,返回类型应该是____。 33. C语言函数参数传递方式是____传递。 34. 形参只在函数____时分配内存。 35. 想要在函数间传递大量数据,可以传递____(填地址或值)。 36. 函数声明(函数原型)可以省略____名。 37. 递归函数必须设置____条件,否则会无限递归。 38. 想要限制函数只能被本文件使用,可以使用____关键字。 39. 数组作为函数参数时,传递的是数组____的地址。 40. 想要从函数返回多个值,可以使用____参数。 四、程序综合题(共3题,每题10分,共30分) 41. 程序阅读题:阅读下列程序,写出运行结果。 #include <stdio.h> void swap(int a,int b) { int t; t=a;a=b;b=t; } int main() { int x=3,y=5; swap(x,y); printf("x=%d,y=%d ",x,y); return 0; } 42. 程序填空题:以下程序通过函数求数组元素的和。请将①~④表示的内容填写完整。 #include <stdio.h> int sum(int a[],int n) { int i,s=0; for(i=0;i<n;i++) ①____; ②____; } int main() { int a[5]={1,2,3,4,5}; int r=sum(a,5); printf("sum=%d ",③____); return ④____; } 43.文件satisfy.dat存储客户编号和满意度等级(优秀/良好/及格/不及格)。按等级优先级(优秀>良好>及格>不及格)排序,相同等级按编号升序排列。请完善程序。 #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 150 int grade_level(char g[]); int main() { FILE *fp; int i=0,n; char cid[N][10],grade[N][10]; fp=fopen("satisfy.dat","r"); while(!feof(fp)) { fscanf(fp,"%s%s",cid[i],grade[i]); ①; } n=i; fclose(fp); int j,p; char t1[10],t2[10]; for(i=0;i<n-1;i++) { p=i; for(j=i+1;j<n;j++) { int lv1=grade_level(grade[p]); int lv2=grade_level(grade[j]); if(②||(lv1==lv2&&strcmp(cid[p],cid[j])>0)) p=j; } if(p!=i) { strcpy(t1,cid[p]);strcpy(cid[p],cid[i]);strcpy(cid[i],t1); strcpy(t2,grade[p]);strcpy(grade[p],grade[i]);strcpy(grade[i],t2); } } for(i=0;i<n;i++) printf("%s %s ",cid[i],grade[i]); return 0; } int grade_level(char g[]) { if(strcmp(g,"优秀")==0)return 4; if(strcmp(g,"良好")==0)return 3; if(strcmp(g,"及格")==0)return 2; return 1; } 学科网(北京)股份有限公司 $ 编写说明:江苏省对口招生计算机类《考纲百套卷》,依据《江苏省计算机类专业综合理论考试大纲》编写。本专辑涵盖5门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。 本试卷是第26卷为专业核心模块训练卷,按《C语言》中"C语言卷13——函数的定义、调用与参数传递"范围和要求编写。具体内容为:掌握函数的定义方法;掌握形式参数与实在参数,参数值的传递。 江苏省对口招生职业技能考试 C语言 试卷 (C语言卷13——函数的定义、调用与参数传递) 考试时间:90分钟 满分:100分 一、单项选择题(共20题,每题2分,共40分) 1. 下列关于函数定义,正确的是( ) A.函数定义格式:类型 函数名(参数) 函数体 B.函数定义可以嵌套(函数内定义函数) C.函数定义不能省略返回类型 D.函数名可以省略 【答案】A 【解析】函数定义格式为:返回类型 函数名(参数列表) {函数体}。 2. 想要定义一个没有返回值函数,返回类型应该是( ) A.void类型 B.int类型 C.char类型 D.null类型 【答案】A 【解析】void表示函数没有返回值。 3. 下列关于函数调用,正确的是( ) A.函数调用时参数个数必须与被调用函数定义时相同 B.函数调用时参数类型必须完全相同 C.函数不能调用自己(递归) D.函数必须在main函数之前定义 【答案】A 【解析】函数调用时实参个数必须与形参个数相同。 4. 下列关于C语言函数的形参和实参,说法错误的是( ) A. 形参在函数调用时才分配内存空间 B. 实参可以是常量、变量或表达式 C. 形参的作用域是整个程序 D. 实参和形参之间是值传递关系 【答案】C 【解析】 形参的作用域仅限于函数内部,不是整个程序。A正确:形参只在调用时分配栈内存;B正确:实参可以是任意有确定值的表达式;D正确:C语言采用值传递,形参是实参的副本。 5. 下列关于实际参数(实参),正确的是( ) A.实参可以是常量、变量或表达式 B.实参必须在函数定义时确定 C.实参和形参占用同一内存单元 D.实参必须和形参同名 【答案】A 【解析】实参可以是常量、变量或表达式,在进行函数调用时求值。 6. 下列关于参数传递,正确的是( ) A.C语言函数参数传递是值传递 B.参数传递时形参和实参占用同一内存单元 C.数组作为整体传递 D.参数传递是地址传递(引用传递) 【答案】A 【解析】C语言函数参数传递是值传递,形参是实参的副本。 7. 想要在函数间传递大量数据,应该使用( ) A.值传递(复制所有数据) B.地址传递(传递指针) C.全局变量(不推荐) D.B和C都可以 【答案】D 【解析】可以用指针传递地址,也可以使用全局变量(但不推荐)。 8. 下列关于函数声明(函数原型),正确的是( ) A.函数声明可以省略参数名 B.函数声明必须和函数定义完全相同 C.函数声明可以省略返回类型 D.函数声明必须放在函数调用之后 【答案】A 【解析】函数声明(原型)可以只写参数类型,省略参数名。 9. 想要在函数调用前定义函数,可以( ) A.在函数调用前定义函数 B.在函数调用前写函数声明 C.将函数定义在main函数内部 D.A和B都可以 【答案】D 【解析】可以在调用前定义函数,也可以在调用前写函数声明。 10. 下列关于递归函数,正确的是( ) A.递归函数不能调用自己 B.递归函数必须有递归出口条件 C.递归函数比循环效率高 D.递归函数不能使用局部变量 【答案】B 【解析】递归函数必须设置递归出口条件,否则会无限递归。 11. 下列函数定义正确的是( ) A.int fun(int a,b) { }(b缺少类型) B.void fun(int a;int b) { }(分号错误) C.int fun(int a,int b) { }(正确) D.void fun() { return 0; }(返回类型不匹配) 【答案】C 【解析】函数定义时参数必须分别指定类型。 12. 以下关于函数 return 语句的说法,正确的是( ) A. 所有非void函数必须至少有一个return语句 B. void函数中不能出现return语句 C. return语句可以返回多个值,用逗号分隔 D. 函数中return语句执行后,函数立即结束 【答案】D 【解析】A :非void函数如果所有分支都有返回值则可以,但编译时可能警告,语法上不强制"必须" B :void函数可以写 return; 提前返回 C :return只能返回一个值(可以返回结构体封装多个值,但不能用逗号返回多个) D :return执行后立即结束当前函数,返回调用处 13. 想要从函数返回多个值,应该( ) A.使用多个return语句 B.使用指针参数(传递地址) C.使用全局变量(不推荐) D.B和C都可以 【答案】D 【解析】可以用指针参数返回多个值,也可以使用全局变量(但不推荐)。 14. 下列关于数组作为函数参数,正确的是( ) A.数组作为整体传递(复制所有元素) B.数组传递的是首元素地址 C.数组不能在函数中修改 D.数组作为函数参数时必须指定大小 【答案】B 【解析】数组作为函数参数时,传递的是数组首元素的地址(指针)。 15. 下列关于函数的存储类型,正确的是( ) A.函数默认是extern存储类型 B.函数不能声明为static C.函数必须声明为extern D.static函数可以被其他文件调用 【答案】A 【解析】函数默认具有extern存储类型,可以被其他文件调用。 16. 想要限制函数只能被本文件使用,应该使用( ) A.extern关键字 B.static关键字 C.void关键字 D.const关键字 【答案】B 【解析】static函数只能被本文件中的函数调用。 17. 下列关于函数的调用,错误的是( ) A.函数可以调用自己(递归) B.函数可以先调用后定义(需要函数声明) C.函数不能调用main函数 D.函数可以嵌套调用 【答案】C 【解析】main函数也可以被其他函数调用(虽然不常见)。 18. 下列关于return语句,正确的是( ) A.void函数不能有return语句 B.return语句后面必须有表达式 C.return语句可以出现在函数任何位置 D.一个函数只能有一个return语句 【答案】C 【解析】return语句可以出现在函数任何位置,用于提前返回。 19. 想要在函数间传递字符串,应该使用( ) A.值传递(复制字符串) B.传递字符数组名(地址) C.传递字符串字面量 D.B和C都可以 【答案】D 【解析】可以传递字符数组名(地址),也可以传递字符串字面量(地址常量)。 20. 以下关于函数声明(原型)和函数定义的说法,正确的是( ) // 函数声明 int max(int, int); // 函数定义 int max(int a, int b) { return a > b ? a : b; } A. 声明中的参数名可以省略,定义中的参数名也可以省略 B. 声明和定义的参数名必须完全一致 C. 声明中的参数名只是为了文档说明,编译时被忽略 D. 定义中的参数名是为了在函数体内使用,声明中参数名没有实际作用但可以保留 【答案】D 【解析】A :定义中参数名不能省略,否则函数体内无法引用参数 B :参数名不一致完全合法,编译器只检查类型 C :声明中的参数名虽然被编译器忽略,但不能简单说"为了文档",因为它确实会被检查类型是否匹配——更准确的说法是"声明中参数名是可选的,仅起文档作用"(但C选项后半句"编译时被忽略"没错,只是表述不完整);实际上D更严谨 D :定义必须命名参数以便使用,声明中参数名是可选且无实际编译影响的 二、判断题(共10题,每题1分,共10分) 21. C语言函数参数传递是值传递( ) 【答案】√ 【解析】C语言函数参数传递是值传递,形参是实参的副本。 22. 函数定义可以嵌套(在一个函数内定义另一个函数)( ) 【答案】× 【解析】C语言不允许函数嵌套定义,但可以嵌套调用。 23. 数组作为函数参数时,传递的是数组首元素的地址( ) 【答案】√ 【解析】数组名是常量指针,传递的是首元素地址。 24. void类型的函数不能有任何return语句( ) 【答案】× 【解析】void函数可以有不带值的return;语句,用于提前返回。 25. 函数声明(函数原型)可以省略参数名( ) 【答案】√ 【解析】函数声明只需指定参数类型,参数名可以省略。 26. 递归函数必须有递归出口条件,否则会无限递归( ) 【答案】√ 【解析】递归函数必须设置递归出口条件。 27. static函数可以被其他文件中的函数调用( ) 【答案】× 【解析】static函数只能被本文件中的函数调用。 28. 函数可以调用自己,这称为递归调用( ) 【答案】√ 【解析】函数调用自己是合法的,称为递归调用。 29. 想要从函数返回多个值,只能使用全局变量( ) 【答案】× 【解析】也可以用指针参数(传递地址)来返回多个值。 30. 函数必须在main函数之前定义,否则不能调用( ) 【答案】× 【解析】可以在调用前写函数声明,函数定义可以在任何位置。 三、填空题(共10空,每空2分,共20分) 31. C语言函数定义的基本格式是:____ 函数名(参数列表) {函数体}。 【答案】返回类型 【解析】函数定义格式为:返回类型 函数名(参数列表) {函数体}。 32. 想要定义没有返回值的函数,返回类型应该是____。 【答案】void 【解析】void表示函数没有返回值。 33. C语言函数参数传递方式是____传递。 【答案】值 【解析】C语言函数参数传递是值传递。 34. 形参只在函数____时分配内存。 【答案】调用 【解析】形参在函数被调用时分配内存。 35. 想要在函数间传递大量数据,可以传递____(填地址或值)。 【答案】地址(指针) 【解析】传递指针可以避免复制大量数据。 36. 函数声明(函数原型)可以省略____名。 【答案】参数 【解析】函数声明只需指定参数类型。 37. 递归函数必须设置____条件,否则会无限递归。 【答案】递归出口 【解析】递归必须能到达出口条件。 38. 想要限制函数只能被本文件使用,可以使用____关键字。 【答案】static 【解析】static函数具有文件作用域。 39. 数组作为函数参数时,传递的是数组____的地址。 【答案】首元素 【解析】数组名是首元素的地址。 40. 想要从函数返回多个值,可以使用____参数。 【答案】指针(地址) 【解析】指针参数可以实现“多值返回”。 四、程序综合题(共3题,每题10分,共30分) 41. 程序阅读题:阅读下列程序,写出运行结果。 #include <stdio.h> void swap(int a,int b) { int t; t=a;a=b;b=t; } int main() { int x=3,y=5; swap(x,y); printf("x=%d,y=%d ",x,y); return 0; } 【答案】x=3,y=5 【解析】 函数 swap 采用值传递,形参 a、b 的交换不会影响实参 x、y; 调用 swap 后 x、y 仍保持原值 3 和 5; 最终按格式输出 x=3,y=5。 42. 程序填空题:以下程序通过函数求数组元素的和。请将①~④表示的内容填写完整。 #include <stdio.h> int sum(int a[],int n) { int i,s=0; for(i=0;i<n;i++) ①____; ②____; } int main() { int a[5]={1,2,3,4,5}; int r=sum(a,5); printf("sum=%d ",③____); return ④____; } 【答案】① s+=a [i] ② return s ③ r ④ 0 【解析】 ① 循环累加数组元素到变量 s 中; ② 将累加和 s 作为函数返回值; ③ 输出接收返回值的变量 r; ④ main 函数正常结束返回 0。 43.文件satisfy.dat存储客户编号和满意度等级(优秀/良好/及格/不及格)。按等级优先级(优秀>良好>及格>不及格)排序,相同等级按编号升序排列。请完善程序。 #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 150 int grade_level(char g[]); int main() { FILE *fp; int i=0,n; char cid[N][10],grade[N][10]; fp=fopen("satisfy.dat","r"); while(!feof(fp)) { fscanf(fp,"%s%s",cid[i],grade[i]); ①; } n=i; fclose(fp); int j,p; char t1[10],t2[10]; for(i=0;i<n-1;i++) { p=i; for(j=i+1;j<n;j++) { int lv1=grade_level(grade[p]); int lv2=grade_level(grade[j]); if(②||(lv1==lv2&&strcmp(cid[p],cid[j])>0)) p=j; } if(p!=i) { strcpy(t1,cid[p]);strcpy(cid[p],cid[i]);strcpy(cid[i],t1); strcpy(t2,grade[p]);strcpy(grade[p],grade[i]);strcpy(grade[i],t2); } } for(i=0;i<n;i++) printf("%s %s ",cid[i],grade[i]); return 0; } int grade_level(char g[]) { if(strcmp(g,"优秀")==0)return 4; if(strcmp(g,"良好")==0)return 3; if(strcmp(g,"及格")==0)return 2; return 1; } 【答案】① i++ ② lv1 < lv2 【解析】 ① 每读取一条数据,下标 i 自增 1 统计总人数; ② 按等级优先级排序,等级值越小优先级越低,满足 lv1 < lv2 则交换。 学科网(北京)股份有限公司 $

资源预览图

第26卷 C语言-C语言卷13——函数的定义、调用与参数传递——江苏省计算机类——考纲百套卷
1
第26卷 C语言-C语言卷13——函数的定义、调用与参数传递——江苏省计算机类——考纲百套卷
2
第26卷 C语言-C语言卷13——函数的定义、调用与参数传递——江苏省计算机类——考纲百套卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。