第六章 函数《编程语言基础-C语言》(高教版第五版)章节过关卷

2025-03-04
| 2份
| 22页
| 244人阅读
| 4人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 C语言程序设计高教版(第五版)全一册
年级 高一
章节 第6章 函数
类型 作业-单元卷
知识点 函数
使用场景 同步教学-单元练习
学年 2025-2026
地区(省份) 全国
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 238 KB
发布时间 2025-03-04
更新时间 2025-03-04
作者 糖醋排骨009
品牌系列 学易金卷·阶段检测模拟卷
审核时间 2025-03-04
下载链接 https://m.zxxk.com/soft/50787451.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

《编程语言基础——C语言》高等教育出版社(第五版) 第六章 函数 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共20小题,每题2分,共40分) 1. C语言规定,简单变量作为实参时,它对应形参之间的数据传递方式是( ) A.地址传递 B.单向值传递 C.由实参传给形参,再由形参传回给实参 D.由用户指定传递方式 2. 在C语言中,关于函数的说法不正确的一项是( ) A.实参可以是常量、变量或表达式 B.实参与对应的形参占用共同的存储单元 C.实参与形参的类型不一致时,以形参的类型为准 D.函数的类型与返回值的类型不一致时,以函数的类型为准 3. 若在程序中,使用数组名作为函数调用的实参,则传递给形参的是( ) A.数组的首地址 B.数组的第一个元素的值 C.数组中全部元素的值 D.数组元素的个数 4. 下列关于函数的叙述中,正确的一项是( ) A.调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B.C函数既可以嵌套定义又可以递归调用 C.函数必须有返回值,否则不能使用函数 D.C程序中有调用关系的所有函数必须放在同一个源程序文件中 5. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int fun( int n) { int m=0,f=-1,i; for(i=1;i<=n;i++) { m=m+i* f; f=-f ; } return m;} main( ) { printf("m=%d ", fun(20)); getch();} A.m=10 B.m=-10 C.m=11 D.m=-11 6. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int fun(int a, int b) { if(a>b) return(a*b); else return(a-b); } int main( ) { int x=8, y=16, z=6, r; r=fun(fun(x,y),2*z); printf("%d ", r); getch();} A.20 B.-20 C.-19 D.19 7. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int f(int x, int y) { return (y-x)*x; } int main( ) {int a=8,b=9,c=10,d; d=f(f(a,c),f(a,b)-f(c,b)); printf("%d ",d);getch();} A.32 B.-32 C.42 D.-42 8. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> void num( ) {extern int x,y;int a=15,b=10; x=a*b; y=a+b;} int x,y; int main( ) { int a=9,b=6; x=a+b;y=a-b; num( ); printf("%d,%d ",x,y);getch();} A. 150,25 B.15,3 C.3,15 D.不确定值 9. 在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( ) A. extern B.register C.static D.auto 10. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int f(int a); int main( ) { int a=2,i; for(i=0;i<2;i++) printf("%2d",f(a));getch();} int f(int a) { int b=0;static int c=3; b++;c++; return(a+ b+c);} A.7 9 B.7 8 C.7 7 D.7 10 11. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> void fun(int x) { if(x/2>0) fun(x/2-2); printf("%d ",x);} int main( ) { fun(10); printf(" ");getch();} A.-1 3 B.3 10 C.3 D. -1 3 10 12. 以下程序的运行结果( ) #include<stdio.h> #include<conio.h> double max (double a,double b); int main( ) {double x=8,y=11; printf("%lf ",max(y,x));getch();} double max(double a,double b) {return(a>b ? b-a:a-b);} A.3.000000 B. -3.000000 C.-3 D.3 13. 若定义时没有指定函数的返回值类型,则该函数的隐含类型是( ) A.float B.int C.long D.double 14. 对于一个正常运行和正常退出的程序,以下叙述正确的是( ) A.程序从 main()函数第一条可执行语句开始执行,在main函数结束 B.程序的执行总是从程序的第一个函数开始,在main(函数结束 C.程序的执行总是从main()函数开始,在最后一个函数中结束 D.从程序的第一个函数开始,在程序的最后一个函数中结束 15. 以下说法正确的是( ) A.实参和与其对应的形参各自占用独立的存储单元 B.实参和与其对应的形参共同占用相同的存储单元 C.当实参和与其对应的形参同名时才共同占用相同的存储单元 D.形参是虚拟的,在函数没被调用时不占用存储单元 16. 调用一个没有return语句的函数,以下说法正确的是( ) A.该函数没有返回值 B.该函数返回若干个系统默认值 C.该函数返回一个用户希望的值 D.该函数返回一个随机数 17. 关于函数声明,以下不正确的说法是( ) A.如果函数定义出现在函数调用之前,可以不必加函数原型声明 B.一个函数的原型只需要在所有主调函数之前声明一次 C.函数在调用之前,一定要声明函数原型,保证编译系统进行全面的调用检查 D.调用标准库函数前不需要函数原型声明 18. 函数的实参与形参应有如下关系( ) A.个数相同 B.顺序相同 C.类型相同或兼容 D.上述三点均需具备 19. 关于递归函数以下说法错误的是( ) A.C语言允许直接递归调用和间接递归调用 B.递归函数通常有出口结束递归 C.递归函数的效率一定比功能等价的非递归函数效率低许多 D.递归函数通常有书写简单和形式直观的优点 20. 关于用数组名作为函数参数以下叙述中不正确的是( ) A.实参向形参传递的是数组的起始地址 B.实参向形参传递的是首个元素的地址 C.函数体可以用sizeof()运算符测试数组的大小 D.形参和实参指向同一数组,函数体修改形参数组元素则实参数组 二、程序运行结果题(本题共7小题,每题3分,共21分) 21. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int max(int x,int y); int main( ) { int a=8,b=2,c; c=max(a,b); printf("max is %d ",c); getch();} int max(int x,int y) { int z;z=(x>y)? x:y; return(z);} 22. 若输入的值是-189,则以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> void fun(int n); int main( ) { int n; scanf("%d",&n);printf("%d=",n); if(n<0) printf("-");n=abs(n); fun(n);getch();} void fun(int n) {int k,r; for(k=2;k<=n/2;k++) {r=n%k; while(r==0) {printf("%d",k);n=n/k; if(n>1) printf(" * ");r=n%k;}} if(n!=1) printf("%d ",n);} 23. 若输入一个整数20,则以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int sub(int a); int main( ) { int a,e[10],c,i=0; printf("输入一整数 "); scanf("%d",&a); while(a!=0) { c=sub(a);a=a/2;e[i]=c;i++; } for(;i>0; i--)printf("%d",e[i-1]); getch();} int sub(int a) { int c;c=a%2;return c;} 24. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include <math.h> int fun(int y, int x) {int z;z=abs(x+y);return(z);} int main( ) {int a=-1,b=-5,c; c=fun(a,b); printf("%d",c);getch();} 25. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include <math.h> int sub(int n); int main( ) { int i=15; printf("%d ",sub(i));getch();} int sub(int n) { int a;if(n==1) return 1; a=n+sub(n-1);return(a); } 26. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include <math.h> void f(int a[ ]) { int i=0; while(a[i]<=10) { printf("%d ",a[i]); i++; } } int main( ) {int a[ ]={1,8,3,9,11,9,7};f(a+1); getch();} 27. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int func(int a[ ] [3]); int main( ) { int a[3][3]={1,3,5,7,9,11,13,15,17};int sum; sum=func(a);printf("sum=%d ",sum); getch();} int func(int a[ ][3]) {int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) { a[i][j]=i+j; if(i==j) sum=sum+a[i][j];} return(sum);} 三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 28. 以下函数 fun的功能是:将输入的大写字母,先转换为与其对应的小写字母, 然后再转换成该小写字母后的第3个字母,返回后输出。例如,若输入的字母为E,输出的字母则为h,若输入的字母为Y,输出的字母则为b。请填空。 #include<stdio.h> #include<conio.h> char fun(char c) {【1】; if(【2】) c=c+3; else if(c>='x'&&c<='z') 【3】; return c;} main( ) { char c; c=【4】; c=fun(c);putchar(c);getch();} 29. 以下函数 fun的功能是:统计一个数中位值为零的个数,以及位值为1的个数。若输入1110011011,则输出位值为零的个数为3,位值为1的个数为7,请填空。 #include<stdio.h> #include<conio.h> void fun(long n) {int coun0=0,counl=0,m; do {m=【1】; if(m==0) coun0++; if(m==1) counl++;n=【2】; } while(【3】); printf("coun0=%d,counl=%d ",coun0,counl);} int main( ) {long n; printf("input n: ");scanf("%ld",&n);printf("n=%ld ",n); 【4】;getch();} 四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共15分) 30. 下列程序的功能是打印出1000以内的所有水仙花数,该程序有三处错误,请改正。 L1 #include<stdio.h> L2 #include<conio.h> L3 int f(int n) L4 {int i,j,k; L5 i=n/100; L6 j=n%10-i* 10; L7 k=n%10; L8 if(i*100+j* 10+k==i*3+j*3+k*3) return n; L9 else return 0;} L10 int main( ) L11 { int n,k; L12 for(n=100;n<1000;n++) L13 { k=f(n); L14 if(k==0) printf("%d ",k);} L15 printf(" "); getch();} 以下程序的功能是用二分法求方程的根,并要求绝对误差不超过0.001。程序中有二处错误,请改正。 L1 #include<stdio.h> L2 #include<conio.h> L3 float f(float x); L4 {return(2*x*x*x-4*x*x+3*x-6);} L5 int main( ) L6 { float m=-100,n=90,r; L7 r=(m+n)/2; L8 while(f(r) * f(n)!=0) L9 {if(f(r)*f(n)>0) m=r; L10 else n=r; L11 if(n-m<0.001) break; L12 r=(m+n)/2;} L13 printf("The fang cheng jie is %6.3f ",r); L14 getch();} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 《编程语言基础——C语言》高等教育出版社(第五版) 第六章 函数 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共20小题,每题2分,共40分) 1.C语言规定,简单变量作为实参时,它对应形参之间的数据传递方式是( ) A.地址传递 B.单向值传递 C.由实参传给形参,再由形参传回给实参 D.由用户指定传递方式 答案:B 2.在C语言中,关于函数的说法不正确的一项是( ) A.实参可以是常量、变量或表达式 B.实参与对应的形参占用共同的存储单元 C.实参与形参的类型不一致时,以形参的类型为准 D.函数的类型与返回值的类型不一致时,以函数的类型为准 答案:B 3.若在程序中,使用数组名作为函数调用的实参,则传递给形参的是( ) A.数组的首地址 B.数组的第一个元素的值 C.数组中全部元素的值 D.数组元素的个数 答案:A 4.下列关于函数的叙述中,正确的一项是( ) A.调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B.C函数既可以嵌套定义又可以递归调用 C.函数必须有返回值,否则不能使用函数 D.C程序中有调用关系的所有函数必须放在同一个源程序文件中 答案:A 5.以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int fun( int n) { int m=0,f=-1,i; for(i=1;i<=n;i++) { m=m+i* f; f=-f ; } return m;} main( ) { printf("m=%d ", fun(20)); getch();} A.m=10 B.m=-10 C.m=11 D.m=-11 答案:A 6.以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int fun(int a, int b) { if(a>b) return(a*b); else return(a-b); } int main( ) { int x=8, y=16, z=6, r; r=fun(fun(x,y),2*z); printf("%d ", r); getch();} A.20 B.-20 C.-19 D.19 答案:B 7.以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int f(int x, int y) { return (y-x)*x; } int main( ) {int a=8,b=9,c=10,d; d=f(f(a,c),f(a,b)-f(c,b)); printf("%d ",d);getch();} A.32 B.-32 C.42 D.-42 答案:A 8.以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> void num( ) {extern int x,y;int a=15,b=10; x=a*b; y=a+b;} int x,y; int main( ) { int a=9,b=6; x=a+b;y=a-b; num( ); printf("%d,%d ",x,y);getch();} A. 150,25 B.15,3 C.3,15 D.不确定值 答案:A 9.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( ) A. extern B.register C.static D.auto 答案:C 10.以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int f(int a); int main( ) { int a=2,i; for(i=0;i<2;i++) printf("%2d",f(a));getch();} int f(int a) { int b=0;static int c=3; b++;c++; return(a+ b+c);} A.7 9 B.7 8 C.7 7 D.7 10 答案:B 11.以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> void fun(int x) { if(x/2>0) fun(x/2-2); printf("%d ",x);} int main( ) { fun(10); printf(" ");getch();} A.-1 3 B.3 10 C.3 D. -1 3 10 答案:D 12.以下程序的运行结果( ) #include<stdio.h> #include<conio.h> double max (double a,double b); int main( ) {double x=8,y=11; printf("%lf ",max(y,x));getch();} double max(double a,double b) {return(a>b ? b-a:a-b);} A.3.000000 B. -3.000000 C.-3 D.3 答案:B 13.若定义时没有指定函数的返回值类型,则该函数的隐含类型是( ) A.float B.int C.long D.double 答案:B 14.对于一个正常运行和正常退出的程序,以下叙述正确的是( ) A.程序从 main()函数第一条可执行语句开始执行,在main函数结束 B.程序的执行总是从程序的第一个函数开始,在main(函数结束 C.程序的执行总是从main()函数开始,在最后一个函数中结束 D.从程序的第一个函数开始,在程序的最后一个函数中结束 答案:A 15.以下说法正确的是( ) A.实参和与其对应的形参各自占用独立的存储单元 B.实参和与其对应的形参共同占用相同的存储单元 C.当实参和与其对应的形参同名时才共同占用相同的存储单元 D.形参是虚拟的,在函数没被调用时不占用存储单元 答案:D 16.调用一个没有return语句的函数,以下说法正确的是( ) A.该函数没有返回值 B.该函数返回若干个系统默认值 C.该函数返回一个用户希望的值 D.该函数返回一个随机数 答案:A 17.关于函数声明,以下不正确的说法是( ) A.如果函数定义出现在函数调用之前,可以不必加函数原型声明 B.一个函数的原型只需要在所有主调函数之前声明一次 C.函数在调用之前,一定要声明函数原型,保证编译系统进行全面的调用检查 D.调用标准库函数前不需要函数原型声明 答案:C 18.函数的实参与形参应有如下关系( ) A.个数相同 B.顺序相同 C.类型相同或兼容 D.上述三点均需具备 答案:D 19.关于递归函数以下说法错误的是( ) A.C语言允许直接递归调用和间接递归调用 B.递归函数通常有出口结束递归 C.递归函数的效率一定比功能等价的非递归函数效率低许多 D.递归函数通常有书写简单和形式直观的优点 答案:C 20.关于用数组名作为函数参数以下叙述中不正确的是( ) A.实参向形参传递的是数组的起始地址 B.实参向形参传递的是首个元素的地址 C.函数体可以用sizeof()运算符测试数组的大小 D.形参和实参指向同一数组,函数体修改形参数组元素则实参数组 答案:C 二、程序运行结果题(本题共7小题,每题3分,共21分) 21.以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int max(int x,int y); int main( ) { int a=8,b=2,c; c=max(a,b); printf("max is %d ",c); getch();} int max(int x,int y) { int z;z=(x>y)? x:y; return(z);} 答案:max is 8 22.若输入的值是-189,则以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> void fun(int n); int main( ) { int n; scanf("%d",&n);printf("%d=",n); if(n<0) printf("-");n=abs(n); fun(n);getch();} void fun(int n) {int k,r; for(k=2;k<=n/2;k++) {r=n%k; while(r==0) {printf("%d",k);n=n/k; if(n>1) printf(" * ");r=n%k;}} if(n!=1) printf("%d ",n);} 答案:-189=-3 * 3 * 3 * 7 23.若输入一个整数20,则以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int sub(int a); int main( ) { int a,e[10],c,i=0; printf("输入一整数 "); scanf("%d",&a); while(a!=0) { c=sub(a);a=a/2;e[i]=c;i++; } for(;i>0; i--)printf("%d",e[i-1]); getch();} int sub(int a) { int c;c=a%2;return c;} 答案:10100 24.以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include <math.h> int fun(int y, int x) {int z;z=abs(x+y);return(z);} int main( ) {int a=-1,b=-5,c; c=fun(a,b); printf("%d",c);getch();} 答案:6 25.以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include <math.h> int sub(int n); int main( ) { int i=15; printf("%d ",sub(i));getch();} int sub(int n) { int a;if(n==1) return 1; a=n+sub(n-1);return(a); } 答案:120 26.以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include <math.h> void f(int a[ ]) { int i=0; while(a[i]<=10) { printf("%d ",a[i]); i++; } } int main( ) {int a[ ]={1,8,3,9,11,9,7};f(a+1); getch();} 答案:8 3 9 27.以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int func(int a[ ] [3]); int main( ) { int a[3][3]={1,3,5,7,9,11,13,15,17};int sum; sum=func(a);printf("sum=%d ",sum); getch();} int func(int a[ ][3]) {int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) { a[i][j]=i+j; if(i==j) sum=sum+a[i][j];} return(sum);} 答案:sum=6 三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 28.以下函数 fun的功能是:将输入的大写字母,先转换为与其对应的小写字母, 然后再转换成该小写字母后的第3个字母,返回后输出。例如,若输入的字母为E,输出的字母则为h,若输入的字母为Y,输出的字母则为b。请填空。 #include<stdio.h> #include<conio.h> char fun(char c) {【1】; if(【2】) c=c+3; else if(c>='x'&&c<='z') 【3】; return c;} main( ) { char c; c=【4】; c=fun(c);putchar(c);getch();} 答案: 【1】c=c+32 【2】c>='a'&&c<='w' 【3】c=c-26+3 【4】getchar( ) 29.以下函数 fun的功能是:统计一个数中位值为零的个数,以及位值为1的个数。若输入1110011011,则输出位值为零的个数为3,位值为1的个数为7,请填空。 #include<stdio.h> #include<conio.h> void fun(long n) {int coun0=0,counl=0,m; do {m=【1】; if(m==0) coun0++; if(m==1) counl++;n=【2】; } while(【3】); printf("coun0=%d,counl=%d ",coun0,counl);} int main( ) {long n; printf("input n: ");scanf("%ld",&n);printf("n=%ld ",n); 【4】;getch();} 答案: 【1】n%10 【2】n/10 【3】n 【4】fun(n) 四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共15分) 30.下列程序的功能是打印出1000以内的所有水仙花数,该程序有三处错误,请改正。 L1 #include<stdio.h> L2 #include<conio.h> L3 int f(int n) L4 {int i,j,k; L5 i=n/100; L6 j=n%10-i* 10; L7 k=n%10; L8 if(i*100+j* 10+k==i*3+j*3+k*3) return n; L9 else return 0;} L10 int main( ) L11 { int n,k; L12 for(n=100;n<1000;n++) L13 { k=f(n); L14 if(k==0) printf("%d ",k);} L15 printf(" "); getch();} 答案: 【1】L6 j=n/10-i* 10; 【2】L8 if(i*100+j* 10+k==i*i*i+j*j*j+k*k*k) return n; 【3】L14 if(k!=0) printf("%d ",k);} 31.以下程序的功能是用二分法求方程的根,并要求绝对误差不超过0.001。程序中有二处错误,请改正。 L1 #include<stdio.h> L2 #include<conio.h> L3 float f(float x); L4 {return(2*x*x*x-4*x*x+3*x-6);} L5 int main( ) L6 { float m=-100,n=90,r; L7 r=(m+n)/2; L8 while(f(r) * f(n)!=0) L9 {if(f(r)*f(n)>0) m=r; L10 else n=r; L11 if(n-m<0.001) break; L12 r=(m+n)/2;} L13 printf("The fang cheng jie is %6.3f ",r); L14 getch();} 答案: 【1】L3 float f(float x) 【2】L9 {if(f(r)*f(n)<0) m=r; 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

第六章  函数《编程语言基础-C语言》(高教版第五版)章节过关卷
1
第六章  函数《编程语言基础-C语言》(高教版第五版)章节过关卷
2
第六章  函数《编程语言基础-C语言》(高教版第五版)章节过关卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。