2011年计算机等级二级C语言章节习题及答案(7)

申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

文档介绍

2011年计算机等级二级C语言章节习题及答案(7)

第8章函数一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。)8.1若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参考生答案:正确答案:D8.2在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是A)地址传递B)单向值传递C)由实参传形参,再由形参传实参D)传递方式由用户指定考生答案:正确答案:B8.3以下正确的说法是A)定义函数时,形参的类型说明可以放在函数体内B)return后边的值不能为表达式C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参与实参类型不一致,以实参类型为准考生答案:正确答案:C8.4以下正确的说法是A)用户若需调用标准库函数,调用前必须重新定义B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义C)系统根本不允许用户重新定义标准库函数D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动调用考生答案:正确答案:B8.5以下叙述正确的是A)函数可以嵌套定义但不能嵌套调用B)函数既可以嵌套调用也可以嵌套定义C)函数既不可以嵌套定义也不可以嵌套调用nD)函数可以嵌套调用但不可以嵌套定义考生答案:正确答案:D8.6下面对C语言的描述中,正确的是A)函数一定有返回值,否则无法使用函数B)C语言函数既可以嵌套定义又可以递归调用C)在C语言中,调用函数时,只能将实参的值传递给形参D)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中考生答案:正确答案:C8.7下列说法中错误的是A)静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值B)若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽C)静态全局变量可以被其他的编辑单位所引用D)所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失考生答案:正确答案:C8.8以下程序有语法错误,有关错误原因的正确说法是main(){intG=5,k;voidprt_char();...k=prt_char(G);...}A)语句voidprt_char();有错,它是函数调用语句,不能用void说明B)变量名不能使用大写字母C)函数说明和函数调用语句之间有矛盾D)函数名不能使用下划线考生答案:正确答案:C8.9以下正确的函数头定义形式是A)doublefun(intx,inty)B)doublefun(intx;inty)C)doublefun(intx,inty);D)doublefun(intx,y);考生答案:正确答案:An8.10以下所列的各函数首部中,正确的是A)voidplay(var:Integer,varb:Integer)B)voidplay(inta,b)C)voidplay(inta,intb)D)Subplay(aasinteger,basinteger)考生答案:正确答案:C8.11不合法的main函数命令行参数表示形式是A)main(inta,char*c[])B)main(intarc,char**arv)C)main(intargc,char*argv)D)main(intargv,char*argc[])考生答案:正确答案:C8.12下面函数调用语句含有实参的个数为func((exp1,exp2),(exp3,exp4,exp5));A)1B)2C)4D)5考生答案:正确答案:B8.13设有如下函数fun(floatx){printf("\n%d",x*x);}则函数的类型是A)与参数x的类型相同B)是voidC)是int型D)无法确定考生答案:正确答案:C8.14有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}n程序运行后的输出结果是A)编译出错B)9C)21D)9.0考生答案:正确答案:B8.15以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;ifor(j=i+1;jif(a[i]{t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序运行后的输出结果是A)1,2,3,4,5,6,7,8,9,10,B)10,9,8,7,6,5,4,3,2,1,C)1,2,3,8,7,6,5,4,9,10,D)1,2,10,9,8,7,6,5,4,3,考生答案:正确答案:C8.16下列程序执行后的输出结果是voidfunc1(inti);voidfunc2(inti);charst[]="hello,friend!";voidfunc1(inti){printf("%c",st[i]);if(i<3){i+=2;func2(i);}}voidfunc2(inti){printf("%c",st[i]);if(i<3){i+=2;func1(i);}}nmain(){inti=0;func1(i);printf("\n");}A)helloB)helC)hloD)hlm考生答案:正确答案:C8.17以下函数返回a所指数组中最大值所在的下标值fun(int*a,intn){inti,j=0,p;p=j;for(i=j;iif(a[i]>a[p])_________;return(p);}在下划线处应填入的内容是A)i=pB)a[p]=a[i]C)p=jD)p=I考生答案:正确答案:D8.18有以下程序intf(intn){if(n==1)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=1;i<3;i++)j+=f(i);printf("%d\n",j);}程序运行后的输出结果是A)4B)3C)2nD)1考生答案:正确答案:B8.19有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%d\n",fib(3));}该程序的输出结果是A)2B)4C)6D)8考生答案:正确答案:B8.20下列函数的运行结果是main(){inti=2,p;intj,k;j=i;k=++i;p=f(j,k);printf("%d",p);}intf(inta,intb){intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}A)-1B)1C)2nD)编译出错,无法运行考生答案:正确答案:A8.21阅读下列程序,当运行函数时,输入asdafaaz67,则输出为#include#include#includeintfun(char*str){inti,j=0;for(i=0;str[i]!=′\0′;i++)if(str[i]!=′′)str[j++]=str[i];str[j]=′\0′;}main(){charstr[81];intn;clrscr();printf("Inputastring:");gets(str);puts(str);fun(str);printf("%s\n",str);}A)asdafaaz67B)asdafaaz67C)asdD)z67考生答案:正确答案:A8.22以下程序的输出结果是longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main()n{printf("%ld\n",fun(3));}A)1B)2C)3D)4考生答案:正确答案:A8.23已有变量定义和函数调用语句:inta=25;print_value(&a);下面函数的正确输出结果是voidprint_value(int*x){printf("%d\n",++*x);}A)23B)24C)25D)26考生答案:正确答案:D8.24下面程序应能对两个整型变量的值进行交换。以下正确的说法是main(){inta=10,b=20;printf("(1)a=%d,b=%d\n",a,b);swap(&a,&b);printf("(2)a=%d,b=%d\n",a,b);}swap(intp,intq){intt;t=p;p=q;q=t;}A)该程序完全正确B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可D)以上说法都不对考生答案:正确答案:Dn8.25以下程序的输出结果是intf(){staticinti=0;ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf("%d\n",a);}A)20B)24C)25D)15考生答案:正确答案:D8.26阅读下面程序段,则执行后输出的结果是#include"stdio.h"main(){charfun(char,int);chara=′A′;intb=13;a=fun(a,b);putchar(a);}charfun(chara,intb){chark;k=a+b;returnk;}A)AB)MC)ND)L考生答案:正确答案:Cn8.27编写求两个双精度数之和的函数,选项中正确的是A)doubleadd(doublea,doubleb){doubles;s=a+b;returns;}B)doubleadd(doublea,b){doubles;s=a+b;return(s);}C)doubleadd(doubleadoubleb){doubles;s=a+b;returns;}D)doubleadd(a,b){doublea,b,s;s=a+b;return(s);}考生答案:正确答案:A8.28现有如下程序#include"stdio.h"intfun(intx){printf("x=%d\n",++x);}main(){fun(12+5);}则程序的输出结果是A)12B)13C)17D)18考生答案:正确答案:Dn8.29现有如下程序段#include"stdio.h"intaa(intx,inty);main(){inta=24,b=16,c;c=aa(a,b);printf("%d\n",c);}intaa(intx,inty){intw;while(y){w=x%y;x=y;y=w;}returnx;}则程序段的输出结果是A)8B)7C)6D)5考生答案:正确答案:A8.30下列程序的输出结果是#include"stdio.h"#defineN3#defineM3voidfun(inta[M][N]){printf("%d\n",*(a[1]+2));}main(){inta[M][N];inti,j;for(i=0;ifor(j=0;ja[i][j]=i+j-(i-j);fun(a);}nA)3B)4C)5D)6考生答案:正确答案:B8.31阅读下面程序,则执行后的结果为#include"stdio.h"main(){fun3(fun1(),fun2());}fun1(){intk=20;returnk;}fun2(){inta=15;returna;}fun3(inta,intb){intk;k=(a-b)*(a+b);printf("%d\n",k);}A)0B)184C)175D)编译不通过考生答案:正确答案:C8.32阅读下面程序,则程序执行后的结果为#include"stdio.h"main(){inta=4,b=6,c=7;doubled,fun(int,int,int);d=fun(a,b,c);printf("%lf\n",d);n}doublefun(inta,intb,intc){doubles;s=a%b*c;returns;}A)27B)27.000000C)28D)28.000000考生答案:正确答案:D8.33现有如下程序,则程序的输出结果为#include"stdio.h"intf(inta,intb){intc;if(a>0&&a<10)c=(a+b)/2;elsec=a*b/2;returnc;}main(){inta=8,b=20,c;c=f(a,b);printf("%d\n",c);}A)随机数B)80C)28D)14考生答案:正确答案:D8.34阅读如下程序段,则程序段的执行后的输出结果为#include"stdio.h"main(){charc;inti;charcount();intp(char);for(i=0;i<30;i++)c=count();p(c);n}charcount(){charstr=′A′;str+=1;return(str);}p(charc){putchar(c);putchar(′\n′);}A)AB)BC)aD)b考生答案:正确答案:B8.35阅读程序,则执行后的结果为#include"stdio.h"main(){inti,m,n;for(i=0;i<3;i++){m=test1();n=test2();}printf("%d,%d\n",m,n);}test1(){intx=0;x++;returnx;}test2(){staticintx=0;x++;returnx;}A)1,1nB)1,3C)3,1D)3,3考生答案:正确答案:B二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)8.36当调用函数时,实参是一个数组名,则向函数传递的是【1】。A考生答案:正确答案:数组的首地址8.37函数fun的功能是:根据以下公式求p的值,结果由函数值返回。m与n为两个正数且要求m>n。例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。#include#includefloatfun(intm,intn){inti;doublep=1.0;for(i=1;i<=m;i++)【2】;for(i=1;i<=n;i++)【3】;for(i=1;i<=m-n;i++)p=p/i;returnp;}main(){clrscr();printf("p=%f\n",fun(12,8));}A考生答案:正确答案:p=p*i正确答案:p=p/i8.38以下程序的输出结果是【4】。voidfun(){staticinta=0;a+=2;printf("%d",a);}main(){intcc;for(cc=1;cc<4;cc++)fun();nprintf("\n");}A考生答案:正确答案:2468.39以下程序运行结果是【5】。longfib(intg){switch(g){case0∶return0;case1∶case2∶return1;}return(fib(g-1)+fib(g-2));}main(){longk;k=fib(5);printf("k=%(d\n)",k);}A考生答案:正确答案:k=58.40以下程序的输出结果是【6】。unsignedfun6(unsignednum){unsignedk=1;do{k*=num;num/=10;}while(num);returnk;}main(){unsignedn=26;printf("%d\n",fun6(n));}A考生答案:正确答案:128.41以下函数的功能是【7】。floatav(a,n)floata[];nintn;{inti;floats;for(i=0,s=0;ireturns/n;}A考生答案:正确答案:求出数组元素平均值8.42下面的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为0的元素中,其他依次类推,请填空。fun(intx,intb[]){intk=0,r;do{r=x%【8】;b[【9】]=r;x/=【10】;}while(x);}正确答案:2正确答案:k++正确答案:28.43下面函数的功能是将一个字符串的内容颠倒过来,请填空。voidfun(charstr[]){inti,j,【11】;for(i=0,j=【12】;i{k=str[i];str[i]=str[j];str[j]=k;}}正确答案:k正确答案:strlen(str)-18.44现有如下程序段,则程序段的输出结果为【13】。#include"stdio.h"intfun(){staticintk;returnk;}main(){intm;m=fun();nprintf("%d\n",m);}A考生答案:正确答案:08.45下面函数是一个求阶乘的递归调用函数。请填空。intfun(intk){if(k==1)【14】;elsereturn(【15】);}正确答案:return1正确答案:k*fun(k-1)
查看更多

相关文章

您可能关注的文档