c语言备考习题及部分答案.doc_第1页
c语言备考习题及部分答案.doc_第2页
c语言备考习题及部分答案.doc_第3页
c语言备考习题及部分答案.doc_第4页
c语言备考习题及部分答案.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、判断题1.在函数定义中,形参变量有时也可以是全局变量。(2.在C程序中,函数调用可以作为函数的形参。3.在C程序中,函数调用可以作为函数的实参。4.在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是指针类型。5.对任一变量一旦被指定为某一确定类型后,该变量在程序运行时所占存储空间的多少和所能参加的运算类型便已确定了。(6.C语言程序必须包含库函数。(7.如果被定义函数的返回值是整型,可以不必进行说明。(8.一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量。(9.return语句可以带有表达式也可以不带。(10.若某自定义函数中无return语句,则该函数一定没有返回值。11.在C语言中,变量的初始化都是在编译阶段完成的。12.在同一源文件中,全局变量与局部变量同名,在局部变量作用范围内,全局变量的值等于局部变量的值。13.return语句作为函数的出口,在某一个函数体内必须唯一。(14.C语言程序必须包含库函数。(15.C语言中,任意两个函数间不能嵌套定义,但可以互相调用。(16.在函数的定义中,若函数没有参数,则可以省略函数名后的括号。17.函数返回值的数据类型取决于return语句中表达式的数据类型。18.函数返回值的数据类型取决于主调函数传递过来的实参的数据类型。19.函数返回值的数据类型取决于函数定义时为函数指定的数据类型。20.在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是地址量。21.C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是整个数组。22.C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首元素值。23.C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首地址值。24.求n!既可以用递归的方式,也可以用递推的方式。(25.递归函数在实现过程中,要使用“堆栈”这种数据结构来保存递归调用过程中的值。26.在C语言中,所有函数之间都可以相互调用。27.一个C程序无论有多少个源程序文件组成,在其中一个源程序文件中定义的全局变量的作用域默认为整个C程序。28.一个C程序无论有多少个源程序文件组成,在其中一个源程序文件中定义的全局变量的作用域默认为其所在的源程序文件。29.在C程序的主函数main中定义的变量就是全局变量。30.在C程序的主函数main中定义的变量也是局部变量。31.在函数定义中,形参变量是局部变量。32.在函数定义中,形参变量可以是静态变量。33.在一个函数定义中,只能有一个return语句。34.在一个函数定义中,可以根据需要使用多个return语句。35.在C程序中,函数可以嵌套定义,也可以嵌套调用。36.在C程序中,函数不能嵌套定义,但可以嵌套调用。37.在C程序中,函数既不能嵌套定义,也不能嵌套调用。38.在C程序中,函数调用只能作为单独语句出现。39.在C程序中,函数调用不能作为单独语句出现。40.在C程序中,函数调用只能出现在表达式语句中。41.在C程序中,函数调用不能出现在表达式语句中。42.在C程序中,函数调用既可以出现在表达式语句中,也可以作为单独的语句出现。43.在C函数中,形参可以是变量、常量或表达式。44.在C程序中,实参可以是变量、常量或表达式。45.C语言规定,函数调用时,若形参和实参都是简单变量,则它们之间的数据传递方式是双向值传递。46.C语言规定,函数调用时,若形参和实参都是简单变量,则它们之间的数据传递方式是单向值传递。47.如果一个函数只能被本文件中的其他函数所调用,则该函数为外部函数。二、单选题1.C语言中,以下叙述中错0的是(A)。A)主函数中定义的变量是全局变量B)同一程序中,全局变量和局部变量可以同名C)全局变量的作用域从定义处开始到本源程序文件结束D)局部变量的作用域被限定在其所定义的局部范围中2.C语言中,以下叙述正确的是()。A)函数不能嵌套定义但可以嵌套调用B)函数可以嵌套定义也可以嵌套调用C)函数可以嵌套定义但不能嵌套调用D)函数不能嵌套定义也不能嵌套调用3.C语言中,函数调用时若实参是数组名,则被调函数对应形参()。A)可以是相应类型简单变量B)必须是相应类型数组名C)可以是相应类型数组名D)必须是相应类型的指针变量4.C语言中,函数调用时若实参是数组名,则被调函数对应形参(D)。A)可以是相应类型简单变量B)必须是相应类型的指针变量C)必须是相应类型数组名D)可以是相应类型的指针变量5.在下面C语言的函数说明语句中,正确的是()。A)intfun(int,int);B)intfun(intx,y);C)intfun(x,y);D)intfun(intx;inty);6.在C程序中,如果限定一个局部变量只能在所定义的范围中起作用,那么这个变量的存储类型(C)。A)只能是autoB)只能是externC)可以是auto或staticD)可以是extern或static7.在C语言中,若定义函数时未说明函数的类型,则该函数的数据类型为(A)。A)intB)floatC)charD)double8.在C语言中,函数默认的存储类型为(D)。A)autoB)registerC)staticD)extern9.C语言中规定,简单变量做实参时,它和对应形参之间的数据传递方式是(B)。(A)地址传递(B)单向值传递(C)有实参传给形参,再由形参传回给实参(D)由用户指定传递方式10.如果在C程序中有main(intargc,char*argv),那么(D)是指命令行中的参数个数。(A)argv(B)argv(C)argc,argv(D)argc11.如果程序中有staticcharc;则编译程序会对其自动设置初值为(D)。(A)n(B)n(C)0(D)012.在C函数中,局部变量的隐含存储类型是(A)。(A)auto(B)static(C)register(D)extern13.C程序在(C)可以使用表达式A)函数内部B)函数外部C)程序的任何地方D)变量出现的地方14.在C语言中,函数返回值的数据类型取决于(C)。A)函数的名字B)return语句中表达式的数据类型C)在定义该函数时所指定的数据类型D)主调函数的数据类型15.在一个源程序文件中定义的全局变量,其作用域为(B)。A)整个源程序文件B)从定义处开始到本源程序文件结束C)整个主函数D)所处C程序的所有源程序文件中16.C语言中,以下叙述中错0的是(C)。A)同一程序中,全局变量和局部变量可以同名B)局部变量的作用域被限定在其所定义的局部范围中C)同一程序中,全局变量和局部变量不能同名D)全局变量的作用域从定义处开始到本源程序文件结束17.在C程序中,同一程序中的各函数之间(A)。A)既允许直接递归调用也允许间接递归调用B)既不允许直接递归调用也不允许间接递归调用C)允许直接递归调用但不允许间接递归调用D)允许间接递归调用但不允许直接递归调用18.C语言中,以下叙述错0的是(D)。A)函数调用可以是单独的语句B)函数调用可以出现在表达式中C)函数调用可以作为函数的实参D)函数调用可以作为函数的形参19.在C语言中,函数调用时如果相应的形参和实参都是简单变量,则主调函数和被调函数之间传递数据的方式是(C)。A)单向地址值传递B)双向地址值传递C)单向数值传递D)双向数值传递20.在C程序的函数调用时,主调函数中的实参和被调函数中的形参(B)。A)个数、次序必须相同,但数据类型可以不考虑B)个数、次序和对应参数的数据类型都应该相同C)个数、次序和数据类型均可以不相同D)对应参数数据类型应相同,但个数和次序可以不考虑21.C语言中,以下叙述错0的是(C)。A)函数被调用时,系统才为形参分配内存B)实参和对应形参的数据类型必须一致C)实参可以是变量、常量或表达式D)形参可以是变量、常量或表达式22.C语言中,函数调用时若实参是数组名,则传递给被调函数对应形参的是(D)。A)整个数组B)数组元素的个数C)数组占用的内存单元个数D)数组在内存中存放的首地址23.在一个void类型函数的定义中,函数体中有return;语句,该语句(B)。A)是错0的B)表示向主调函数返回程序控制C)在执行时不予理睬D)在执行时会中断程序运行24.下列程序的输出结果是(A)viodf(int*m)while(*m)-);printf(%d,+(*m);main()intx=50,*p=&x;f(p);(A)0(B)1(C)49(D)5025.下述函数的功能是(D)。intfun(char*x) char*y=x;while(*y+);returny-x-1; (A)将字符串x连接到字符串y的后面(B)求字符串的存放位置(C)比较两个字符串的大小 (D)求字符串的长度26.以下对C语言函数的有关描述,正确的是(A)。(A)在C中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参(B)C函数既可以嵌套定义又可以递归调用(C)函数必须有返回值,否则不能使用函数(D)C程序中有调用关系的所有函数必须放在同一个源程序文件中27.以下程序的输出结果是(B)intm=4,n=6;max(intx,inty)intmax;max=xy?x:y;return(max); main()intm=10; printf(%d,max(m,n); A)4B)10C)6D)528.在C语言的函数概念中,以下叙述正确的是(A)。A)函数调用时,形参和与其对应的实参各占独立的存储单元B)函数调用时,形参和与其对应的实参再不同名时才各占独立的存储单元C)形参在函数调用时不占存储单元D)函数没有被调用时,形参也要占据内存单元29.在C语言的函数概念中,以下叙述正确的是(A)。A)函数没有被调用时,形参不会占据内存单元B)函数调用时,形参和与其对应的实参再不同名时才各占独立的存储单元E)形参在函数调用时不占存储单元F)函数没有被调用时,形参也要占据内存单元30.C语言中,一个函数调用语句为fun(e1,e2,e3),(e4,e5),e6);,其实参个数为(A)。A)3个B)4个 C)5个D)6个31.在一个char类型的函数定义中,函数体中有return0;语句,该语句(B)A)是错0的 B)能正确向主调函数返回整型数0C)在执行时不予理睬D)在执行时会中断程序运行32.下面函数fun的功能是(D)。intfun(char*s,char*t)while(*s=*t)if(*s=0)return0;elses+,t+;return*s-*t;A)测字符串s和t的长度B)将字符串s拷贝到tC)将字符串t拷贝到sD)比较字符串s和t的大小33.在下列程序中,调用f(8)的值是(D)intf(intn)if(n=1)return(1);elseif(n=2)return(2);elsereturn(f(n-1)+f(n-2);(A)13(B)21(C)55(D)3434.在执行程序china.exe时,若输入的命令行为:chinaenlishBeijing,则程序执行结果为(A)。#includevoidmain(intargc,char*argv)while(argc1)printf(%c,*+argv);argc-;(A)eB(B)ceB(C)chinaenlishBeijing(D)enlishBeijing35.在下面C语言的函数说明语句中,正确的是(A)。A)intfun(intx,inty);B)intfun(intx,y);C)intfun(x,y);D) intfun(intx;inty);三、多选题1.下列说法正确的是(BDE)A)若某自定义函数中无return语句,则该函数一定没有返回值。B)C语言的编译系统对宏命令的处理是在对源程序中其他成份正式编译之前进行的。C)在C语言的源程序中,注释使用越多,编译之后的可执行程序的执行效率越低。D)如果strcmp(s1,s2)的返回值为负数,则表明字符串s1一定小于字符串s2。E)一个C程序可由多个源文件组成。2.C语言中,若在一个复合语句和复合语句所在的函数中都定义了一个同名的变量,则该两变量(C)。A)实际是同一变量 B)是不同变量但作用域相同C)是不同变量且作用域不同D)是同一变量,但作用域不定3.C语言的函数定义中,如果函数的返回值为0255之间的整数,则函数的返回类型可以定义为(ACE)。A)intB)floatC)charD)doubleE)long4.C语言中,若要限定一个全局变量只能在其所定义的源程序文件中使用,定义是必须使用关键字(D)。A)autoB)register C)externD)static5.C语言中,形式参数不能使用的存储类型说明为(BCDE)。A)autoB)register C)externD)staticE)staticregister6.一个函数的返回值类型为void,则函数体中(AB)。A)可以没有return语句 B)可以有return;语句C)仍然需要returnexp;语句D)可以有return0;语句E)可以有return0.0;语句7.一个函数的说明语句为intfun(intx);,a、b为整型变量且初值为0,则正确的函数调用语句为ABCDEA)printf(“%dn”,fun(a+b); B)b=fun(a);C)a=fun(b); D)fun(a);E)printf(“%d”,fun(a+b+10);8.以下说法正确的是(ACD)A)形参类型定义属于函数的首部B)凡是用括起的部分称为函数体C)任何表达式加上一个分号均构成语句 D)一行可以写多个语句E)C语言的输入输出是用输入输出语句实现9.下列符号中可以用作自定义函数名的是(BCD)。(A)int(B)go_to(C)INT(D)Getchar(E)typedef10.在C语言中,存储类有(BCDE)。A)charB)externC)staticD)registerE)auto11.在C语言中,对函数而言正确的概念有(BCD)。A)函数可以嵌套定义B)函数不能嵌套定义C)函数可以嵌套调用D)函数可以递归调用E)函数可以没有返回值12.C语言中,对存储类型static而言,正确的是方法为(ABCD)。A)作用于局部变量B)作用于全局变量C)作用于数组 D)作用于构造数据类型变量E)作用于形式参数13.一个函数定义中的形式参数如果为简单变量形式,调用时对应的实参可以是(ABCD)。A)同类型的简单变量B)同类型的常数C)同类型的数组元素D)同类型的地址量E)同类型的数组名14.在定义函数时,函数的存储类型可以(ADE)。A)是static B)是autoC)是registerD)是externE)省略15.假设变量a,i均已正确定义并赋值,则以下合法的C语句有(ACDE)A)a=1;B)+iC)a=(int)i+2.5;D)sqtr(a);E);16.C语言规定,调用一个函数时,实参变量和形参变量之间的数据是(BE)。(A)地址传递(B)值传递(C)由实参传给形参,并由形参传回给实参(D)由用户指定传递方式(E)类型必须一致17.在函数调用过程中,下列说法正确的是(ACDE)(A)形式参数和实在参数各占一个独立的存储单元(B)形式参数和实在参数存储空间都是在函数调用时分配的(C)在函数的执行过程中,形参变量值的改变不会影响实参值的改变(D)函数调用结束时,临时存储区被撤消(E)在函数调用过程中,实在参数与形式参数在个数、类型上必须匹配18.以下正确的说法是(ABE)A)C语言有四种存储类:auto、register、static和extern。B)C语言提供的for、while和do-while等三种循环语句可以做等价变换。C)C语言提供的结构类型不允许其成员具有不同的数据类型。D)C语言允许用typedef来定义一种新的数据类型。E)C语言允许经常在程序中使用的常量用宏定义来定义。19.C语言中,局部变量默认的存储类型是(A)。A)autoB)register C)externD)static20.在下面C语言的函数说明语句中,正确的是(AE)。A)intfun(int,int);B)intfun(intx,y);C)intfun(x,y); D) intfun(intx;inty);E)intfun(intx,inty);四、填空题1.下面程序的功能是求三个数的最小公倍数,请填空完成程序。#includevoidmain() intmax(intx,inty,intz); intx1,x2,x3,k=1,j,x0; scanf(“%d,%d,%d”,&x1,&x2,&x3); x0=max(x1,x2,x3); while(1) j=x0*k; if(_ ) break; k+=1; printf(“Theresultis%dn”,j);intmax(_) if(xy&xz) returnx; elseif(_) returny; else returnz; (8)J%X1=0&J%X2=0&J%X3=0(9)INTX,INTY,INTZ(10)YX&YZ2.函数fun的功能是求一个整数num各位数字之积,请填空完成函数。#includelongfun(_ ) longk=1; num=abs(num); do k*=_; num/=10; while(_) returnk; (1)INTNUM(2)NUM%10(3)NUM(或NUM!=0)3.下面程序的功能是用递归的方法将一个整型数num的各位数字转换为对应的数字字符输出,请填空完成程序。#includevoidmain() voidconvert(intn); intnum;scanf(“%d”,&num); if(num0) putchar(-); num=_; convert(num); voidconvert(intn) intj; j=n/10; if(_) convert(_) putchar(_) (18)-NUM(19)J!=0(20)J(21)N%10+04.下面程序的功能是将十进制数转换为二进制数输出,请填空完成程序。#includevoidmain() intconvert(inta); inta,e10,c,j=0; scanf(“%d”,&a); while(a!=0) c=_; a/=2; ej=c; j+; for(_) printf(“%d”,ej-1); intconvert(inta) intc; c=_ ; returnc; (22)CONVERT(A)(23);J0;J-(24)A%25.函数binsearch的功能是对具有n个按升序排列元素的整型数组st按折半查找法(二分查找法)查找其中的关键字key,请填空完成函数。intbinsearch(intst,intn,intkey) intlow=0,high=_,mid; while(low=high) mid=(low+high)/2; if(key=stmid) return_ ; elseif(keystmid) return_; else return_; return0;(14)HIGH=N-1(15)MID(16)LOW=MID+1(17)HIGH=MID-16.任何程序都可调用标准函数exit(),当它被调用时,它(_)程序的执行。终止7.以下函数的功能是求一个3*4矩阵中最小元素。请填空。fun(inta4)inti,j,k,min;for(i=0;i3;i+) for(j=0;jMIN 8.下列程序利用二分法求解方程2x3-4x2+3x-6=0在(0,3)之间的根,请填空#include#include#definef(x)(2*x-4)*x+3)*x-6voidmain()floateps=1.0e-5; floatx1=0,x2=3,x,fval; x=(x1+x2)/2; fval=f(x); while(_) if(f(x)EPSX=(X1+X2)/2 9.下面程序的功能是将字符串中的数字字符删除后输出。请填空。#includevoiddelnum(char*s) inti,j; for(i=0,j=0;si!=0;i+) if(_) sj=si; j+; sj=0; voidmain() char*item; printf(ninputstring:); gets(item); delnum(item); printf(n%s,item); SI9 10.下面的程序通过average计算数组中各元素的平均值,请填空。floataverage(int*pa,intn)intx;floatavg=0.0;for(x=0;xn;x+)avg=avg+_;avg=avg/n;return(avg);voidmain()inta5=2,4,6,8,10;floatmean;mean=average(a,5);printf(mean=%fn,mean); *(PA+X)或PAX 11.下列函数的功能是判断一个正整数是否是素数。若是素数,则返回值为1,否则返回值为0。请下列完善程序。intprime(intn)inty=1,i; for(i=2;i=n/2;i+) if(_)y=0;break; return(y); N%I=0 12.以下函数的功能是:求x的n次方。请完善程序。doublef1(doublex,intn)inti; doublek; for(i=1,k=x;i1)r=_*f(n-1);elser=1;return(r); N 14.下面的函数用以验证命题:100以内的奇数的平方被8整除,余数均为1,若命题成立,则返回1,否则返回0。请填空完成该函数。intfunc() inta,flag=1; for(a=1;a=0。floatpower(floatx,inty) floatz; for(z=1;y0;y-=1)z_x; return(z); =Z* 16.以下程序用于求取两个整数的最大公因子。intmcf(inta,intb) inttemp; while(b) temp=_; a=b; b=temp; return(a); A%B 17.函数rewind的作用是_。使指针指向文件的开头 18.以下函数的功能是比较两个字符串的大小,若相等返回值为0,若不相等则返回第一个不相等字符之差。请填空。fun(char*s,char*t)while(*t+=*s+); return(_);*S-*T 19.在C语言中,一个函数一般均由两个部分组成,他们分别称为_和_。(2)函数首部(或函数头) 20.下列函数是用于求n个学生成绩的平均分、最低分和最高分。可通过调用该函数返回到调用函数。请完善程序。floataverage(floatarray,intn,_) inti; floatsum; sum=array0; _; for(i=1;i*max)*max=arrayi; if(arrayi*min)*min=arrayi; sum=sum+arrayi; return(_); FLOAT*MAX,FLOAT*MIN*MAX=*MIN=ARRAY0SUM/N 21.下述函数是用二分法查找key值。数组中元素值已按递增次序排列。若找到key则返回对应的下标,否则返回-1。请填空。intbin(doublea,intn,doublekey) intlow,high,mid; low=0; high=n-1; while(_) mid=(low+high)/2; if(keyamid)_;elsereturnmid;return-1;LOW=HIGHHIGH=MID-1LOW=MID+1 22.下述函数是从字符串s中删除从第I个字符开始的n个字符。请填空。voiddel(chars,intI,intn)intj,k,length=0; while(slength)_;-I;j=I;if(_)k=I+n;if(I+n=length)while(klength)sj+=sk+;sj=0;LENGTH+I*S1-*S2 24.以下递归函数是求n!之值。floatfac(intn)floatf;if(n=0|n=1)f=1;elsef=n*_;return(f);FAC(N-1) 五、阅读程序1.下列程序的执行结果是多少?#includevoidmain()intfun(inta); inta=2,j,k; for(j=0;j2;j+) k=fun(a+); printf(%dn,k);intfun(inta)intb=0; staticintc=3; a=c+,b+; returna; 4 2.下列程序的执行结果是多少?#includeintm=13;voidmain() intfun(intx,inty); inta=7,b=5; printf(%dn,fun(a,b)/m); intfun(intx,inty) intm=3; returnx*y-m; 2 3.下列程序的执行结果是多少?#includeintd=1;voidmain()voidfun(intp); inta=3; fun(a); d+=a+; printf(%dn,d);voidfun(intp) intd=5; d+=p+; printf(%d,d); 8,4 4.下列程序的执行结果是多少?#includeintd=1;voidmain()intfun(intp); inta=3; printf(%dn,fun(a+fun(d);intfun(intp) staticintd=5; d+=p; printf(%d,d); returnd; 6,15,15 5.下列程序的执行结果是多少?#includevoidmain() voidfun(int*k); intw=5;fun(&w); voidfun(int*k) (*k)+; printf(%dn,*k+); 6 6.下列程序的执行结果是多少?#includevoidmain() voidfun1(intx,inty,int*sum); voidfun2(intx,inty,int*product); void(*f)(intx,inty,int*pt); inta=10,b=20,c=100; f=fun1; (*f)(a,b,&c); printf(%d,%d,%dn,a,b,c); f=fun2; (*f)(a,b,&c); printf(%d,%d,%dn,a,b,c); voidfun1(intx,inty,int*sum) *sum=x+y; voidfun2(intx,inty,int*product) *product=x*y; 10,20,200 7.下列程序的输出结果是#includemain() intk=4,m=1,p; p=func(k,m);printf(%d,p);p=func(k,m);printf(%dn,p);func(inta,intb) staticintm=1,n=2;n+=m+1; m=n+a+b; Return(m);9,19 8.给出以下程序的运行结果。#includeintx,y,a=15,b=10;voidnum() x=a-b; y=a+b; voidmain() inta=7,b=5; x=x+a; y=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论