《安徽建筑大学往年计算机C语言选择题(含六卷).docx》由会员分享,可在线阅读,更多相关《安徽建筑大学往年计算机C语言选择题(含六卷).docx(138页珍藏版)》请在课桌文档上搜索。
1、往年计算机C语言选择题(一)(总分100分,考试时长90分钟)一、理论基础(每小题1分,共10分)1、以下叙述中错误的是OA、可以用IyPedef说明的新类型名来定义变量B、typedef说明的新类型名必须使用大写字母,否则会出编译错误C、用typedef可以为基本数据类型说明一个新名称D、用typedef说明新类型的作用是用一个新的标识符来代表已存在的类型名2、下列形式的常数中,c程序不允许出现的是。A、100B、E3C、30.6E-2Ds1.2353、若有条件表达式(exp)a+:b,则以下表达式中能完全等价于表达式(exp)的是A、 (exp=0)B、 (exp!=0)C、 (exp=l
2、)D、 (exp!=l)4、以下叙述中错误的是oA、可以通过typedef增加新的类型B、可以用typedef将已存在的类型用一个新的名字来代表C、用IyPedef定义新的类型名后,原有类型名仍有效D、用IyPedef可以为各种类型起别名,但不能为变量起别名5、结构化程序由三种基本结构组成,三种基本结构组成的算法A、可以完成任何复杂的任务B、只能完成部分复杂的任务C、只能完成符合结构化的任务D、只能完成一些简单的任务6、设x、y、t均为int型变量,则执行语句x=y=3;t=+x+y;后,y的值为一。A、不定值B、4C、3D、17、已知各变量的类型说明如下,则以下不符合c语言语法的表达式是:。
3、intk,a,b;unsignedlongw=5;doublex=l.422;A、x%(-3)B、 w+=-2C、 k=(a=2,b=3,a+b)D、 a+=a=+(b=4)*(a=3)8、设x、y和Z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是。A、X&YB、x0a:-aD、a=l3、有以下程序main()inti;for(i=0:i3;i+)switch(i)(case1:printf(%dl,ri);case2:printf(%dw,i);default:printf(%d,i);()执行后输出的结果是。A、011122B、012C、 012020D、1204、若i
4、nti=10;执行下列程序后,变量i的正确结果是switch(i)case0:i+=l;case10:i+=l;case11:i+=l;default:i+=l;)A、10B、11C、12D、135、以下程序的输出结果是main()(inta=0,i;for(i=;i=0Ilb=0)&(a0Ilb=0&b=0)&(a0&bO)M(a+bOOA、if(x+);B、if(xyUy!=0);Cxif(x0)-elsey+;D、if(yb)if(bc)printf(%dn,d+1);elsePrintf(%d,+d+D;printf(%dn,d);)程序运行后的输出结果是OA、2main()(intk
5、=5;while(-k)printf(w%dM,k-=3);Printf(nw);)执行后的输出结果是A、1B、2C、4D、死循环4、以下程序运行后的输出结果是Jtincludemain()ints=0,k;for(k=7;k=0:k)(switch(k)case1:case4:case7:s+;break;case2:case3:case6:break;case0:case5:s+=2;break;)printf(s=%dn,s);)A、s=5B、s=lC、s=3D、s=75、关于循环体While的说法下列正确的是oA、循环体的执行次数总比条件表达式多一次民循环体的执行次数总比条件表达式少一
6、次C、循环体的执行次数与条件表达式无关D、循环体的执行次数与条件表达式相等6、若变量已正确定义:for(x=0,y=0;(y!=99&xV4);x+)则以上for循环()A、执行3次B、执行4次C、执行无限次D、执行次数不定7、有以下程序:#includemain()(inti=0,a=0;whilc(i20)(for(;;)if(i%5)=0)break;elsei一;)i+=13,a+=i;)Printf(%dn,a);程序的输出结果是。A、62B、63C、23D、368、下列关于宏操作的叙述错误的是A、dorhile的循环体至少无条件执行一次B、while的循环控制条件比do-while
7、的循环控制条件更严格C、do-while允许从外部转到循环体内D, do-whi 1。的循环体不能是复合语句9、以下程序中,while循环的循环次数是 omain()(int i=0;While(KlO)(if(Kl) continue;if(i=5)break;i+;)A、1B、10C、6D、死循环10、break语句的正确的用法是。A、无论在任何情况下,都中断程序的执行,退出到系统下一层。B、在多重循环中,只能退出最靠近的那一层循环语句。Bs A3, 10C、跳出多重循环。D、只能修改控制变量。四、数组/指针数组(每小题1分,共10分)1、下列定义数组的语句中,正确的是OA、 define
8、N10intxN;B、 intN=IO;intxN;C、intx0.10;D、intx;2、下面程序的输出结果是#includemain()(inta=l,2,3,4,5,6,7,8,9,0,*p;p=a;printf(%dn,*p+9);)A、0B、1C、10D、93、二维数组a的每个元素是由6个字符组成的串,其行下标i=0,l,8,列下标j=l.2,10o若a按行先存储,元素a8,5的起始地址与当a按列先存储时的元素()的起始地址相同。设每个字符占一个字节。A、 A8,5C、 5, 8D、 A0, 9)main ()4、下面对二维数组aay的定义,正确的是。A、 int array4;B、
9、 char array3,4;C、 float array(3)(4);D、 float array34;5、已有定义:int i,a10,*p;则合法的赋值语句是A、 p=100;B、 p=a5C、 p=a2+2D、 p=a+2;6、已知:int a2 3;则对数组元素的非法引用是。A、*(a0+2)B、 .al3C、 al0D、*(*(a+l)+2)7、合法的数组定义是.A、 int a6=string);B、 int a5=0,l,2,3,4,5;C、char a=wstiing,;D、char a = (0,1,2,3,4,5;8、以下程序调用findmax函数返回数组中的最大值 fi
10、ndmax(int *a,int n)int *p,*s;for(p=a,s=a; p-asB、*p*sCxapasD、p-aps9、以下对一维数组a的正确说明是A、intn:scanf(%d,n);intan;B、 intn=10,an;C、 inta(10);D、 ttdefineSIZEIOintaSIZE;10、如果用数组名作为实参,则传递给形参的是oA、数组的首地址B、第一个元素的值C、数组元素的个数D、数组中全部元素的值五、字符串/字符串指针(每小题1分,共10分)1、请读程序片段(字符串内没有空格字符):Printf(%dn,strlen(atsn012l);上面程序片段的输出结
11、果是OA、11B、10C、9D、82、下列数据中属于字符串常量”的是。A、ABCB.BCC、ABCD、A3、按照C语言规定的用户标识符命名规则,不能出现在标识符中的是。A、大写字母B、连接符C、数字字符D、下划线4、下列变量定义中,错误的是oA、 intx=3;B、 floatf;d;C、 Strings=Hello!;D、 booleanb=true;5、从键盘上输入某字符串时,不可使用的函数是()。A、getchar()B、gets()Csscanf()D、fread()6、宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个A、单精度数B、双精度数C、常量D、字符串7、下面程序的
12、功能是将字符串S中所有的字符c删除。#includewstdio.hmain()(chars80;inti,j;gets(s);for(i=j=0jsi!=,0;i+)if(si!=c);sj=,O,;puts(s);Assj+=siB、 s+j=siC、 sj=si;j+D、 sj=si8、以下正确的字符串常量是A、B,abc,C、OlympicGamesD、A9、下列的程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,程序空白处应该填写的是#includenain()(charsi=chinesew,s2=japnese;inti;for(i=0;sli!=,0,fis2i!=,
13、0,u+)if(sii=s2ii7)C、在函数内定义的变量是局部变量D、函数的形参是局部变量3、若程序中定义了以下函数 double myadd(double a,double b)(return (a+b);)并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明 是。A、 double myadd(double a,b);B、double myadd(double,double);C、 double myadd(double b,double a);D、 double myadd(double x,double y);4、在C语言中,当函数调用时。A、实参和形参各占
14、一个独立的存储单元B、实参和形参共用存储单元C、可以由用户指定实参和形参是否共用存储单元D、由系统自动确定实参和形参是否共用存储单元5、下列叙述中正确的是 oA、C语言编译时不检查语法B、C语言的子程序有过程和函数两种C、C语言的函数可以嵌套定义D、C语言所有函数都是外部函数6、下列说法不正确的是oA、调用函数时,实参可以是表达式B、调用函数时,实参与形参可以共用内存单元C、调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等D、调用函数时,实参与形参的类型必须一致7、函数定义为fun(int &i),变量定义n=100,则下面调用正确的是A、putcha*(s2i);putch
15、ar(i)puts(sli,i)C、 printf(w%c%dnw,s2i,i)D、printf(w%cm,sii);printf(%dnn,i)10、下列数据中属于字符串常量的是。A、“a”B、ABCD、 4abc0,E、 a六、函数/函数指针(每小题1分,共10分)1、有如下程序:includelongfib(intn)if(n2)return(fib(n-l)+fib(n-2);elseretuin(2);)main()(printf(%dn,fib(3);)该程序的输出结果是。A、2B、4C、6D、82、以下叙述中错误的是。A、在函数外定义的变量是全局变量B、全局变量和局部变量不能同名
16、B、 int y5=0, 1, 2, 3, 4, 5;C、char cl = l ,2 ,3, ,4, ,5,;D、 char c2=a, b, ,c,;3、设有以下语句:Char strl=string,str28,*str3,*str4=string;则下列选项 中,不是对库函数Strcpy的正确调用,此库函数用来复制字符串。A、 strcpy(strl,HELLOl);B、StrCPy(Str2JIIELLO2);C、 strcpy(str3,HELL03);D、 strcpy(str4,HELL04);4、若有定义:int c4 5, (*cp) 5;和语句cp=c;,则能正确引用C数
17、组元素的是A、 Fun(20);B、 Fun(20+n);C、 Fun(n);D、 Fun(&n);8、已有定义int(*p)();指针P可以。A、代表函数的返回值B、指向函数的入口地址C、表示函数的类型D、表示函数返回值的类型9、以下叙述中正确的是oA、构成C程序的基本单位是函数B、可以在一个函数中定义另一个函数C、main()函数必须放在其他函数之前D、所有被调用的函数一定要在调用之前进行定义10、PUtChar()函数可以向终端输出一个。A、整型变量表达式值B、字符C、字符串D、实型变量值七、指针(每小题1分,共10分)1、以下二维数组C的定义形式是。A、intc3B、 floatc3,
18、4C、 doublec34D、 floatc3)4)2、以下不正确的定义语句是oA、doublex5=l.0,2.0,3.0,4.0,5.0;Ascp+1Bs*(cp+3)C、 *(c+l)+3D、 *(*cp+2)5、字符串指针变量中存入的是oA、字符串B、字符串的首地址C、第一个字符D、字符串变量6、若定义了intm,n=0,*pl=&m;则与m=n等价的语句是Asm=*plB、*pl=8t*nC、*pl=*&nD、*&pl=&*n7、以下关于宏的叙述中正确的是。A、宏名必须用大写字母表示B、宏定义必须位于源程序中所有语句之前C、宏替换没有数据类型限制D、宏调用比函数调用耗费时间8、程序运
19、行过程中常使用参数在函数(过程)间传递信息,引用调用传递的是实参的A、地址B、类型C、名称D、值9、 inta10;合法的数组元素的最小下标值为一A、IOB、9C、1D、O10、C语言中函数返回值的类型是由决定的.A、函数定义时指定的类型B、return语句中的表达式类型C、调用该函数时的实参的数据类型D、形参的数据类型八、结构体(每小题1分,共10分)1、在C语言中,系统为一个结构体变量分配的内存是OA、各成员所需内存量的总和B、结构体第一个成员所需的内存量C、成员中占内存量最大者所需的容量的整数倍D、结构体中最后一个成员所需的内存量2、以下叙述中正确的是0A、使用typedef定义新类型名
20、后,新类型名与原类型名实际上是等价的B、结构体类型中的各个成分均不能是数组或指针C、结构体类型的变量,不能在声明结构体类型组成时一起定义D、元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义3、下面定义结构变量的语句中错误的是oA、 structstudentintnum;charname20;)s;B、 structintnum;charname20:s;C、structstudentintnum;charname20;;structstudents;D、structstudentintnum;charname20:;students;4、表达式*(int*)(p+l)+2)的
21、值时.staticstruct(intx,y3;a3=1,2,3,4,5,6,7,8,9,10,11.12,*p;P=a+1;A、3B、7Cs10D、115、定义共用体的关键字是。A、 unionB、 enumC、 structD、 typedef6、有以下程序structstucharnum10;floatscore3;);main()(structs3=,200290,95,85,n2002295,80,75,20023,100,95,90,*p:inti;floatsum=0;p=s+2;for(i=0;iscorei;printf(%6.2fn,sum);)程序运行后的输出结果是OA、
22、250.00B、250C、285.00D、2857、以下SCanf函数调用语句中不正确的是structpupil(charname20;intage;intsex;)pup5,*p=pup;A、scanf(%spup0.name);B、SCanf(d,&pup0.age);C、scanf(%dn,p-age);D、scanf(%dw,(p-sex);8、有以程序includestu#includetypedefstruct.charname9;charsex;floatscore2;stu;voidf(stua)(stub=zhaow,m,85.0,90.0;inti;strcpy(a.nam
23、e,b.name);a.sex=b.sex;for(i=0;idata.aD、p.data,a10、设有以下语句typedefstructtt(charc;inta4;)cin;则下面叙述中正确的是OA、可以用TT定义结构体变量B、TT是StrUCt类型的变量C、可以用CIN定义结构体变量D、CIN是SIrUClTT类型的变量九、程序题(每小题1分,共10分)1、下述程序段的运行结果是0main()(staticinta33=1,2,3,4,5,7,8,9;intb32,i,j;for(i=0:i3;i+)(for(j=0;j3;j+)(bij=aji+aij;printf(,%5d,bij)
24、;printf(,n,);)18A、247B、 2610C、 181410return(a);void main O(int k=2,m=l,n;n=fun3 (k);n=fun3(m);printf (*%dnn, n);A、3B、4C、6D、95、如下程序,输入错误的为 void main OA、随机值B、0C、x的地址D、P的地址4、下面程序的输出是.int fun3(int x)static int a=3;a+=x;D、 18232、下列程序的执行结果是#includemain()(inta,b,c;a=b=2;c=(a+)-1;printf(%d,%c,a,c);c+=-a+(+b
25、);printf(%d,%d,a,c);)A、 3,14,1B、 3,14,2C、 2,04,1D、 2,14,13、若有定义:int*p,x=0,*p,p=&x;,则语句printf(%dn,*p);的输出结果是inta;intb;scanfC%d%drfta,ftb);printf(w%d%d,a,b);)A、1【空格】2【回车】B、1Tab)2【回车】C、1【回车】2【回车】D、1【分号】2【回车】6、若有定义:inta=7;floatx=2.5,y=4.7;则以下输出的结果是printf(,%fx+a%3*(int)(x+y)%24);O。while (pb=bl) strcpy(b2
26、,pb);printC,%dn,*,strlen(b2);A、8B、3Cs 1D、710、下面程序的输出结果为 onain()( yint a,b;b=(a=3*5,a*4fa*5);Printf(%d,b);A、60B、75C、65D、无确定值A、2.5B、2.75C、3.5D、O7、下列程序段的输出结果为()。floatk=0.8567;printf(,%06.lf%k*100);A、0085.6%B、85.70%C、85.60%D、0.8578、有以下程序:ttincludemain()inta=l,b=0;printf(n%d,b=a+b);printf(%dn,a=2+b);程序运行
27、后的输出结果是.A、0,0B、1,0C、3,2D、1,29、以下程序的输出结果是ttincludettincludemain()chaibl8=wabcdefg,b28,*pb=bl+3;参考答案17、C【解析】由算术运算符组成的表达式中,若含有不同类型的操作数,则系统隐含地将低类型转化为高一、理论基础类型,由低至高的顺序为intfloatdouble01、B18、C2、B【解析】三目运算符的判断条件要求返回值是逻辑值。该题中M的返回值是逻辑值真,而在C语言3、B中非0值都能表示逻辑值真。【解析】条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算19、A符。条件表
28、达式的般形式为:表达式17表达式2:表达式3【解析】运算符M是按位异或运算符,其运算规则是:参与运算的两个二进制数,若相对应的二进其求解顺序是:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件制位上的数相同,则该位的结果为0:否则该位的结果为1。可得:表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。并0x130x17=1001110111=0x04且注意+、的用法。20、C4、A二、控制结构5、C1、A6、C【解析】在C程序中,判断逻辑值时,用非0表示“真”,用0表示“假工计算逻辑表达式时,逻辑表【解析】C语言中在做逻辑或运
29、算时,自左向右判断各个参加或运算的表达式,旦运算到某式的值达式的值为“真”是用1表示的,若逻辑表达式的值为“假”,则用0表示。为非零时,表明整个表达式一定为真,余下的语句则不再进行运算。本题中,+X的值为真,则+y2、B并没有进行运算,所以y值不变。3、A7、A【解析】当执行SWiICh语句时,首先计算紧跟其后一对括号中的值,然后在语句体内寻找与该值吻合8、D的CaSe标号。若相等,则执行该标号后开始的各语句,包括在其后的所有CaSe和default后的语句,9、B直到switch语句体结束。10、B4、D11、C5、A12、B6、C13、C7、C14、C【解析】C语言规定,在“if(表达式)
30、语句l;else语句2:”这种形式的if语句中,在每个else前面有15、A一个分号,整个语句结束处有一分号。在本题的C)选项中,else前面少了一个分号,这样程序在编16、C译时,会出现语法错误。8、D9、A【解析】本题考查嵌套if语句中eke的配对。本题中eke和第二个if即if(bc)配对。由于ab不成立,因此整个程序只输出Printf(%dn”,d),即输出2。10、D三、循环结构1、C2、D3、A4、D5、B6、B【解析】本题重点考查for语句的循环次数,for(x=0,y=0;(y!=99&x20,循环结束。8、A【解析】ViSUalFOXPrO中,支持两种类型的菜单,分别是条形菜
31、单和弹出式菜单。菜单系统一般是一个下拉式菜单,它是由一个条形菜单和一个弹出式菜单所组成的。9、D10、B四、数组/指针数组1、A【解析】数组说明的一般形式为:类型说明符数组名常量表达式。B选项中N是变量,不能用变量定义数组长度。C选项中数组长度是非法的一串数字。定义数组时必须为其指明长度,D选项中数组长度为空,所以非法。2、C【解析】此题考查了指针引用一维数组元素的方法。*p+9因为运算符“”的优先级高于“+”,所以输出结果为P指向的元素1,然后加9,值为10。3、B【解析】二维数组A0:8,1:10,设起始地址为0,数组元素Ai,j按行存储公式为:Loc(Ai,j)=Ll+(i-l)U2d+
32、(j-l)d,数组元素Ai,j按列存储公式为:Loc(Ai,j)=Ll+(j-l)U2d+(i-l)d,可得i=3.j=10o4、D5、D【解析】本题中定义了一个整型数组a和一个整型指针变量p。选项A中将一个整型数赋值给一个指针变量,C语言规定,只能将地址赋给指针变量,故选项A不正确.选项B中a5为一数组元素,同样不是一个地址,故选项B不正确。选项C中a2为一数组元素,同样是一个整型数据,不是个地址,故选项C不正确。数组名a代表数组首地址,首地址加2代表第3个元素的地址,将该地址赋值给指针变星,故选项D正确。所以,4个选项中选项D符合题意。6、B7、D8、B9、D10、A【解析】将数组传递给函
33、数时,实际上是传递数组第一个元素的地址给函数,即数组的首地址。五、字符串/字符串指针1、C【解析】在函数外定义的变量是全局变量;在函数内定义的变量是局部变量;函数的形参是局部变量;若2、B全局变量和局部变量同名,则在该函数内,此全局变量会被屏蔽,在该函数内访问的是局部变量,与同名的3、B全局变量不发生任何关系。本题答案为B选项。【解析】C语甫的标识符要符合以卜规定:3、A标识符是个以字母或下划线开头的,由字母、数字、下划线组成的字符串:4、A标识符不能与任意一个关键字同名:5、D标识符中的字母区分大小写。6、B故本题应该选择Bo7、C4、B【解析】本题考查函数的调用。当函数的参数是引用类型时,
34、参数不能是常量、表达式和变量地址,【解析】A选项定义了一个整型:C选项定义了一个字符串:D选项定义了一个布尔型变量:B选项只能是变量本身。中的f;d不符合标识符规范,因而选B。8、B5、A9、A6、D10、B【解析】宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个字符串。这样,在源程七、指针序被编译器处理之前,预处理器会将标识符替换成所定义的字符串。1、C7、A2、B8、A【解析】本题考查对一维数组的赋值。选项B)中,y5说明数组中有5个元素,但却给它赋了6个9、C值,数组溢出所以是错误的。【解析】PUtChar(三)的功能是把字符S输出到标准输出设备;PUtS(Sl)是把Sl指向的字符串输出到标准3、C输出设备。4、D10、A5、B六、函数/函数指针6、C1、B7、C【解析】本题考查函数的递归调用。fib(3)=fib(2)+fib(l),而fib(2)的返回值为2,fib(l)的返回值也为8、A2,故输出的fib(3)的值为4。【解析】进行函数调用时,常需要在调