1、二级 C 语言笔试-265 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.x、y、z 被定义为 int 型变量,若从键盘给 x、y、z 输入数据,正确的输入语句是 _。(分数:2.00)A.INPUT x、y、z;B.scanf(“%d %d %d“,B.a=0,b=0,c=0;C.if(aO);D.if(b=0)m=1;n=2;7.有以下程序:# includestdio.hmain()char c1=1,c2=2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);当运行时输入:a回车后
2、,以下叙述正确的是 _。(分数:2.00)A.变量 c1 被赋予字符 a,c2 被赋予回车符B.程序将等待用户输入 2 个字符C.变量 c1 被赋予字符 a,c2 中仍是原有字符 2D.变量 c1 被赋予字符 a,c2 中将无确定值8.数字字符 0 的 ASCII 值为 48,若有以下程序:main()char a=1,b=2;printf(“%c,“,b+);printf(“%d/n“,b-(分数:2.00)A.;9.对长度为 n 的线性表进行顺序查找,在最坏的情况下所需要的比较次数为 _。(分数:2.00)A.log2nB.n/2C.nD.n+l10.设有定义:int k=1,m=2; f
3、loat f=7;则以下选项中错误的表达式是 _。(分数:2.00)A.k=k=kB.-k+C.k% int(f)D.k=f=m11.以下程序的输出结果是 _。# defineSQR(X) X*Xmain()int a=10,k=2,m=1;a/SQR(k+m)/SQR(k+m);printf(“d/n“,(分数:1.00)A.;以下叙述中正确的是 _。(分数:1.00)A.程序输出大写字母 MB.程序输出小写字母 mC.格式说明符不足,编译出错D.程序运行时产生出错信息13.有以下程序:main()int a=3,b=4,c=5,d=2;if(ab)if(bc)printf(“%d“,d+
4、1);elseprintf(“d“,+d+1);printf(“%d/n“,d);程序运行后的输出结果是 _。(分数:1.00)A.2B.3C.43D.4414.有以下程序:main()int a=2,4,6,8,10,y=0,x,*p;p=x3;x+)y+=px;printf(“%d/n“,y);程序运行后的输出,结果是 _。(分数:1.00)A.10B.11C.14D.1515.有以下程序:main()char k: int i;for(i=1:i3;i+)scanf(“%c“, 该函数的返回值是 _。(分数:1.00)A.不确定的值B.形参 p 中存放的值C.形参 p 所指存储单元中的值
5、D.形参 p 的地址值21.有以下程序:main()int i=10,j=1;printf(“%d,%d/n“,i-,+j);执行后的输出结果是 _。(分数:2.00)A.9,2B.l0,2C.9,1D.10,122.有以下程序:main()int a33,*p,i;p=i9;i+)pi=i;for(i=0;i3;i+)printf(“%d“,a1i);程序运行后的输出结果是 _。(分数:2.00)A.0 1 2B.1 2 3C.2 3 4D.3 4 523.有以下程序:main()int x=0,y=5,z=31while(z-0,以下 C 语言表达式中与代数式 (分数:2.00)A.(a
6、十B.*h/2B) (1/2)*(a+B) *hC.(a+B)D.h/2*(a+32.有以下程序:main()int i=1,j=1,k=2;if(j+k+)i6;i+)printf(“%2d“,*(p+);B.for(i=0;i6;i+)printf(“%2d“,*(p+i);C.for(i=0;i6;i+)printf(“%2d“,*p+);D.for(i=0;i6;i+)printf(“%2d“,(*p)+);34.若有定义:int x=0,*p=,则合法的赋值语句是 _。(分数:2.00)A.p=100;B.p=a5;C.p=a2+2;D.p=a+2;36.设有定义:int A,*pA
7、=,以下 scanf 语句中能正确为变量 A 读入数据的是 _。(分数:2.00)A.scanf (“%d“,pA) ;B.sC.sD.s37.设有定义:int n=0,*p=,则以下选项中,正确的赋值语句是 _。(分数:2.00)A.p=1;B.*q=2C.q=pD.*p=538.以下程序运行后的输出结果是 _。main()int a=1,b=2,c=3;if(c=(分数:2.00)A.printf(“%d/n“,c);else printf(“%d/n“,B.;i5;i+)doif(i%3) continue;n+;while(! i);n+;printf(“n=%d/n“,n);程序执行
8、后输出结果是 【1】 。(分数:2.00)填空项 1:_42.有以下程序:void f(int v,int w)int t;t=v;v=w;w=t;main()int x=1,y=3,z=2if(xy) f(x,y);else if(yz) f(y,z);else f (x,z);printf(“%d,%d,%d/n“,x,y,z);执行后的输出结果是 【2】 。(分数:2.00)填空项 1:_43.函数 YangHui 的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下:11 11 2 11 3 3 11 4 6 4 1其构成规律是:第 0 列元素和主对角线元素均为 1;其余元素为其
9、左上方和正上方元素之和;数据的个数每行递增 1。请将程序补充完整。#define N 6void YangHui(int xNN)inti,j;x00=1;for(i=1;iN;i+)xi0=xii=1;for(j=1;ji;j+)xij= 【3】 ;(分数:2.00)填空项 1:_44.以下程序运行后的输出结果是 【4】 。main()char c; int n=100;float f=10; double x; x=f* =n/=(c=50);printf(“%d %f/n“,n,x);(分数:2.00)填空项 1:_45.有以下程序:main()int a=7,b=8,*p,*q,*r;
10、p= q=r=p; p=q; q=r;printf(“%d,%d,%d,%d/n“,*p,*q,a,b);程序运行后的输出结果是 【5】 。(分数:2.00)填空项 1:_46.以下程序运行后的输出结果是 【6】 。# includestring.hmain()char ch=“abc“,x34;int ifor(i=0;i3;i+) strcpy(xi,ch);for(i=0;i3;i+)printf(“%s“,printf(“/n“);(分数:2.00)填空项 1:_47.有以下程序:fun(int a,int b)if(ab)return(a);else return(b);main()
11、int x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf(“%/d/n“,r);程序运行后的输出的结果是 【7】 。(分数:2.00)填空项 1:_48.有以下程序:# includestring.hstruct STUchar name10;int num;void f(char *name, int num)struct STU s2=“SunDan“,20044,“Penghua“,20045;num=s0.num;strcpy(name,s0.name);main()struct STU s2=“YangSan“,20041,“LiSiGuo“,2004
12、2,*p;p=f(p-name,p-num);printf(“%s %d/n“,p-name,p-num);程序运行后的输出结果是 【8】 。(分数:2.00)填空项 1:_49.有以下程序:main()int a33,*p,i;p=for(i=0;i9;i+)pi=i+1;printf(“%d/n“,a12);程序运行后的输出结果是 【9】 。(分数:2.00)填空项 1:_50.有以下程序:# includestdio.hmain()int a=1,2,3,4,5,6,7,8,9,10,11,12, *p=a+5, *q=NULL;*q=*(p+5);printf(“%d%d/n“,*p,
13、*q);程序运行后的输出结果是 【10】 。(分数:2.00)填空项 1:_51.有以下程序:void f(int*x,iht * y)int t;t=*x;*x;=*y;*y=t;main()int a8=1,2,3,4,5,6,7,8,i,*p,*q;p=a;q=while(p)f(p,q);p+;q-;for(i=0;i8;i+)printf(“%d,“,ai);程序运行后的输出结果是 【11】 。(分数:2.00)填空项 1:_52.有以下程序:prt(int *m,int n)int i;for(i=0;in;i+)mi+;main()int a=1,2,3,4,5,i;prt(a,
14、5);for(i=0;i5;i+)printf(“%d,“,ai;程序运行后的输出结果是 【12】 。(分数:2.00)填空项 1:_53.有以下程序:float f1(float n)return n*n; float f2(float n)return 2*n; main()float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;p1=f1;p2=f2;y1=p2(p1(2.0);t=P1;p1=p2;p2=t;y2=p2(p1(2.0);printf(“%3.0f,%3.0f/n“,y1,y2);程序运行后的输出结果是 【13】 。(分数:2.0
15、0)填空项 1:_54.设有以下定义和语句:int a32=1,2,3,4,5,*p3;p0=a1;则*(p0+1)所代表的数组元素是 【14】 。(分数:2.00)填空项 1:_55.设函数 findbig 已定义为求 3 个数中的最大值,以下程序将利用函数指针调用 findbig 函数。请填空。main()int findbig(int,int,int);int(*f)(),x,y,z,big;f= 【15】 。scanf(“%d %d %d“,big=(*f)(x,y,z);printf(“big=%d/n“,big);(分数:2.00)填空项 1:_二级 C 语言笔试-265 答案解析
16、(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.x、y、z 被定义为 int 型变量,若从键盘给 x、y、z 输入数据,正确的输入语句是 _。(分数:2.00)A.INPUT x、y、z;B.scanf(“%d %d %d“,B.a=0,b=0,c=0;C.if(aO);D.if(b=0)m=1;n=2; 解析:解析 选项 D 中有两条语句。7.有以下程序:# includestdio.hmain()char c1=1,c2=2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);当运行时输入:a回车后
17、,以下叙述正确的是 _。(分数:2.00)A.变量 c1 被赋予字符 a,c2 被赋予回车符 B.程序将等待用户输入 2 个字符C.变量 c1 被赋予字符 a,c2 中仍是原有字符 2D.变量 c1 被赋予字符 a,c2 中将无确定值解析:解析 getchar 函数读入字符时,空格、回车符都作为字符读入,因此 A 正确。8.数字字符 0 的 ASCII 值为 48,若有以下程序:main()char a=1,b=2;printf(“%c,“,b+);printf(“%d/n“,b-(分数:2.00)A.;解析:解析 b+是先使用 b 再给 b 赋值 1,因此是先输出 2,再将 b 加 1,b=
18、3,则第一条语句输出2,第二条语句输出 2。9.对长度为 n 的线性表进行顺序查找,在最坏的情况下所需要的比较次数为 _。(分数:2.00)A.log2nB.n/2C.n D.n+l解析:解析 顺序查找的最坏情况是所找的元素在线性表的最后,因此查找的比较次数是线性表的长度,即 n。10.设有定义:int k=1,m=2; float f=7;则以下选项中错误的表达式是 _。(分数:2.00)A.k=k=kB.-k+C.k% int(f) D.k=f=m解析:解析 A、D 选项是关系运算表达式,在 C 语言中,只要关系运算符两边是合法的表达式就可以了。C 选项中,%只能对整型进行运算,其中对 f
19、 进行了强制类型转换,但是转换的表达式错了,应为:(int)(f)。11.以下程序的输出结果是 _。# defineSQR(X) X*Xmain()int a=10,k=2,m=1;a/SQR(k+m)/SQR(k+m);printf(“d/n“,(分数:1.00)A.;以下叙述中正确的是 _。(分数:1.00)A.程序输出大写字母 MB.程序输出小写字母 m C.格式说明符不足,编译出错D.程序运行时产生出错信息解析:解析 输出项表是一个逗号表达式,它的值为 a2,因此输出的是 a2 的值。13.有以下程序:main()int a=3,b=4,c=5,d=2;if(ab)if(bc)prin
20、tf(“%d“,d+ 1);elseprintf(“d“,+d+1);printf(“%d/n“,d);程序运行后的输出结果是 _。(分数:1.00)A.2 B.3C.43D.44解析:解析 本题考查嵌套 if 语句中 else 的配对。本题中 else 和第二个 if 即 if(bc)配对。由于ab 不成立,因此整个程序只输出 printf(“%d/n“,d),即输出 2。14.有以下程序:main()int a=2,4,6,8,10,y=0,x,*p;p=x3;x+)y+=px;printf(“%d/n“,y);程序运行后的输出,结果是 _。(分数:1.00)A.10B.11C.14 D.
21、15解析:解析 因为 pi+)scanf(“%c“, 该函数的返回值是 _。(分数:1.00)A.不确定的值B.形参 p 中存放的值C.形参 p 所指存储单元中的值 D.形参 p 的地址值解析:解析 函数 fun 的形参是指针变量,*p 的含义是指针变量 p 所指存储单元的内容,因此正确答案为 C。21.有以下程序:main()int i=10,j=1;printf(“%d,%d/n“,i-,+j);执行后的输出结果是 _。(分数:2.00)A.9,2B.l0,2 C.9,1D.10,1解析:解析 本题中-运算符位于运算变量 i 右侧,+运算符位于变量 j 的左侧,所以先输出 i 的当前值 1
22、0,然后 i 再加 1;j 先加 1 得 2,然后输出。22.有以下程序:main()int a33,*p,i;p=i9;i+)pi=i;for(i=0;i3;i+)printf(“%d“,a1i);程序运行后的输出结果是 _。(分数:2.00)A.0 1 2B.1 2 3C.2 3 4D.3 4 5 解析:解析 p 指向的 a 的首地址,由于 C 语言是行优先存储的,一维数组 p 就依次存放了 a 中从第 0行到第 2 行的所有元素,因此 a1i就对应了 p3p5。23.有以下程序:main()int x=0,y=5,z=31while(z-0第三次执行 while 语句时,z=10,然后执
23、行 z-得 x0,执行+x 得 x=35,条件成立,执行 y=y-1=3-1= 2;第四次执行 while 语句时因 z=0,z0 条件不成立,同时执行 c-得 z=-1。即执行完 while 循环后 x3、y2、z-1。24.在软件设计中,不属于过程设计工具的是 _。(分数:2.00)A.PDL(过程设计语言)B.PAD 图C.N-S 图 D.DFD 图解析:解析 DFD(Data Flow Diagram)是数据流图结构化分析的常用工具。软件设计中,常见的过程设计工具如下。(1)图形工具:程序流程图,N-S,PAD,HIPO(2)表格工具:判定表(3)语言工具:PDL(过程设计语言)25.
24、以下能正确定义且赋初值的语句是 _。(分数:2.00)A.iht=n1=n2=10; B.char c=32;C.float f=f+1.1;D.double x=12.3E2.5解析:解析 B 选项中 32 应加单引号,C 选项中 f=f+1.1 两边都是不定值,不正确;D 中 E 后要用整型数,且 E 后必须要有数字。26.在 16 位 C 编译系统上,若定义 long a;,则能给变量 a 赋值 40000 的正确语句是 _。(分数:2.00)A.a=20000+20000;B.a=4000*10;C.a=30000+10000;D.a=4000L*1OL; 解析:解析 本题中 a 是长
25、整型变量,故应将一个长整型常量赋值给 a,选项 A、B、C 中的数值的末尾都没有加 L 或 1,所以不正确。27.下列叙述中正确的是 _。(分数:2.00)A.程序设计就是编制程序B.程序测试必须由程序员自己去做C.程序经调试改错后还应进行再测试 D.程序经调度改错后不必进行再测试解析:解析 软件测试包括需求分析、结构功能模块设计、编制程序等阶段。程序的测试可以由专门的测试人员来完成。程序经调试改错后还应进行再测试。28.若有以下说明和语句:int c45,(*p)5;p=C;能够正确引用 c 数组元素的是 _。(分数:2.00)A.p+1B.*(p+1)C.*(p+1)+3D.*(p0+2)
26、 解析:解析 p 是指向一个一维数组的指针,选项 A、B 和 C 中都是地址,而非数组元素。选项 D 正确。29.有以下程序中若有如下说明和定义语句;char fun(char*);main()char * s=“one“,a5=0,(*f1)()=fun,ch;以下选项中对函数 fun 的正确调用语句是 _。(分数:2.00)A.(*f1)(a); B.*f1(*s);C.fun(,以下 C 语言表达式中与代数式 (分数:2.00)A.(a 十B.*h/2B) (1/2)*(a+B) *h C.(a+B)D.h/2*(a+解析:解析 选项 B 错误,不符合题意。32.有以下程序:main()
27、int i=1,j=1,k=2;if(j+k+)i6;i+)printf(“%2d“,*(p+);B.for(i=0;i6;i+)printf(“%2d“,*(p+i);C.for(i=0;i6;i+)printf(“%2d“,*p+);D.for(i=0;i6;i+)printf(“%2d“,(*p)+); 解析:解析 选项 D 中(*p)+的意思是将 p 所指向的存储单元的值加 1,与题意不符,错误。34.若有定义:int x=0,*p=,则合法的赋值语句是 _。(分数:2.00)A.p=100;B.p=a5;C.p=a2+2;D.p=a+2; 解析:解析 因 p 是指针变量,故选项 D
28、正确。36.设有定义:int A,*pA=,以下 scanf 语句中能正确为变量 A 读入数据的是 _。(分数:2.00)A.scanf (“%d“,pA) ; B.sC.sD.s解析:解析 选项 B 中不是变量 A 的地址,错误;选项 C 是指针 pA 的地址,错误;选项 D 中*pA 表示变量 A 的值,错误。37.设有定义:int n=0,*p=,则以下选项中,正确的赋值语句是 _。(分数:2.00)A.p=1;B.*q=2C.q=pD.*p=5 解析:解析 本题中 n 是 int 型变量,p 是指向 int 型的指针变量,q 是指向指针的指针变量,故正确答案为 D。38.以下程序运行后
29、的输出结果是 _。main()int a=1,b=2,c=3;if(c=(分数:2.00)A.printf(“%d/n“,c);else printf(“%d/n“,B.;i5;i+)doif(i%3) continue;n+;while(! i);n+;printf(“n=%d/n“,n);程序执行后输出结果是 【1】 。(分数:2.00)填空项 1:_ (正确答案:n=4)解析:解析 continue 语句是结束本次循环。i=2 时因 i%3 条件为真,故不执行 do-while 语句中的n+,只执行一次 n+得 n=1;i=3 时,i%3 条件为假,执行两次 n+得 n=3;i=4 时,
30、i%3 条件为真,执行一次 n+得 n=4。42.有以下程序:void f(int v,int w)int t;t=v;v=w;w=t;main()int x=1,y=3,z=2if(xy) f(x,y);else if(yz) f(y,z);else f (x,z);printf(“%d,%d,%d/n“,x,y,z);执行后的输出结果是 【2】 。(分数:2.00)填空项 1:_ (正确答案:1,3,2)解析:解析 函数 f 的形参是简单变量,形参的改变不能影响实参,所以正确答案为 1,3,2。43.函数 YangHui 的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下:11 1
31、1 2 11 3 3 11 4 6 4 1其构成规律是:第 0 列元素和主对角线元素均为 1;其余元素为其左上方和正上方元素之和;数据的个数每行递增 1。请将程序补充完整。#define N 6void YangHui(int xNN)inti,j;x00=1;for(i=1;iN;i+)xi0=xii=1;for(j=1;ji;j+)xij= 【3】 ;(分数:2.00)填空项 1:_ (正确答案:xi-1j-1+xi-1j)解析:解析 在程序外层 i 循环中先将数组的第 0 列元素和主对角线元素置 1,内层 j 循环的功能是给其余元素赋值,根据题意,空格内应填入 xi-1j-1)+xi-1
32、j。44.以下程序运行后的输出结果是 【4】 。main()char c; int n=100;float f=10; double x; x=f* =n/=(c=50);printf(“%d %f/n“,n,x);(分数:2.00)填空项 1:_ (正确答案:2 20.000000)解析:解析 注意区分运算符的优先级。先是给 c 赋值,然后计算 xf*=n/=50,得 x=f*=2,最后有x=20。x 输出是按浮点数的形式输出的,小数点后的 0 不能少。45.有以下程序:main()int a=7,b=8,*p,*q,*r;p= q=r=p; p=q; q=r;printf(“%d,%d,%
33、d,%d/n“,*p,*q,a,b);程序运行后的输出结果是 【5】 。(分数:2.00)填空项 1:_ (正确答案:8,7,7,8)解析:解析 本题中执行语句 p=int ifor(i=0;i3;i+) strcpy(xi,ch);for(i=0;i3;i+)printf(“%s“,printf(“/n“);(分数:2.00)填空项 1:_ (正确答案:abebcc)解析:解析 strcpy(xi,ch),使得 x 数组的第 i 行存放“abc“,第一个循环就使数组 x 的每一行都存放了“abc“,printf(“%s“,else return(b);main()int x=3,y=8,z=
34、6,r;r=fun(fun(x,y),2*z);printf(“%/d/n“,r);程序运行后的输出的结果是 【7】 。(分数:2.00)填空项 1:_ (正确答案:12)解析:解析 函数 fun 的功能是求两个数当中的最大值。语句 rfun(fun(x,y),2*z)的执行过程为:首先计算 fun(x,y),因 x=3、y=8,所以结果为 8;然后计算 fun(8,2,*z),即计算 fun(8,12),所以 r=12。48.有以下程序:# includestring.hstruct STUchar name10;int num;void f(char *name, int num)stru
35、ct STU s2=“SunDan“,20044,“Penghua“,20045;num=s0.num;strcpy(name,s0.name);main()struct STU s2=“YangSan“,20041,“LiSiGuo“,20042,*p;p=f(p-name,p-num);printf(“%s %d/n“,p-name,p-num);程序运行后的输出结果是 【8】 。(分数:2.00)填空项 1:_ (正确答案:SunDan 20042)解析:解析 f 函数中形参 1 用的是显式传地址的方式,因此 p-name 的值发生改变,而形参 2 用的传值的方式,在调用时不改变实参的值
36、,因此 p-num 的值不发生变化。49.有以下程序:main()int a33,*p,i;p=for(i=0;i9;i+)pi=i+1;printf(“%d/n“,a12);程序运行后的输出结果是 【9】 。(分数:2.00)填空项 1:_ (正确答案:6)解析:解析 本题定义了二维数组 a 和指针变量 p,p 指向数组的首地址,for 循环语句的功能是给数组元素赋值,结果为 a 00=1、a01=2、a02=3、a10=4、a11=5、a12=6、a20=7、a21=8、a22=9。故 print函数的输出结果为 6。50.有以下程序:# includestdio.hmain()int a
37、=1,2,3,4,5,6,7,8,9,10,11,12, *p=a+5, *q=NULL;*q=*(p+5);printf(“%d%d/n“,*p,*q);程序运行后的输出结果是 【10】 。(分数:2.00)填空项 1:_ (正确答案:运行后报错)解析:解析 指针 q 没有指向确定的存储单元,故不能赋值。51.有以下程序:void f(int*x,iht * y)int t;t=*x;*x;=*y;*y=t;main()int a8=1,2,3,4,5,6,7,8,i,*p,*q;p=a;q=while(p)f(p,q);p+;q-;for(i=0;i8;i+)printf(“%d,“,ai
38、);程序运行后的输出结果是 【11】 。(分数:2.00)填空项 1:_ (正确答案:8,7,6,5,4,3,2,1)解析:解析 函数 f 是将 x、y 指针的内容互换,整个 while 循环是将 a0与 a7互换,a2与 a5互换,a3与 a4互换。52.有以下程序:prt(int *m,int n)int i;for(i=0;in;i+)mi+;main()int a=1,2,3,4,5,i;prt(a,5);for(i=0;i5;i+)printf(“%d,“,ai;程序运行后的输出结果是 【12】 。(分数:2.00)填空项 1:_ (正确答案:2,3,4,5,6)解析:解析 函数 p
39、rt(a,5)的功能是使得 a 数组中,从 a0a4中元素均增 1。53.有以下程序:float f1(float n)return n*n; float f2(float n)return 2*n; main()float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;p1=f1;p2=f2;y1=p2(p1(2.0);t=P1;p1=p2;p2=t;y2=p2(p1(2.0);printf(“%3.0f,%3.0f/n“,y1,y2);程序运行后的输出结果是 【13】 。(分数:2.00)填空项 1:_ (正确答案:8,16)解析:解析 float(
40、*p1)(float)是定义 p1 为指向函数的 float 型的指针变量。因此 p1=f1;p2=f2;表示 p1 指向函数 f1,p2 指向函数 f2,故所有 y1=p2(p1(2.0)=f2(f1(2.0)=8;后面将 p1 与 p2 互换,y2=f1(f2(2.0)=16。54.设有以下定义和语句:int a32=1,2,3,4,5,*p3;p0=a1;则*(p0+1)所代表的数组元素是 【14】 。(分数:2.00)填空项 1:_ (正确答案:a11)解析:解析 p 是一个指针数组,p0指向数组 a10。*(p0+1)代表数组 a11。55.设函数 findbig 已定义为求 3 个
41、数中的最大值,以下程序将利用函数指针调用 findbig 函数。请填空。main()int findbig(int,int,int);int(*f)(),x,y,z,big;f= 【15】 。scanf(“%d %d %d“,big=(*f)(x,y,z);printf(“big=%d/n“,big);(分数:2.00)填空项 1:_ (正确答案:findbig)解析:解析 f 是指向函数的指针变量,根据题意要求,空格处应填入 findbig。本题目考查:C 语言中指向函数的指针变量定义的一般形式为;数据类型标识符(*指针变量名)();“数据类型标识符”表示函数返回值的类型。函数的调用可以通过函数名调用,也可以通过函数指针调用。在给函数指针变量赋值时,只需给出函数名而不必给出参数。(*p)()表示定义一个指向函数的指针变量,专门用来存放函数的入口地址,可以先后指向不同的指针变量。用函数指针调用函数时,只需要将(*p)代替函数名即可,在(*p)之后的括号中,根据需要写上参数。