您好,欢迎访问三七文档
第3章函数和数组库函数的调用(1)有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数)#includestdio.h#includestring.hmain(){chara[10]=abc,b[10]=012,c[10]=xyz;strcpy(a+1,b+2);puts(strcat(a,c+1));}程序运行后的输出结果是A)bc2yzB)a2yzC)a12xyzD)12yz(2)若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是A)main(){……x=fun(2,10);……}floatfun(inta,intb){……}B)floatfun(inta,intb){……}main(){……x=fun(i,j);……}C)floatfun(int,int);main(){……x=fun(2,10);……}floatfun(inta,intb){……}D)main(){floatfun(inti,intj);……x=fun(i,j);……}floatfun(inta,intb){……}(3)以下叙述中正确的是A)用户自己定义的函数只能调用库函数B)不同函数的形式参数不能使用相同名称的标识符C)在C语言的函数内部,可以定义局部嵌套函数D)实用的C语言源程序总是由一个或多个函数组成(4)若有定义语句:chars[10]=1234567\0\0;则strlen(s)的值是A)8B)7C)9D)10(5)有以下程序#includestring.hmain(){charp[20]={'a','b','c','d'},q[]=abc,r[]=abcde;strcat(p,r);strcpy(p+strlen(q),q);printf(%d\n,strlen(p));}程序运行后的输出结果是A)9B)11C)6D)7(6)若有定义语句:char*s1=OK,*s2=ok;以下选项中,能够输出OK的语句是A)if(strcmp(s1,s2)!=0)puts(s1);B)if(strcmp(s1,s2)!=0)puts(s2);C)if(strcmp(s1,s2)==1)puts(s1);D)if(strcmp(s1,s2)==0)puts(s1);(7)有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母#includestdio.h#includectype.hvoidfun(char*p){inti=0;while(p[i]){if(p[i]==''&&islower(p[i-1]))p[i-1]=p[i-1]-'a'+'A';i++;}}main(){charsl[100]=abcdEFG!;fun(s1);printf(%s\n,s1);}程序运行后的输出结果是A)AbCdEFg!B)abcdEFG!C)abcdEFg!D)aBcDEFG!(8)若有以下定义和语句chars1[10]=abcd!,*s2=\n123\\;printf(%d%d\n,strlen(s1),strlen(s2));则输出结果是A)105B)107C)55D)58(9)有以下程序#includestdio.hintfun(inta,intb){if(b==0)returna;elsereturn(fun(--a,--b));}main(){printf(%d\n,fun(4,2));}程序的运行结果是A)1B)2C)3D)4(10)下列选项中,能够满足“只要字符串s1等于字符串s2,则执行ST”要求的是A)if(s1==s2)ST;B)if(strcpy(s1,s2)==1)ST;C)if(strcmp(s2,s1)==0)ST;D)if(s1-s2==0)ST;函数的定义和返回值(11)以下叙述中正确的是A)函数名代表该函数的入口地址B)所有函数均不能接受函数名作为实参传入C)函数体中的语句不能出现对自己的调用D)如果函数带有参数,就不能调用自己(12)以下叙述中正确的是A)函数既可以直接调用自己,也可以间接调用自己B)任何情况下都不能用函数名作为实参C)函数的递归调用不需要额外开销,所以效率很高D)简单递归不需要明确的结束递归的条件(13)以下关于return语句的叙述中正确的是A)一个自定义函数中必须有一条return语句B)一个自定义函数中可以根据不同情况设置多条return语句C)定义成void类型的函数中可以有带返回值的return语句D)没有return语句的自定义函数在执行结束时不能返回到调用处(14)已定义以下函数intfun(int*p){return*p;}fun函数返回值是A)不确定的值B)一个整数C)形参p中存放的值D)形参p的地址值(15)以下叙述中错误的是A)用户定义的函数中可以没有return语句B)用户定义的函数中若没有return语句,则应当定义函数为void类型C)用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值D)函数的return语句中可以没有表达式(16)以下叙述中错误的是A)函数调用可以作为一个独立的语句存在B)函数形参的值也可以传回给对应的实参C)若函数有返回值,必须通过return语句返回D)C程序必须由一个或一个以上的函数组成函数的调用及要求(17)有以下程序intadd(inta,intb){return(a+b);}main(){intk,(*f)(),a=5,b=10;f=add;…}则以下函数调用语句错误的是A)k=add(a,b);B)k=(*f)(a,b);C)k=*f(a,b);D)k=f(a,b);(18)以下叙述中正确的是A)函数调用时,不必区分函数名称的大小写B)调用函数时,函数名必须与被调用的函数名完全一致C)函数名允许用数字开头D)在函数体中只能出现一次return语句函数的说明(19)若有以下函数首部intfun(doublex[10],int*n)则下面针对此函数的函数声明语句中正确的是A)intfun(double,int);B)intfun(double*x,intn);C)intfun(double*,int*);D)intfun(doublex,int*n);(20)以下选项中叙述错误的是A)在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内B)C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值C)C程序函数中定义的自动变量,系统不自动赋确定的初值D)C程序函数的形参不可以说明为static型变量调用函数和被调用函数之间的数据传递(21)有以下程序intf(intx);main(){intn=1,m;m=f(f(f(n)));printf(%d\n,m);}intf(intx){returnx*2;}程序运行后的输出结果是A)1B)2C)4D)8(22)有以下程序#includestdio.hintfun(intx,inty){if(x==y)return(x);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf(%d\n,fun(2*a,fun(b,c)));}程序运行后的输出结果是A)3B)6C)8D)12(23)有以下程序#includestdio.hintf(intx,inty){return((y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(%d\n,d);}程序运行后的输出结果是A)10B)8C)9D)7(24)有以下程序#includestdio.hdoublef(doublex);main(){doublea=0;inti;for(i=0;i30;i+=10)a+=f((double)i);printf(%5.0f\n,a);}doublef(doublex){returnx*x+1;}程序运行后的输出结果是A)401B)500C)503D)1404(25)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是A)形参只是形式上的存在,不占用具体存储单元B)函数的形参和实参分别占用不同的存储单元C)同名的实参和形参占同一存储单元D)函数的实参和其对应的形参共占同一存储单元(26)有以下程序voidfun(inta,intb,intc){a=b;b=c;c=a;}main(){inta=10,b=20,c=30;fun(a,b,c);printf(%d,%d,%d\n,c,b,a);}程序运行后的输出结果是A)10,20,30B)20,30,10C)30,20,10D)0,0,0(27)有以下程序#includestdio.hintf(intx);main(){inta,b=0;for(a=0;a3;a++){b=b+f(a);putchar('A'+b);}}intf(intx){returnx*x+1;}A)BCDB)BDIC)ABED)BCF(28)若有以下程序voidf(intx){if(x=10){printf(%d-,x%10);f(x/10);}elseprintf(%d,x);}main(){intz=123456;f(z);}则程序的输出结果是A)6-5-4-3-2-1B)6-5-4-3-2-1-C)1-2-3-4-5-6D)1-2-3-4-5-6-(29)有以下程序#includestdio.hintfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);return(p);}main(){printf(%d\n,fun(9));}程序运行后的输出结果是A)5B)9C)4D)7(30)有以下程序#includestdio.hintfun(intn){inta;if(n==1)return1;a=n+fun(n-1);return(a);}main(){printf(%d\n,fun(5));}程序的输出结果是A)14B)10C)15D)9(31)有以下程序#includestdio.hintfun(inta,intb){returna+b;}main(){intx=6,y=7,z=8,r;r=fun(fun(x,y),z--);printf(%d\n,r);}程序运行后的输出结果是A)15B)21C)20D)31(32)以下选项中函数形参不是指针的是A)fun(int&p){…}B)fun(inta[10]){…}C)fun(int*a){…}D)fun(intp[]){…}(33)设有如下函数定义intfun(intk){if(k1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是A)2B)4C)3D)5对函数的进一步讨论(34)有以下程序#includestdio.hintf(intx){inty;if(x==0||x==1)return(3);y=x*x-f(x-2);returny;}main(){intz;z=f(3);printf(%d\n,z);}程序的运行结果是A)9B)0C)6D)8(35)有以下程序(strcat函数用以连接两个字符串)#includestdio.h#includestring.hmain(){chara[20]=ABCD\0EFG\0,b[]=IJK;strcat(a,b);printf(%s\n,a);}程序运行后的输出结果是A)ABCDE\0FG\0IJKB)ABCDIJKC)IJKD)EFGIJK(36)有以下程序intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf(%d
本文标题:函数和数组
链接地址:https://www.777doc.com/doc-4122513 .html