任务29:函数的嵌套调用及实际应用 《编程语言-C语言》45分钟专题训练

| 2份
| 33页
| 74人阅读
| 1人下载

内容正文:

湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目五: 函数 第29卷: 函数的嵌套调用及实际应用 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.下列叙述中,正确的一项是( ) A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用都可以嵌套 D.函数的定义和函数的调用都不可以嵌套 2.以下程序是用来计算函数f(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请你选择填空。( ) float f(float a,float b) {float s; s=【 】; return s;} main() {float x,y,z; float d; scanf("%f%f%f",&x,&y,&z); d=f(x+y,x-y)+f(z+y,z-y); printf("%f ",d); getch();} A.(a+b)/(a-b) B.a/b C.(a-b)/(a+b) D.b/a 3.执行以下程序段的输出结果是( ) static int f=1; int fun(int n) {f=f+n;return f;} main() {int i; for(i=7;i<=10;i++) printf("%d ",fun(i)); getch();} A.8 16 25 30 B.4 8 16 24 C.8 16 25 35 D.4 16 32 64 4.执行以下程序段的输出结果是( ) int f(int x,int y) {return (y+x);} main() {int a=3,b=4,c=5,d=6,e=7; printf("%d",f(f(f(f(a,b),f(a,c)),d),e)); getch();} A.20 B.24 C.28 D.32 5.执行以下程序段的输出结果是( ) long f1(int p) {int k,r; k=p*p;r=k*k;return r;} main() {int i; long s=0; for(i=2;i<=3;i++) s=s+f1(i); printf("s=%d",s);getch();} A.s=90 B.s=93 C.s=95 D.s=97 6.执行以下程序段的输出结果是( ) int c=3; void f(int a) {int b=0; a=c++,b++;} main() {int a=3,i; for(i=0;i<5;i++) f(a+++1); printf("%d",c); getch();} A.8 B.9 C.10 D.11 7.执行以下程序段的输出结果是( ) int f(int a) {int b=0; static int c=3; a=c++,b++; return a;} main() {int a=3,i,k; for(i=0;i<3;i++) k=f(a++); printf("k=%d",k); getch();} A.k=5 B.k=4 C.k=3 D.k=2 8.执行以下程序段的输出结果是( ) void f(int b[ ]) {int j,i; for(i=0;i<2;i++) for(j=0;j<3;j++) b[j]=b[j]*2;} main() {int s[3]={1,2,3},k; f(s); for(k=0;k<3;k++) printf("%d",s[k]); getch();} A.4811 B.1811 C.4809 D.4812 9.执行以下程序段的输出结果是( ) void fun(int b[3]) {int j; for(j=0;j<3;j++) b[j]=j*2;} main() {int s[3]={1,2,3},k; fun(s); for(k=0;k<3;k++) printf("%d",s[k]); getch();} A.024 B.123 C.012 D.234 10.执行以下程序段的输出结果是( ) int p(int n) {int s=0; while(n) {s=s*10+n%10; n=n/10;} return s;} main() {printf("p=%d ",p(345)); getch();} A.p=345 B.p=354 C.p=543 D.p=534 11.执行以下程序段的输出结果是( ) int fun(int a,int b) {return a=a+b,a%b;} main() {int x=9,y=7,z=3,rels; rels=fun(fun(x,y),z); printf("%d",1<<rels); getch();} A.3 B.4 C.7 D.9 12.执行以下程序段的输出结果是( ) int fun(int n) {return n/10+n%10;} main() {int k,i=123456; k=fun(fun(fun(fun(fun(i))))); printf("%d",k); getch();} A.3 B.4 C.5 D.6 13.执行以下程序段的输出结果是( ) double fun(int a,int b,int c) {double s; s=a%b*c; return s;} main() {int a=2,b=3,c=5; float d; d=fun(a,b,c); printf("%f",d);getch();} A.10.000000 B.2.000000 C.10 D.2 14.执行以下程序段的输出结果是( ) char fun(char a,int b) {char k; k=a+b; return k;} main() {char a='A'; int b=10; a=fun(a,b); putchar(a);getch();} A.K B.L C.A D.J 15.执行以下程序段的输出结果是( ) int i=5; int fact() {if(i==0) return 1; else {i--;return ((i+1)*fact());}} main() {printf("fact=%d",fact()); getch();} A.fact=2 B.fact=6 C.fact=24 D.fact=120 16.执行以下程序段的输出结果是( ) void del(char s[ ],char c) {int i,j; for(i=j=0;s[i]!='\0';i++) if(s[i]!=c) s[j++]=s[i];s[j]='\0';} main() {char s[ ]="ABCDACD"; del(s,'A'); printf("%s",s);getch();} A.ABCDACD B.BCDACD C.AA D.BCDCD 17.执行以下程序段的输出结果是( ) int fun(int n) {int m=1; do{m*=n%10;n/=10;}while(n); return m;} main() {int n=234; printf("s=%d ",fun(n)); getch();} A.s=6 B.s=8 C.s=12 D.s=24 18.执行以下程序段的输出结果是( ) void fun(char a[ ],char b[ ],int n) {int c; for(c=0;c<n;c++) b[c]=(a[c]-'A'-3+26)%26+'A';b[n]='\0';} main() {char s1[5]="ABCD",s2[5]; fun(s1,s2,5); puts(s2);getch();} A.XYZA1 B.ABCD1 C.ABXY1 D.XYZA2 19.执行以下程序段的输出结果是( ) int fun(int a,int b) {return a+b;} main() {int x=6,y=7,z=8,r; r=fun(fun(x,y),z--); printf("%d",r); getch();} A.15 B.20 C.21 D.31 20.执行以下程序段的输出结果是( ) int f(int x,int y) {return ((y-x)*x);} main() {int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf("%d",d); getch();} A.7 B.8 C.9 D.10 21.执行以下程序段的输出结果是( ) int f(int x); main() {int n=2,m; m=f(f(f(n))); printf("%d",m);getch();} int f(int x) {return x*x;} A.256 B.128 C.16 D.255 22.执行以下程序段的输出结果是( ) int fun(int x,int y) {if(x==y) return (x); else return ((x+y)/2);} main() {int a=4,b=5,c=6; printf("%d ",fun(a*2,fun(b,c))); getch();} A.3 B.6 C.8 D.9 23.执行以下程序段的输出结果是( ) 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); printf("%f",w);getch();} A.5.000000 B.5.0 C.5.21 D.0.000000 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void fac2(int); void fac1(int n) {printf("*"); if(n>0) fac2(n-1);} void fac2(int n) {printf("#"); if(n>0) fac2(--n);} main() {fac1(3);getch();} 25.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int max(int x, int y); main() { int a=2,b=5,c=18,d=0,e; e=max(max(max(a,b),c),d); printf("Max is %d",c);getch();} int max(int x, int y) { int z; z=x>y?x:y; return(z);} 26.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int f(int x,int y) { return y+x; } main() { int a=3,b=4,c=5,d; d=f(f(f(3,4),f(3,5)),f(4,5)); printf("%d ",d);getch();} 27.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int f(int x[ ],int n) {int i,r=1; for(i=0;i<=n;i++) r=r*x[i]; return r;} main() {int s,a[ ]={2,3,1,5,4,3,6,4}; s=f(a,5); printf("%d ",s);getch();} 28.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int fun() {static int x=1; x*=2; return x;} main() {int i,s=1; for(i=1;i<=4;i++) s*=fun(); printf("%d",s); getch();} 29.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int func(int a,int b) {int c; c=a+b; return c;} main() {int x=6,y=7,z=8,r; r=func((x--,y++,z+y),z--); printf("%d",r); getch();} 30.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void fun(int x) {static int y=5; x++; printf("%d+%d=%d ",x,y++,x+y);} main() {int i; for(i=1;i<=3;i++) fun(i); getch();} 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.下列程序的功能是:求 的值。程序中有三处错误,请改正。 L1 #include <stdio.h> L2 #include<conio.h> L3 float p(long i) L4 {long k=1,j; L5 for(j=1;j<=i;j++) L6 k=k/j; L7 return ((float)(k));} L8 float s(long n) L9 {float sum=0.0; L10 long k; L11 for(k=1;k<=n;k++) L12 sum=p(k); L13 return (sum);} L14 float f(long x,long y) L15 {float f1; L16 f1=s(y)/s(x); L17 return (f1);} L18 main() L19 {long x,y; L20 printf("请输入x和y的值: "); L21 scanf("%d,%d",&x,&y); L22 printf("f(x,y)=%.1f ",f(x,y));getch();} 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.以下程序的功能是:分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。请填空。 #include <stdio.h> #include<conio.h> int gcd(int a ,int b) {if(【1】) return a; gcd(b,【2】);} int lcm(int a,int b) { return【3】; } main() {int a,b; printf("请输入两个整数:"); scanf("%d%d",&a,&b); printf("最大公约数为:%d,最小公倍数为:%d ",gcd(a,b),【4】); getch();} 33.下列程序的功能是求一个英文句子中最长的英文单词,在主函数中输入数据并输出结果。请填空。 #include <stdio.h> #include<conio.h> #include<string.h> int zm(char c) {if(【1】) return 1; else return 0;} int p(char s[ ]) {int i,len=0,length=0,flag=1,place=0,point; for(i=0;i<=【2】;i++) {if(zm(s[i])) if(【3】) {len++;point=i;flag=0;} else len++; else {flag=1; if(【4】){length=len;place=point;len=0;} } } return place; } main() {int i; char str[100]; printf("请输入一句英文:"); gets(str); printf("最长的单词为:"); for(i=p(str);zm(str[i]);i++) printf("%c",str[i]); printf(" "); getch();} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目五: 函数 第29卷: 函数的嵌套调用及实际应用 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.下列叙述中,正确的一项是( ) A.函数的定义可以嵌套,但函数的调用不可以嵌套 B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用都可以嵌套 D.函数的定义和函数的调用都不可以嵌套 【答案】B 2.以下程序是用来计算函数f(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请你选择填空。( ) float f(float a,float b) {float s; s=【 】; return s;} main() {float x,y,z; float d; scanf("%f%f%f",&x,&y,&z); d=f(x+y,x-y)+f(z+y,z-y); printf("%f ",d); getch();} A.(a+b)/(a-b) B.a/b C.(a-b)/(a+b) D.b/a 【答案】B 3.执行以下程序段的输出结果是( ) static int f=1; int fun(int n) {f=f+n;return f;} main() {int i; for(i=7;i<=10;i++) printf("%d ",fun(i)); getch();} A.8 16 25 30 B.4 8 16 24 C.8 16 25 35 D.4 16 32 64 【答案】C 4.执行以下程序段的输出结果是( ) int f(int x,int y) {return (y+x);} main() {int a=3,b=4,c=5,d=6,e=7; printf("%d",f(f(f(f(a,b),f(a,c)),d),e)); getch();} A.20 B.24 C.28 D.32 【答案】C 5.执行以下程序段的输出结果是( ) long f1(int p) {int k,r; k=p*p;r=k*k;return r;} main() {int i; long s=0; for(i=2;i<=3;i++) s=s+f1(i); printf("s=%d",s);getch();} A.s=90 B.s=93 C.s=95 D.s=97 【答案】D 6.执行以下程序段的输出结果是( ) int c=3; void f(int a) {int b=0; a=c++,b++;} main() {int a=3,i; for(i=0;i<5;i++) f(a+++1); printf("%d",c); getch();} A.8 B.9 C.10 D.11 【答案】A 7.执行以下程序段的输出结果是( ) int f(int a) {int b=0; static int c=3; a=c++,b++; return a;} main() {int a=3,i,k; for(i=0;i<3;i++) k=f(a++); printf("k=%d",k); getch();} A.k=5 B.k=4 C.k=3 D.k=2 【答案】A 8.执行以下程序段的输出结果是( ) void f(int b[ ]) {int j,i; for(i=0;i<2;i++) for(j=0;j<3;j++) b[j]=b[j]*2;} main() {int s[3]={1,2,3},k; f(s); for(k=0;k<3;k++) printf("%d",s[k]); getch();} A.4811 B.1811 C.4809 D.4812 【答案】D 9.执行以下程序段的输出结果是( ) void fun(int b[3]) {int j; for(j=0;j<3;j++) b[j]=j*2;} main() {int s[3]={1,2,3},k; fun(s); for(k=0;k<3;k++) printf("%d",s[k]); getch();} A.024 B.123 C.012 D.234 【答案】A 10.执行以下程序段的输出结果是( ) int p(int n) {int s=0; while(n) {s=s*10+n%10; n=n/10;} return s;} main() {printf("p=%d ",p(345)); getch();} A.p=345 B.p=354 C.p=543 D.p=534 【答案】C 11.执行以下程序段的输出结果是( ) int fun(int a,int b) {return a=a+b,a%b;} main() {int x=9,y=7,z=3,rels; rels=fun(fun(x,y),z); printf("%d",1<<rels); getch();} A.3 B.4 C.7 D.9 【答案】B 12.执行以下程序段的输出结果是( ) int fun(int n) {return n/10+n%10;} main() {int k,i=123456; k=fun(fun(fun(fun(fun(i))))); printf("%d",k); getch();} A.3 B.4 C.5 D.6 【答案】A 13.执行以下程序段的输出结果是( ) double fun(int a,int b,int c) {double s; s=a%b*c; return s;} main() {int a=2,b=3,c=5; float d; d=fun(a,b,c); printf("%f",d);getch();} A.10.000000 B.2.000000 C.10 D.2 【答案】A 14.执行以下程序段的输出结果是( ) char fun(char a,int b) {char k; k=a+b; return k;} main() {char a='A'; int b=10; a=fun(a,b); putchar(a);getch();} A.K B.L C.A D.J 【答案】A 15.执行以下程序段的输出结果是( ) int i=5; int fact() {if(i==0) return 1; else {i--;return ((i+1)*fact());}} main() {printf("fact=%d",fact()); getch();} A.fact=2 B.fact=6 C.fact=24 D.fact=120 【答案】D 16.执行以下程序段的输出结果是( ) void del(char s[ ],char c) {int i,j; for(i=j=0;s[i]!='\0';i++) if(s[i]!=c) s[j++]=s[i];s[j]='\0';} main() {char s[ ]="ABCDACD"; del(s,'A'); printf("%s",s);getch();} A.ABCDACD B.BCDACD C.AA D.BCDCD 【答案】D 17.执行以下程序段的输出结果是( ) int fun(int n) {int m=1; do{m*=n%10;n/=10;}while(n); return m;} main() {int n=234; printf("s=%d ",fun(n)); getch();} A.s=6 B.s=8 C.s=12 D.s=24 【答案】D 18.执行以下程序段的输出结果是( ) void fun(char a[ ],char b[ ],int n) {int c; for(c=0;c<n;c++) b[c]=(a[c]-'A'-3+26)%26+'A';b[n]='\0';} main() {char s1[5]="ABCD",s2[5]; fun(s1,s2,5); puts(s2);getch();} A.XYZA1 B.ABCD1 C.ABXY1 D.XYZA2 【答案】A 19.执行以下程序段的输出结果是( ) int fun(int a,int b) {return a+b;} main() {int x=6,y=7,z=8,r; r=fun(fun(x,y),z--); printf("%d",r); getch();} A.15 B.20 C.21 D.31 【答案】C 20.执行以下程序段的输出结果是( ) int f(int x,int y) {return ((y-x)*x);} main() {int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf("%d",d); getch();} A.7 B.8 C.9 D.10 【答案】C 21.执行以下程序段的输出结果是( ) int f(int x); main() {int n=2,m; m=f(f(f(n))); printf("%d",m);getch();} int f(int x) {return x*x;} A.256 B.128 C.16 D.255 【答案】A 22.执行以下程序段的输出结果是( ) int fun(int x,int y) {if(x==y) return (x); else return ((x+y)/2);} main() {int a=4,b=5,c=6; printf("%d ",fun(a*2,fun(b,c))); getch();} A.3 B.6 C.8 D.9 【答案】B 23.执行以下程序段的输出结果是( ) 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); printf("%f",w);getch();} A.5.000000 B.5.0 C.5.21 D.0.000000 【答案】A 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void fac2(int); void fac1(int n) {printf("*"); if(n>0) fac2(n-1);} void fac2(int n) {printf("#"); if(n>0) fac2(--n);} main() {fac1(3);getch();} 【答案】*### 25.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int max(int x, int y); main() { int a=2,b=5,c=18,d=0,e; e=max(max(max(a,b),c),d); printf("Max is %d",c);getch();} int max(int x, int y) { int z; z=x>y?x:y; return(z);} 【答案】Max is 18 26.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int f(int x,int y) { return y+x; } main() { int a=3,b=4,c=5,d; d=f(f(f(3,4),f(3,5)),f(4,5)); printf("%d ",d);getch();} 【答案】24 27.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int f(int x[ ],int n) {int i,r=1; for(i=0;i<=n;i++) r=r*x[i]; return r;} main() {int s,a[ ]={2,3,1,5,4,3,6,4}; s=f(a,5); printf("%d ",s);getch();} 【答案】360 28.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int fun() {static int x=1; x*=2; return x;} main() {int i,s=1; for(i=1;i<=4;i++) s*=fun(); printf("%d",s); getch();} 【答案】1024 29.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> int func(int a,int b) {int c; c=a+b; return c;} main() {int x=6,y=7,z=8,r; r=func((x--,y++,z+y),z--); printf("%d",r); getch();} 【答案】23 30.以下程序的运行结果是( ) #include <stdio.h> #include<conio.h> void fun(int x) {static int y=5; x++; printf("%d+%d=%d ",x,y++,x+y);} main() {int i; for(i=1;i<=3;i++) fun(i); getch();} 【答案】 2+5=8 3+6=10 4+7=12 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.下列程序的功能是:求 的值。程序中有三处错误,请改正。 L1 #include <stdio.h> L2 #include<conio.h> L3 float p(long i) L4 {long k=1,j; L5 for(j=1;j<=i;j++) L6 k=k/j; L7 return ((float)(k));} L8 float s(long n) L9 {float sum=0.0; L10 long k; L11 for(k=1;k<=n;k++) L12 sum=p(k); L13 return (sum);} L14 float f(long x,long y) L15 {float f1; L16 f1=s(y)/s(x); L17 return (f1);} L18 main() L19 {long x,y; L20 printf("请输入x和y的值: "); L21 scanf("%d,%d",&x,&y); L22 printf("f(x,y)=%.1f ",f(x,y));getch();} 答案: L6 k=k*j; L12 sum+=p(k); L16 f1=s(x)/s(y); 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.以下程序的功能是:分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。请填空。 #include <stdio.h> #include<conio.h> int gcd(int a ,int b) {if(【1】) return a; gcd(b,【2】);} int lcm(int a,int b) { return【3】; } main() {int a,b; printf("请输入两个整数:"); scanf("%d%d",&a,&b); printf("最大公约数为:%d,最小公倍数为:%d ",gcd(a,b),【4】); getch();} 答案:①b==0 ②a%b ③a*b/gcd(a,b) ④lcm(a,b) 33.下列程序的功能是求一个英文句子中最长的英文单词,在主函数中输入数据并输出结果。请填空。 #include <stdio.h> #include<conio.h> #include<string.h> int zm(char c) {if(【1】) return 1; else return 0;} int p(char s[ ]) {int i,len=0,length=0,flag=1,place=0,point; for(i=0;i<=【2】;i++) {if(zm(s[i])) if(【3】) {len++;point=i;flag=0;} else len++; else {flag=1; if(【4】){length=len;place=point;len=0;} } } return place; } main() {int i; char str[100]; printf("请输入一句英文:"); gets(str); printf("最长的单词为:"); for(i=p(str);zm(str[i]);i++) printf("%c",str[i]); printf(" "); getch();} 答案:①(c>='a'&&c<='z')||(c>='A'&&c<='Z') ②strlen(s) ③flag ④len>length 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

任务29:函数的嵌套调用及实际应用  《编程语言-C语言》45分钟专题训练-第1页
1
任务29:函数的嵌套调用及实际应用  《编程语言-C语言》45分钟专题训练-第2页
2
任务29:函数的嵌套调用及实际应用  《编程语言-C语言》45分钟专题训练-第3页
3

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。