《天津城建大学C语言样卷含答案解析.docx》由会员分享,可在线阅读,更多相关《天津城建大学C语言样卷含答案解析.docx(97页珍藏版)》请在课桌文档上搜索。
1、4、下列for循环的次数为ofor(inti=0,x=0;!x&i=5:i+)A、5B、6C、1D、无限5、设有定义doublea10,*s=a;,一下能够代表数组元素a3的是.A、 (*s)3B、 *(s+3)C、 *s3D、 *s+36、下列属于C语言保留字的是。A、IntB、 typedefC、 ENUMUnion7、下列定义数组的语句中,正确的是oA、 intN=IO:B、 #defineN10intxN;intxN;C、intx0.10;DintX;8、条件语句OA、不可以嵌套使用B、可以嵌套使用C、在一条件下可以嵌套使用D、嵌套语句中不能使用CISe子句9、下面不正确的字符串常量是
2、oA、 abc,B、 1212”C、0D、”“10、下列标识符中不合法的是。A、s_nameB、eC、foxD、3DSC语言样卷(一)(总分100分,考试时长60分钟)一、单项选择题(每小题2分,共100分)1、以下选项中正确的整型常量是。A、12.B、-20C、1,000D、4562、若inta=3,则执行完表达式a-=a+=a*a后,a的值是A、-15B、-9C、-3D、03、当从键盘上输入字符”12134211下面程序的输出结果是main()(chars;intvl=0,v2=0,v3=0,v4=0,k;for(k=0;k:v3+;case,2,:v2+;)printfvl=%d,v2=
3、%d,v3=%d,v4=%dn”,vl,v2,v3,v4);)A、v1=4,v2=2,v3=l,v4=lB、v1=4,v2=9,v3=3,v4=lC、vl=5,v2=8,v3=6,v4=lD、vl=8,v2=8,v3=8,v4=8B、3C、2D、114、以下语句或语句组中,能正确进行字符串赋值的是oA、char*sp;*sp=*right!*;Bchars10;s=right!”;C、chars10;*s=*right!*;Dchar*sp=right!”;15、若有下列定义(设int类型变量占2个字节):inti=8,j=9;则下列语句:Printf(i=%d,j=%dn”,i,j);输出的
4、结果是。A、 i=8,j=9B、i=%d,j=%dC、i=%8,j=%9D、8,916、执行下列程序后,i的值是0inti,x;for(i=l,x=l;i=10)break;if(x%2=l)x+=5;continue;)-=3;)A、4B、5C、6D、717、以下叙述中错误的是oA、对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B、数组名代表的是数组所占存储区的首地址,其值不可改变c、当程序执行中,数组元素的下标超出所定义的卜.标范围时,系统将给出“下标越界”的出错信息D、可以通过赋初值的方式确定数组元素的个数18、已知在ascii代码中,字母b的序号为66,以下程序的
5、输出的结果是omain()(charc1=b,c2=d,;printf(%d,%cn*,cl,c2);下程序:int*f(int*x,int*y)if(*x*yreturnx;elsereturny;)main()inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);print(z,%d,%d,%dn*,*p,*q,*r);)执行后的输出结果是OA、7,8,8B、7,8,7C、8,7,7D、8,7,812、若下列选项中的各变量均为整型且已有值,其中不正确的赋值语句是A、 +i;B、 nl=(n2(n3=2);C、 k=i=j;D、 a=b+c=2;13、有以下程序:in
6、tf(intn)(if(n=1)return1;elsereturnf(n-l)+l;)main()inti,j=0;for(i=l;i3:i+)j+=f(i);printf(%dn,j);程序运行后的输出结果是.A、4C、(*p)+=a+D、*(p+)=a+22、若int类型占两个字节,则以下语句输出为oi11tk=-l;printf(*%d,%un”,k,k);A、-1,-1B、-1,65536C、-1,32768D、-1,6553523、在C语言中,函数的数据类型是指()A、函数返回值的数据类型B、函数形参的数据类型C、调用该函数时的实参的数据类型D、任意指定的数据类型24、有以下程序:
7、main()(ints=0.n:for(n=0jn3;n+)switch(s)(case0;easel:s+=l;case2:s+=2;break;case3:s+=3;default:s+=4;)printf(*%d,*s);程序运行后的输出结果是OA、1,2,4,B、 1,3,6,C、 3,10,14,D、3,6,10,25、以下不能正确定义二维数组的选项是。inta=1,;B、inta2=1,2,3,4);A、B,66B、66,DC、B,DD、66,6819、已知CharX口=hello”,y口=h,e,a,b,e;则关于两个数组长度的正确描述是。A、相同B、X大于yC、X小于yD、以上
8、答案都不对20、有以下程序structstu(charname10;intnum;floattotalscore;);voidf(structstu*p)structstus2=*sundan*,20044,550,*penghua*,20045,537,*q=s;+P;+q;*p=*q;)mainO(structstus3=yangsan”,20041,703,Iisiguo”,20042,580;f(s);printf(*%s%d%3.0fn*,sl.name,sl.num,sl.totalscore);)程序运行后的输出结果是OA、SunDan20044550Penghua2004553
9、7C、LiSiGuo20042580D、 SunDan2004170321、变量P为指针变量,若p=&a,下列说法不正确的有。A、&*p=&aB、*&a=aC、简单C语句必须以分号结束D、C语句必须在一行内写完33、设变量定义为intX,*p=&x;”,则&(*p)相当于A、pB、*pCsXD*(&x)34、有以下程序structstu(charnum10;floatscore3;main()(structstus3=2002,90,95,85,20022”,95,80,75,20023”,100,95,90,*p;inti:floatsun=0:p=s+l;for(i=0;iscorei;P
10、rintf(%.3fn”,sum);)程序运行后的输出结果是。A、250.000B、250C、270.000D、27035、若intx=2,y=3,z=4则表达式XVz?y:Z的结果是.A、4B、3C、2D、036现有以下语句:i=l;for(;is2)S;B、if(strcmp(sl,s2)S;C、if(strcmp(s2,si)0)S;D、if(stremp(sl,s2)0)S;30、函数fgetc的作用是从指定文件读入一个字符,该文件的打开方式必须是OA、只写B、追加C、读或读写D、答案B和C都正确31、在下列叙述中,错误的一条是oA、SCanf()函数可以用来输入任何类型的多个数据B、
11、数组名作函数参数时,也采用“值传递”方式C、如果形参发生改变,不会改变主调函数的实参值D、函数的实参与形参的类型应一致32、以下叙述中正确的是oA、C程序的基本组成单位是语句B、C程序中的每一行只能写一条语句C、M3.Ql=kol=3,a11lla0l-2xa!(O-3.all-l40.以下程序BincludtypeicfstructiniUp;)n;voidfac)/注:Cit结构变Irt名/i11tj:(c.b-l;C.p=2:)udn()(inti:aa=1.2;f(a):prinif(*MMn*,b.a.p);)也序运行昭的输出站SIltJA、B.C、D、3个R字的内码K度为2字VJl
12、极个字节的G高二进M位的位分刖为.M0.0BxI.JC10D、0.I43.芳=2,y=3MMy的结果是A、0B、1Cx2以3if瑞句的用本附式足:iM表达犬)瑞句.以卜关于表达区(fl的ft(述中止确的必a、eaitt5iftk6涌见整敷值,ifi-10I)break;R.fori=l;isun*-i:1什;C.i=l;BUfi*=-5;MiT;forJUm:ifbreak:i:37、定义JnF-Iwahim*5.*p;划下列蜘述福谭的妞A.旧式PwI是分法的B. ia-aH足令法的C表达式PF是合法侑Ik点地式川2条合法的刻田以下在洋XincludoTOidf(intp.int*q);114
13、in()(InlFl.n=2.r=*n:f(r.M:printft)A、对一维数组降序排序B、对一维数组升序排序C、对一维数组逆向排序D、对一维数组顺序排序48、c语言中,int型数据在内存中的存储形式是OA、ASCn码B、补码C、反码D、原码49、下列字符串中可以用作C标识符的是。A、 2009varB、 gotoCstest-2009D、-12350、在C程序中,可把整型数以二进制形式存放到文件中的函数是A、fprintf()函数B、fread()函数Csfwrite()函数D、fputc()函数Fc、必须是数D、可以是E意合法的数值44、有以下程4:main()(inti,j;for(j
14、=10;jU;j+)(for(i=9;if(intarray25)8、对于类型相同的两个指针变量之间,不能进行的运算是OA、0)puts(s2);B、if(strcmp(s2,si)0)puts(s2);C、if(strcmp(s2,t)0)puts(s2);D、if(strcmp(sl,t)0)puts(s2);10、下列可用于C语言用户标识符的一组是OA、 void,define,WORDB、 a3_b3,_123,CarC、 For,-abc,IFCaseD2a,DO,sizeof11在C语言中,调用函数除函数名外,还必须有oA、函数预说明B、实际参数C、()D、函数返回值12、c语言的
15、编译系统对宏定义的处理是。A、在程序连接时进行的B、在程序运行时进行的C、在对源程序中的其它语句进行编译前进行的D、和C程序中的其它语句同时进行编译的13、有如下函数定义;voidfunc(inta,int&b)(a+;b+;C语言样卷(二)(总分100分,考试时长60分钟)一、单项选择题(每小题2分,共100分)1、在下列给出的表达式中,与WhiIe(e)中的(e)不等价的表达式是。A、(!E=O)B、(E0E0)C、 (E=O)D、 (E!=0)2、表达式的值是OeA、3%5B、3/5.0C、3/5D、3由以下while构成的循环,循环体执行的次数是intk=0;while(k=l)k+;
16、A、有语法错,不能执行B、一次也不执行C、执行一次D、无限次5、下列说法正确的是。A、在执行C程序时不是从Inain函数开始的B、C程序书写格式严格限制,一行内必须写一个语句C、C程序书写格式自由,一个语句可以分写在多行上D、C程序书写格式严格限制,一行内必须写一个语句,并要有行号6、下列c语言标识符中,合法的是oA、ifreturnC、23aD、a237、已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组away的错intx,a=2,3,4,5,6,7,8,9:x=f(a,3);printf(*%dn*,x);)上面程序的输出结果是.A、20B、14C、9D、519、若有如下定
17、义,则是对数组元素的正确的引用inta10,*p;p=a;A、 *fta10B、 allC、 *(p+ll)D、*p20、有以下程序structs(intn;inta20;voidf(int*a,intn)(inti;for(i=0;in-l;i+)ai+=i;)main()(inti;structss=10,2,3,1,6,8,7,5,4,10,9;f(s.a,s.n);for(i=0;i2结果是a、100ooooo100oiiiiB、0010000000100011C、0000001000111100D、 000000001000111016、下列叙述中正确的是。A、break语句只能用于
18、SWitCh语句B、在switch语句中必须使用defaultC、break语句必须与switch语句中的case配对使用D、在switch语句中,不一定使用break语句17、以下数组定义中错误的是oA、intX3=0;BxintX23=1,2,3,4),5,6);CsintX3=1,2,3,4,5,6):D、intX23=1,2,3,4,5,6;18、请读程序:includef(intb,intn)(inti,r=0;for(i=0;ipxpy,消费者为达到最大效用,他将会OA、增加X商品的购买,减少丫商品的购买B、减少X商品的购买,增加丫商品的购买C、同时增加或者减少X和丫商品的购买D、
19、对X和丫商品的购买数量不发生改变29、下列类型的数据不可以存储在可变型变量中的是oA、整型B、字节型C、单精度型D、日期型30、有以下程序#includemain()(file*fp;inti,k,n;fp=fopen(zzdata.dat,w+);for(i=l;i6;i+)(fprintf(fp,*%d,i);if(i%3=0)fprintf(fp,*n*);rewind(fp);fscanf(fp,找d%d”,&k,&n);printf(%din”,k,n);fclose(fp):程序运行后的输出结果是OA、008、 12345C、14D、1231、若X是int型变量,y是float型变
20、量,所用的scanf调用语句格式为:scanf(*x=%d,y=f*,&x,&y);则为了将数据10和66.6分别赋给X和y,正确的输入应是:。FD、1,2,3,(,8,7,5,4,10,9,21、设变量P崖指针变量,语句p=null;是给指针变量赋null值,它等价于()。ftHA、p=;B、 p=0:C、 p=0;D、 p=;22、在C语言系统中,假设int类型数据占2个字节,则double、Iong、UnSignedint、Char类型数据所占字节数分别多少()。A、8,2,4,1B、2,8,4,1C、4,2,8,1D、8,4,2,123、当接受用户输入的含有空格的字符串时,应使用函数.
21、A、 gets()B、 getchar()Cscanf()D、printf()24、以下叙述中正确的是oA、只要适当地修改代码,就可以将do-while与while相互转换B、对于for(表达式1;表达式2;表达式3)循环体首先要计算表达式2的值,以便决定是否开始循环C、对于for(表达式1;表达式2;表达式3)循环体,只在个别情况下才能转换成while语句D、如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用while语句25、以下叙述中正确的是JA、一条语句只能定义一个数组B、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元C、数组说明符的一对方括号中
22、只能使用整型常量,而不能使用表达式D、在引用数组元素时,下标表达式可以使用浮点数26、假定有以下变量定义:intk=6,x=12;则能使x、k值为5、6的表达式是。A、 x%=+k%10B、 x%=k+k%5C、 -=+k%5D、 -=k+%527、若有以下定义和语句:ints45,(*ps)5;ps=s:则对S数组元素的正确引用形式是OB、25&25C、25&10D、10&2536、在下列叙述中,正确的一条是。A、if(表达式)语句中,表达式的类型只限于逻辑表达式B、语句“got。12;”是合法的Csfor(;:)语句相当于WhiIe(I)语句D、break语句可用于程序的任何地方,以终止程
23、序的执行37、在inta=3,*p=a中,*p的值是00A、变量S的地址值B、无意义C、变量P的地址D、338、下列程序段的执行结果是输出oO则不能把do(printf(*%2dxz,X-);while(!x);A、321B、3C、21D、21039、不能把字符串:hello!赋给数组b的语句是。A、charb10=,H,e,ro,!,;B、charb10;b=*Hello!*;C、charb10;strcpy(b,*Hello!*);D、charb10=Hello!”;40、下列程序的输出结果是Ostructstu(charnum10;floatscore3;intmain()(struct
24、stus320021”,90,95,85,20022”,95,80,75,“20023”,100,95,90;structstu*p=s;A、x=10,y=66.6B、1066.(C、1066.6D、x=10y=66.6V回车32、下列关于自动类型转换的说法中,正确的是A、操作数1是byte类型,操作数2是Iong类型,结果为byte类型B、操作数1是byte类型,操作数2是Iong类型,结果为IOng类型C、操作数1是long类型,操作数2是byte类型,结果是byte类型D、操作数1是long类型,操作数2是byte类型,结果是long类型33、c语言规定,简单变量做实参时,它和对应形参之
25、间的数据传递方式是A、地址传递B、由用户指定传递方式C、双向值传递D、单向值传递:实参的值传给形参34、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b结点b连接到结点a之后的语句是structnodechardata;structnode*next;a,b,*p=&a,*q=&b;A、next=q;Bsnext=&b:Cpnext=b;D、(*p).next=q;35、下面程序的输出结果是一main()(externintm;m-=2;f();printf(*%dn*,m);)intm=7;f()(printfm*m);m+=m;46、各种基本数据类型的存贮空间正确的长度排
26、列为oA、charlongintdoubleB、doublelongintcharCcharintlongdoubleD、intlongchardouble47、以下能正确定义一维数组的选项是0A、 intnum;B、WefineN100intnumN;Cintnum0.100;D、intN=100;intnumN;48、在位运算中,操作数每右移两位,其结果相当于OA、操作数乘以2B、操作数除以2C、操作数除以4D、操作数乘以449以下能正确定义字符串的语句是0Ancharstr=,064,;B、 charstr=kx43;C、 charstr=*;D、charstr=0;50、在C程序中,可
27、把整型数以二进制形式存放到文件中的函数是Afprintf函数B、fread函数C、fwrite函数D、fputc函数inti;floatsumfor(i=0;=0;scorei;printf(a,%6.2f*,sum);return0;A、 260.00B、 270.00C、280.00D、285.0041、结构化程序设计主要强调程序的()Ax效率B、速度C、可读性D、大小42、对于数学式X2a,下面正确的C语言表达式是oA、sqr(x)2asqr(x)2*aC、 sqrt(x)/(2*a)D、 sqrt(x)2*a43、选择出合法的if语句(设intx,a,b,c;)。A、if(a=b)x+
28、;Bnif(a=b)x+;C、if(ab)x+;D、if(a=b)x+;44、下列叙述中正确的是obreak语句只能用于SWitCh语句体中B、continue语句的作用是使程序的执行流程跳出包含它的所有循环C、break语句只能用在循环体内和SWitCh语句体内D、在循环体内使用break语句和continue语句的作用相同45、下面叙述中错误的是oA、主函数中定义的变量在整个程序中都是有效的B、在其它函数中定义的变量在主函数中也不能使用C、形式参数也是局部变量D、复合语句中定义的函数只在该复合语句中有效【解析】本题考查的知识点是:函数参数的传递方式。C的默认参数传递方式是传值,即将实参值的
29、副本传递(拷贝)给被调用函数的形参。如果需要传地址,可通过传递指针、引用或数组类型的参数来实现。传值时,对形参的改变不会影响到实参:而传地址,则会同时改变实参。本题中形参a是普通参数,即传值调用,函数中对a增1不会影响到实参X的值;而形参b是引用,即传址调用,函数中对b增1同时也改变了实参y的值(y也增1了)。故最终结果是O和2,应该选择C。14、B15、B16、D【解析】break语句的功能是跳出正在执行的条件语句或循环语句。它可以出现在switch语句中,也可以出现在循环语句中。default语句的功能是如果所有case后面的语句都不执行的时候,就转去执行default后的语句,它可以省略
30、不写。前面我们说过,break语何可以出现在循环语句中,所以选项C)也是错误的。17、B18、B19、D20、A21、C22、D23、A24、A【解析】B选项中,for语句中需要先求解表达式1;C选项中,for语句使用最为灵活,它完全可以取代while语句;D选项中,对于死循环,也可以使用for语句。因此A选项正确。25、B【解析】A选项中,一条语句只能定义一个数组是不准确的,可以通过一条语句定义多个数组;C选项中,数组说明符的一对方括号中可以是整型常量,可以是整型常量表达式;D参考答案一、单项选择题1、B2、C3、A【解析】本题考查if表达式。if(表达式)中的表达式可以为任何合法的表达式,
31、一般情况下为逻辑、条件表达式,需要注意的是,当等号(=)误写为赋值号(=)时不会报错的,但是其值恒为Io4、D【解析】本题考查while语句,whiIe语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。k=l为赋值语句,即k的值等于LWhile(k=l)=while。)是死循环,执行无限次。5、C6、D7、B8、9、D10、B【解析】C语言规定标识符只能由字母、数字和下画线3种字符组成,且第一个字符必须为字母或下画线,排除选项C)和D);C语言中还规定标识符不能为C语言的关键字,而选项A)中VOid为关键字,故排除选项A)。11、C12、C【解析】所谓“编译预处理”就是在C编译程序对C源程序进行编译前,由编译预处理程序对这些编译预处理命令进行处理的过程。宏定义属于预处理命令,在对源程序中的其它语句进行编译前进行的。本题答案为C选项。指针变量q保存的就是变量b的地址,选项B中的P是指针变量,应该是p-next=b:在选项D中,用*运算符取出结构体变量,并且保存的就是b的地址,所以正确。35、C36、C37、【解析】*P表示指针