您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > C语言考试问题及答案
一、单项选择题:(1)以下叙述中错误的是A)C语言中对二进制文件的访问速度比文本文件快B)C语言中,随机文件以二进制代码形式存储数据C)语句FILEfp;定义了一个名为fp的文件指针D)C语言中的文本文件以ASCII码形式存储数据(2)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是A)feof(fp)B)ftell(fp)C)fgetc(fp)D)rewind(fp)(3)若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为A)0B)1C)-1D)一个非0值(4)下列关于C语言数据文件的叙述中正确的是A)文件由ASCII码字符序列组成,C语言只能读写文本文件B)文件由二进制数据序列组成,C语言只能读写二进制文件C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件(5)以下叙述中不正确的是A)C语言中的文本文件以ASCⅡ码形式存储数据B)C语言中对二进制文件的访问速度比文本文件快C)C语言中,随机读写方式不适用于文本文件D)C语言中,顺序读写方式不适用于二进制文件(6)以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。#includestdio.hmain(){FILE*fout;charch;fout=fopen('abc.txt',’w');ch=fgetc(stdin);while(ch!=’#’){fputc(ch,fout);ch=fgetc(stdin);}fclose(fout);}出错的原因是A)函数fopen调用形式错误B)输入文件没有关闭C)函数fgetc调用形式错误D)文件指针stdin没有定义(7)以下叙述中错误的是A)二进制文件打开后可以先读文件的末尾,而顺序文件不可以B)在程序结束时,应当用fclose函数关闭已打开的文件C)在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据D)不可以用FILE定义指向二进制文件的文件指针(8)在C程序中,可把整型数以二进制形式存放到文件中的函数是A)fprintf函数B)fread函数C)fwrite函数D)fputc函数(9)标准函数fgets(s,n,f)的功能是A)从文件f中读取长度为n的字符串存入指针s所指的内存B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存C)从文件f中读取n个字符串存入指针s所指的内存D)从文件f中读取长度为n-1的字符串存入指针s所指的内存(10)以下程序的功能是进行位运算main(){unsignedchara,b;a=7^3;b=~4&3;printf(%d%d\n,a,b);}程序运行后的输出结果是A)43B)73C)70D)40(11)有以下程序main(){intc=35;printf(%d\n,c&c);}程序运行后的输出结果是A)0B)70C)35D)1(12)设有定义语句:charc1=92,c2=92;,则以下表达式中值为零的是A)c1^c2B)c1&c2C)~c2D)c1|c2(13)有以下程序main(){unsignedchara,b;a=4|3;b=4&3;printf(“%d%d\n”,a,b(;}执行后输出结果是A)70B)07C)11D)430(14)有以下程序main(){intx=3,y=2,z=1;printf(%d\n,x/y&~z);}程序运行后的输出结果是A)3B)2C)1D)0(15)整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是A)x||yB)x|yC)x&yD)x^y(16)设intb=2;表达式(b2)/(b1)的值是A)0B)2C)4D)8(17)设有如下定义:intx=l,y=-1;,则语句:printf(%d\n,(x--&++y));的输出结果是A)1B)0C)-1D)2(18)语句:printf(%d\n,12&012);的输出结果是A)12B)8C)6D)012(19)在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则A)称为函数的直接递归调用B)称为函数的间接递归调用C)称为函数的循环调用D)C语言中不允许这样的递归调用(20)不合法的main函数命令行参数表示形式是A)main(inta,char*c[])B)main(intarc,char**arv)C)main(intargc,char*argv)D)main(intargv,char*argc[])二、多项选择题:(1)C语言规定,程序中各函数之间错误的描述为A)既允许直接递归调用也允许间接递归调用B)不允许直接递归调用也不允许间接递归调用C)允许直接递归调用不允许间接递归调用D)不允许直接递归调用允许间接递归调用(2)以下关于函数的叙述中错误的是A)每个函数都可以被其它函数调用(包括main函数)B)每个函数都可以被单独编译C)每个函数都可以单独运行D)在一个函数内部可以定义另一个函数(3)若程序中定义了以下函数doublemyadd(doublea,doubleB){return(a+B);}并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中正确的说明是A)doublemyadd(doublea,B);B)doublemyadd(double,double);C)doublemyadd(doubleb,doubleA);D)doublemyadd(doublex,doubley);(4)若已定义的函数有返回值,则以关于该函数调用的叙述中正确的是A)调用可以作为独立的语句存在B)调用可以作为一个函数的实参C)调用可以出现在表达式中D)调用可以作为一个函数的形参(5)有以下函数定义:voidfun(intn,doublex){……}若以下选项中的变量都已正确定义并赋值,则对函数fun的错误调用语句是A)fun(inty,doublem);B)k=fun(10,12.5);C)fun(x,n);D)voldfun(n,x);(6)在一个C程序中错误的描述A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置(7)C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型不是A)voidB)intC)floatD)double(8)若有以下程序#includestdio.hvoidf(intn);main(){voidf(intn);f(5);}voidf(intn){printf(%d\n,n);}则以下叙述中正确的是A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数fC)对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明D)函数f无返回值,所以可用void将其类型定义为无值型(9)以下所列的各函数首部中,错误的是A)voidplay(var:Integer,varb:Integer)B)voidplay(inta,b)C)voidplay(inta,intb)D)Subplay(aasinteger,basinteger)(10)以下叙述中正确的是A)在不同的函数中可以使用相同名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效D)在一个函数内的复合语句中定义的变量在本函数范围内有效(11)以下说法中不正确的是A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分(12)在C语言中,不合法的长整型常数是A)0LB)4962710C)0.054838743D)2.1869e10(13)在下列选项中,正确的赋值语句是A)++t;B)n1=(n2=(n3=0));C)k=i==j;D)a=b+c=1;(14)可以把字符串:Hello!赋给数组b的语句是A)charb[10]={’H’,’e’,’l’,’l’,’o’,’!’};B)charb[10];b=Hello!;C)charb[10];strcpy(b,Hello!);D)charb[10]=Hello!;(15)若程序中有下面的说明和定义structabc{intx;chary;}structabcs1,s2;不会发生的情况是A)编译进错B)程序将顺利编译`连接`执行C)能顺利通过编译`连接`但不能执行D)能顺利通过编译`但连接出错(16)不能正确表示a≥10或a≤0的关系表达式是A)a=10ora=0B)a=10│a=0C)a=10││a=0D)a=10││a=0(17)若有以下程序段,w和k都是整型变量:┆w=k;LB:if(w==0)gotoLE;w--;printf(*);gotoLB;LE:┆可以与上面程序段等价的循环语句是A)for(w=k;w!=0;w--)printf(*);B)for(w=k;w;--w)printf(*);C)w=k;D)w=k;while(w--!=0)printf(*);w++;do{w--;printf(*);}while(w!=0);(18)若有说明,double*p,a;则能通过scanf语句不能正确给输入项读入数据的程序段是A)*p=&a;scanf(%lf,p);B)p=(double*)malloc(8);scanf(%f,p);C)p=&a;scanf(%lf,a);D)p=&a;scanf(%le,p);(19)若有以下的说明和语句:main(){intt[3][2],*pt[3],k;fpr(k=o;k3;k++)pt[k]=t[k];}则以一选项中能不能正确表示t数组元素地址的表达式是A)&t[3][2]B)*pt[0]C)*(pt+1)D)&pt[2](20)要求函数的功能是在一维数组中查找值;若找到则返回所在的下标值,否则返回0;数列放在到中。可以正确执行的函数是A)funa(int*a,intn,intx)B)funb(int*a,intn,intx){*a=x;{intk;while(a[n]!=x)n--;for(k=1;k=n;k++)returnn;if(a[k]==x)returnk;}return0;}C)func(inta[],intn,intx)D)fund(inta[],intn,intx){int*k;{intk=0;a[0]=x;k=a+n;dowhile(*k!=x)k--;k++;returnk-n;while((k}if(a[k]==x)returnk;elsereturn0;}(21)若有说明和语句:inta=5;a++;此处表达式a++的值不正确的是A)7B)6C)5D)4(22)在下列选项中,正确的赋值语句是A)++t;B)n1=(n2=(n3=0));C)k=i==j;D)a=b+c=1;(23)若有说明:inti,j=7,*p=&i;,则与i=j;不等价的语句是A)I=*P;B)*P=*&J;C)i=&j;D)i=**p;(24)若有以下说明:inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};charc='a',d,g;则数值为4的表达式不正确的是A)a[g-c]B)a[4]C)a['d'-'c']D)a['d'-c](25)若有以下说明:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为6的表达式不正确的是A)*p+6B)*(p+6)C)*p+=5D)p+5(26)若有以下说明:intw[3][4]o={{0,1},{2,4},{5,8}};int(*p)[
本文标题:C语言考试问题及答案
链接地址:https://www.777doc.com/doc-2908468 .html