《计算机等级考试习题集(二级C语言).pdf》由会员分享,可在线阅读,更多相关《计算机等级考试习题集(二级C语言).pdf(130页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机等级考试习题集(二级C语言)2 0 1 0 年 6 月 2 5 日福建省高校非计算机专业计算机等级考试2c习题集目录第一部分:选择题(每题2 分,2 0 题/套,共 4 0 分).1一、概述.1二、语法基础.2三、控制结构.8四、数组.1 4五、函数.2 1六、指针.2 8七、结构体和共用体.3 5八、链表.3 9九、枚举、自定义类型和位运算.4 6十、文件 4 9第二部分:改错题(每题1 0 分,2 题/套,共 2 0 分).5 3第 1 套.5 3第 2 套.5 5第 3 套.5 6第 4 套.5 8第 5 套.5 9第 6 套.6 0第 7 套.6 2第 1 0 套.6 5第 1
2、1 套.6 7第 1 2 套.6 8第三部分:填空题(每题1 0 分,每套抽2 题,共 2 0 分).7 0第 1 套.7 0第 2 套.7 1第 3 套.7 3第 4 套.7 5第 5 套.7 7第 6 套.7 9第 7 套.8 1579888套套0 891莒莒第 1 2 套.9 4第四部分:编程题(每题1 0 分,2 题/套,共 2 0 分).9 5套套套套套套234567常7901359900001A1x1A1A第 9 套.1 0 8第 1 0 套.1 0 9第 1 1 套.1 1 1第 1 2 套.1 1 2第五部分:参考答案.1 1 4一、选择.1 1 4二、改错.1 1 6三、填空
3、.1 1 8四、编程.1 1 9附录:福建省高等学校计算机应用水平等级考试二级(C 语言)考试大纲1 2 4第一部分:选择题(每题2分,20题/套,共40分)一、槐述1.在 C语言中,合法的字符常量是(DA.字 B.A C.ABC D.x412.下面叙述正确的是(B AA.程序中必须包含有输入语句 B.变量按所定义的类型存放数据C.main函数必须位于文件的开头 D.每行只能写一条语句3.错误的叙述是(D)A.一个C 语言源程序可由一个或多个函数组成B.若一条语句较长,也可分写在下一行上C.C 程序必须包含一个main()函数D.构成C 语言源程序的基本单元是算术表达式4.()是关于C 语言数
4、据类型的正确叙述。AA.变量必须先定义后使用 B.C,枚举类型不是基本类型 D.5.main()函数的位置(B)A.必须在自定义函数前面 B.C.必须位于程序的最前面 D.6.C 语言函数体由(C)括起来。A.B.()C.7.(A)是不正确的叙述。A.注释说明只能位于一条语句的后面C.C 源程序可由一个或多个函数组成8.一个C 语言源程序是由(B)oA.一个主程序和若干子程序组成C.若干过程组成 D.9.结构化程序设计的三种基本结构是A.函数结构、判断结构、选择结构C.顺序结构、选择结构、循环结构10.C 源程序的调试是指对源程序进行不允许使用空类型数组并不是构造类型可以在自定义函数后面必须在
5、自定义函数后面D.B.C 源程序的基本组成单元是函数D.每条语句最后必须有一个分号B.函数组成若干子程序组成(C)oB.平行结构、嵌套结构、函数结构D.判断结构、嵌套结构、循环结构(D)。CA.录 入 与 编 辑 B.查错与编译 C.查错与排错 D.连接与运行11.C 语言中,可将一系列语句置于(C)从而构成复合语句。A.一对尖括号 ”之间 B.一对圆括号“()”之间-1-c.一对花括号“之间 D.一对方框号”厂之间12.构成C 源程序的基本单位是(D)oA.语句 B.变量 C.运算符 D.函数13.以下叙述中正确的是(C)。AA.C 源程序中注释部分可以出现在程序中任意合适的地方B.一对花括
6、号”“只能作为函数体的定界符C.C 源程序编译时注释部分的错误将被发现D.构 成 C 源程序的基本单位是函数,所有函数名都可以由用户命名二、错收索础14.C 语言的下列运算符中,优先级最高的运算符是().A.15.+B.+=C.ll D.!=()为正确的用户标识符。A.16.Struct B.5f C._f0,6 D._forC 语言基本数据类型包括()oA.整型、实型、逻辑型 B.整型、实型、字符型C.17.整型、字符型、逻辑型 D.整型、实型、字符串型()为合法的常量。A.18.52686L B.E-7 C.1.2E-2.1 D.E12()为正确的变量名。A.19.-kl5 B.Int C
7、.k_5 D.k.jeep()为正确的字符常量。A.20.B.24m C.c D.M()为非法的字符串常量。A.B.s C.efg D.266221.C 语言整型数据在内存中的代码是用()表示的。A.22.原码 B.反码 C.补码 D.BCD码以下选项中,合法的实型常数是().A.E-3 B.2E1 C.1E.5 D.1.5E23.下列C 语言合法的数据类型关键字是()A.Doub le B.Unsigned C.Integer D.Char24.A.B.C.D.如 rb oC 中,int型数据占用的字节数()由用户自己定义为 2 个字节是任意的等于所用计算机的字长-2-25.Turb o C
8、 中,基本数据类型存储空间长度的排列顺序是()。charintlong intiloatdoub leB.char=intlong intfloatdoub lecharintlong int=float=doub leD.char=int=long intfloat5)printf(M%dnn,a);else printf(M%dnn,a);)A.7 B.4 C.5 D.65 4.若已定义float x;要从键盘输入数据36.582给变量x,则应选用()语句。A.scanf(n%2.3r&x);B.scanfVb F&x);C.scanf(H%6.3fH,&x);D.scanf(H%5.3f
9、n,&x);5 5.若已定义doub le y;拟从键盘输入一个值赋给变量y,则正确的函数调用是()。A.scanf(M%dH,&y);B.scanf(n%7.2f&y);C.scanf(H%lfH,&y);D.scanf(n%IdH,&y);5 6.已有定义chars;使用scanf()函数输入一个字符给变量s,不正确的函数调用是()0A.scanf(n%c,f,&s);B.scanf(H%dM,&s);C.scanf(M%uf;&s);D.scanf(M%lfn,&s);57.函数putchar()的功能是向终端输出()。A.一个字符 B.多个字符C.一个关系表达式 D.一个实型变量值58
10、.若已定义int a=ll;执行以下语句后的输出结果是()。printf(na=%d,a=%o,a=%xna,a,a);A.a=ll,a=ll9 a=b B.a=ll,a=13,a=bC.a=ll,a=13,a=c D.a=ll,a=12,a=1359.若有定义 int m=4321,n=123,k=21;语句 printfC%4d+%3d+%2cT,m,n,k);执行后的输出结果是()oA.4321432143211231231232121 B.432112321C.4321+123+21 D.432+123+02160.已有如下定义和输入语句,char cl,c2;int x;scanf(
11、n%c%d%c,&cl,&x,&c2);若要求x、cl、c2的值分别为9、和IT,正确的数据输入是()oA.K9H B.K 9 H C.K9 H D.9KH61.以下程序段的运行结果是()oint a=l;printf(n%d,%d,%dn,a,+a,a+);A.3,3,1 B.1,2,2 C.1,2,3 D.3,2,162.以下程序的运行结果是()ovoid main()int a=65;char c=*A*;printf(H%d+%c=%dn,a,c,a+c);)A.A+A=AA B.65+A=65A C.65+65=130 D.65+A=13063.若已定义:intx=7;floaty=
12、7.0;以下语句中能输出正确值的是()。A.printf(u%d%dH,x,y);B.printf(n%d%.3F,x,y);C.printf(H%.3f%.3F,x,y);D.printf(n%.3f%d*x,y);64.putchar函数可以向终端输出一个()。A.字符或字符型变量值 B.整型变量表达式值C.实型变量值 D.字符串6 5.若已定义:int a=6;float b=1.5;要求输出形式为:6*1.50=9.00,应选用的正确输出语句是()oA.printf(H%d*%f=%fH,a,b,a*b);B.printf(H%d*%.2f=%.2 a,b,a*b);C.printf(
13、M%d*%d=%.2fa,b,a*b);D.printf(n%.2f*%.2f=%.2fn,a,b,a*b);66.有以下程序:main()int c;while(c=getchar()!=*n*)switch(c-12f)case 0:case 1:putchar(c+4);case 2:putchar(c+4);b reak;case 3:putchar(c+3);default:putchar(c+2);b reak;printf(unM);-6-当输入:247 回车,程序的输出结果是()。A.67.A.68.A.69.A.70.A.C.71.A.72.A.73.A.74.A.C.75.
14、A.76.A.77.A.78.689 B.6689 C.66778 D.66887若已定义int x=5,y=9,z;语 句 z=x=y;运行后z 的 值 为()。1 B.t.C.0 D.f.判定逻辑值为“真”的最准确叙述是()。1 B.大于0 的数 C.非 0 的整数 D.非 0 的数若已定义int x=-16,y=-12,z;语句z=xv=y;运行后z 的 值 为()。t B.1 C.f D.0能正确表示数学关系式100WsV300的表达式为()。(s=100)&(s300)B.100=s=100)&(s=100)and(s=bllb=cc-blla+b&(b*c-a-c)D.(b*c-a
15、-c)&(b*c-a-b)若已定义:int x=4,y=2,z=0;则表达式(xyv=y)ll(y=z)的 值 是(1 B.0 C.2 D.4)o若有定义:int a=3,b=2,c=l,k;则表达式k=abc的 值 是()。0 B.1 C.2 D.3以下运算符中优先级最高的是()。B.&C.II执行以下语句后,b 的 值 是()。int a=5,b=6,c=l:=2,y=3,z=4;(a=cx)II(b=yz);A.0 B.1 C.-1 D.679.以下程序运行后,a 的 值 是()0main()int a,b;for(a=l,b=l;a=20)break;if(b%3=l)b+=3;con
16、tinue;b-=5;A.80.A.C.81.A.82.101 B.100已定义 double k=3.6;k=double(-3.6)C.8 D.7则正确的赋值表达式是()oB.k%3k=k*(4.0)=-3.6 D.k+=k-=(k=1.2)*(k=3)已定义charc=;则正确的赋值表达式是()。c=028 B.c=(c+)%4 C.c+l=66 D.c+=127-已定义intm=,A,;则正确的表达式是()oA.2*m=m+B.m=int(-3.2)C.m%3 D.m=m-m=m-583.设已定义float a=2.0,b=3.0;使 a 值为5.0的表达式是()。A.a+=b B.a
17、*=b+2.0 C.a/=b+2.0 D.a-=b+2.084.若已定义int m=7;float k=5.5;则表达式k+m%2/4的 值 为()。A.6.375 B.6.75 C.5.75 D.5.585.若已定义 int a=3,b=3,x=l,y=2;表 达 式(a=yx)&(x=ba)的 值 是()。A.6 B.1 C.9 D.086.若有定义:inta=2,b=3;float x=5;则表达式x*b/a的 值 是()。A.7.5 B.7 C.6 D.587.若有定义:int x=8;float y=130;char z=*A*;则表达式 x+z%(int)y 的 值 是(已知W 的
18、 ASCII码的十进制值为65)oA.运行时产生错误信息 B.8 C.73 D.8.588.若已定义:int m=7,n=4;float x=3.0,y=8.0,k;贝!J执行语句 k=m/2+n*x/y;后,变量 k的 值 是()0A.3 B.4 C.4.5 D.589.若有定义:float x=2,y=4,h=3;下列表达式中与(x+y)*h/2.0计算结果不相符的是()oA.(x+y)*h/2 B.(x+y)*h*l/2 C.(l/2)*(x+y)*h D.h/2*(x+y)90.表达式2+sqrt(16.0)/4结果的数据类型是()。A.Double B.int C.char D.vo
19、id91.若有定义:inta=4,b=5,c=6;则表达式(L0*a+b)/c的 值 是()。A.1.5 B.1 C.4 D.4.5三、枚刷给相9 2.以下程序段的运行结果是()。int x=3;doprintf(H%3d,n,x-=2);while(!(-x);A.1,B.30,C.死循环D.1,-2,93.以下程序运行时,若从键盘输入6,void main()int x;scanf(n%dH,&x);if(x-6)printf(M%dnH,x);elseprintf(n%dnH,-x);)则输出结果是()A.94.4 B.5 C.以下程序的运行结果是()ovoid main()int m,
20、n=l,t=l;if(t=0)t=-t;elsem=n=0?7:3;printf(H%dnn,m);6D.3A.3 B.-l C.7D.195.对于整型变量a,赋值语句a=(a%3=0?l:0);与()语句不等价。A.if(a%3=0)a=l;else a=0;B.if(a%3!=0)a=0;else a=l;C.if(a%3)a=0;else a=l;D.if(a%3)a=l;else a=0;9 6.以下程序运行的结果是()ovoid main()int x,y,z,a;x=y=z=l;a=15;if(!x)a-;else if(y)if(z)a=3;-9-a+=4;printf(H%dn
21、H,a);)A.15 B.3 C.19 D.149 7.若已定义int a=l,b=2,t=3;则执行以下程序段后变量a,b,t 的值分别为()。if(a6)printf(,%dn,a+2);elseprintf(H%dn,a+3);)A.运行时产生错误信息 B.9 C.8 D.6102.若有定义:int x=10,y=8,a;贝 U 执行语句a=(-x=y)?x:y);后,变量a 的 值 是()A.8 B.9 C.10 D.0103.若有定义:inta=2,b=3,c=l;则以下程序段的运行结果是()。if(ab)if(ac)printf(M%d M,a);elseprintf(M%d n,
22、b);printf(n%d M,c);A.3 1 B.2 1 C.3 D.1104.以下条件语句中(其中s i 和 s2分别表示C 语言的语句),()与其他三条语句不等价。A.if(a)si;else s2;B.if(a=0)s2;else si;C.if(a!=0)si;else s2;D.if(a=0)si;else s2;1 0 5.下列程序段中,非死循环的是()A.int i=100;while(l)i=i%100+1;if(i=100)b reak;)B.int k=0;do+k;-11-while(k=0);C.ints=10;while(+s%2+s%2)s+;D.for(;)1
23、 0 6.若已定义int a;不会产生死循环的语句是()oA.for(;a+=2);B.for(a=10;a-);C.for(;(a=getchar()!=*n*;);D.while(-l)a+;1 0 7.在循环语句的循环体中,b reak语句的作用是()。A.继续执行b reak语句之后的循环体各语句B.提前结束循环,接着执行该循环后续的语句C.结束本次循环D.暂停程序的运行108.以下程序段运行后,循环体中的n+=3;语句运行的次数为(int ij,n=0;for(i=l;i=3;i+)for(j=l;j=i;j+)n+=3;printf(H%dnH,n);)A.6 次 B9 次 C.1
24、2次 D.1 次109.dowhile循环与while循环的主要区别是()。A.while循环体至少无条件执行一次,而 do-w hile循环体可能都不执行B.dowhile循环体中可使用continue语句,while循环体中不允许出现continue语句C.dowhile循环体中可使用b reak语句,while循环体中不允许出现b reak语句D.do-w hile循环体至少无条件执行一次,而 while循环体可能都不执行1 1 0.以下程序段运行后,循环体运行的次数为()oint i=8,a=0;for(;i8;i+)a+=i;A.0 次 B.1 次 C.8 次 D.无限1 1 1.以
25、下程序段运行后变量a 的 值 为()oint i=l,a=0;for(;i3;i+)continue;a+=i;)A.6 B.3 C.0 D.5-12-1 1 2,有以下程序:void main()inti;for(i=l;i=3;i+)switch(i)case 1:printf(M%dH,i);b reak;case 2:printf(M i);default:printf(n%dn,i);执行后输出结果是()oA.1223 B.11 1 3.以下程序的运行结果是(void main()int s=0,i=0;while(i 8)i+;if(i%2=0)continue;s+=i;)prm
26、tf(n%dnn,s);)A.36 B.71 1 4.以下程序的运行结果是(void main()int s=0,i=0;while(i=l;i-)for(j=i;j=3;j+)k+=i*j;)printf(%dn,k);)A.19 B.29 C.6 D.25117.以下程序运行时,循环体的执行次数是()ovoid main()int ij;for(i=0j=l;i5);for(i=0;i6;i+)printf(M%d n,mi);A.7 10 9 8 11 4-15-B.7 10 9 8 11 2C.5 10 9 8 11 2D.5 10 9 8 11 41 2 7.下面程序段的运行结果是(
27、)oint m=5,8,7,6,9,213=1;for(i=0;i6;i+)if(i%2!=0)mi+=10;for(i=0;i=0;i-)ai=ai*j;j=j*3;)for(i=0;i=0;j-)Pic(3-j,);pic(i+2*j,putchar(n);)pic(int len,char c)int k;for(k=l;k=len;k+)putchar(c);)A.*B.*C.*D.::*132.以下程序段执行后输出的结果是()。inta4=l,2,3,4,5,6,7,8,9,10,ll,12);printf(%dn,al2);A.2 B.3 C.6 D.7133.以下程序段执行后p
28、的 值 是()ointal33=3,2,l,3,2,l,3,2,l;-17-intj,k,p=l;for(j=0;i2;i+)for(k=j;k4;k+)p*=ajk;A.108 B.18 C.12 D.2134.不能对二维数组a 进行正确初始化的语句是()oA.inta32=l,2,3,4,5,6);B.inta3H2=l,2,3,4,5;C.intaW2=l,2,3,4,5,6;D.int a32=l,2,3,4;135.若有定义:ints3M4=l,2,0,3,4,5J s 的 值 为()。A.3 B.4 C.0 D.1136.若有定义:int a;则表达式&ala 的 值 为()。A.
29、7 B.8 C.9 D.10137.以下程序段运行后sum 的 值 为()oint k=0,sum=0;int a34=l,2,3,4,5,6,7,8,9J0,ll,12;for(;k3;k+)sum+=akk+l;A.9 B.18 C.19 D.21138.若有定义inta23;则合法引用数组元素的是()A.a0l/2 B.a2l C.a23 D.al3139.在以下数组定义中,错误的是()A.inta2=l,2,3,4,5);B.inta2=0,l);C.int a22=l,2,3);D.inta2=l,2,3,4;1 4 0.若 定 义 描 2口 4=123,4,5,6,7,8;则表达式
30、也030口)的值为().A.1B.2C.3D.41 4 1.以下程序段运行后s 的 值 是()inta33=l,2,3,4,5,l,2,3,4);int ij,s=l;for(i=0;i3;i+)for(j=i+l;j3;j+)s+=afij;A.6-18-B.120C.7D.2401 4 2.设已定义:inta口 4=0,0,0;则下列描述正确的是()。A.数组a 包含3 个元素B.数组a 的第一维大小为3C.数组a 的行数为1D.元素a 的初值不为0143.在 C 语言中,若定义二维数组a 3,设 a00在数组中位置为1,贝 U 在数组中位置是()oA.3B.4C.5D.61 4 4.设有
31、下列语句,则()是对a 数组元素的不正确引用,其中OWivlO。int a10=0,l,2,3,4,5,6,7,8,9,*p=a;A.ap-aB.*(&ai)C.piD.*(*(a+i)1 4 5.设已定义:char sl8,s281=HScienceM;能将字符串Science”赋给数组s i 的语句是()oA.sl=s2;B.strcpy(s2,sl);C.strcpy(sl,s2);D.sl=MScienceM;146.以下程序段的运行结果是()ocharstr32=aJb,cJdJeJf;str201=*0;printf(n%sH,strO);A.ab edB.abC.ab cdOD.
32、ab cdOf147.有如下定义:char str10=National;则分配给数组str的存储空间是()个字节。A.11-19-B.10C.9D.8148.以下程序段运行后输出结果是()ochar a=*countryM;char b 口 二 game”;strcpy(a,b);printf(n%cn,a3);A.nB.uC.eD.m149.以下程序段运行后输出结果是()ochar sJ=ninfo0misH;printf(M%dn,strlen(s);A.4B.5C.8D.9150.以下程序段运行后a 的 值 为()。int a=2;char sl=npassionM,s2=sl;a=s
33、trcmp(sl,s2);A.-1B.2C.1D.0151.以下对C 语言字符数组描述中,错误的是()oA.可以用strlen函数计算字符数组中字符串的长度B.可以在赋值语句中通过赋值运算符“=对字符数组整体赋值C.存放在字符数组中的字符串,以W 作为该字符串结束标志D.字符数组可以存放字符串或字符1 5 2.以下程序段运行后,屏幕的输出结果是()0char str80;strcpy(str,ncomputerH);printf(n%dH,strlen(str);A.7B.8C.9D.80-20-153.若有定义:charstrl6=HABCDEM,*ps,*str2=TEDCBA11;()是
34、错误的。A.strcpy(str2,strl);B.表达式strcmp(strl,str2)的值小于0C.strl=str2;D.表达式strlen(strl)的值为51 5 4.已有定义char strl15=McomputerMstr215;则语句用法正确的是()oA.str2=strl;B.str2=science”;C.scanf(H%sn,str2);D.printf(n%sn,&strl);155.设已定义:char strl20=HHello H,str220=nworld!n;若要形成字符串 Helloworld!”,正确语句是()。A.strcpy(strl,str2);B.
35、strcat(str 1,str2);C.strcpy(str2,strl);D.strcat(str2,strl);1 5 6.若有字符数组a80和 b 80,则以下输入语句正确的是()A.gets(a,b)B.scanf(M%c%cM,&a,&b);C.scanf(,%s%sM,a,b)D.gets(na,),gets(MbH);A,晶破157.设有下列语句:char strl=Hstring,str28,*str3,*str4=HstringH;则()是对库函数strcpy的不正确调用。此函数用来复制字符串。A.strcpy(str3;,HELLO3M);B.strcpy(str2,HH
36、ELLO2M);C.strcpy(strl;,HELLOr,);D.strcpy(str4,nHELLO4n);158.用数组名作为函数的实参时,错误的说法是()。A.定义形参数组时,元素的个数必须与实参相同B.可以使用数组名作为形参C.实参传递给形参的值是数组的首地址-21-D.可以使用指针变量作为形参159.以下程序的运行结果是()oint fun(int a44)int i;for(i=0;i4;i+)prmtf(H%2dH,ai2);printf(HnM);)main()int a44=l,1,2,2,l,9A0,2,4,0,0,0,5,9,8);fun(a);)A.1905B.2 0
37、 0 0C.2 0 0 8D.2 0 0 9160.自定义函数中若缺省函数值类型,则隐含的类型是()oA.intB.longC.floatD.doub le161.以下程序运行后输出结果是()o#include int fun(int a9 int b)(return(a-b);)main()(int x=5,y=3,k;k=fun(x,y);printfC,%d-%d=%dn,y,k);)A.0B.x-y=2C.5-3=2D.2162.以下程序运行后输出结果是()o-22-#include int a=2,b=3,c=5;int fun(int a,int b)(int c;c=ab?a:b
38、;return(c);)main()(int a=6;printf(*%d n 9f un(fun(a9b)9c);)A.5B.3,5C.6,5D.61 6 3.以下程序运行后输出结果是()ovoid fun(int i)int m=2;m=i+;printf(n%d M,m);)main()int m=7,n=5;fun(n);printf(M%dn,m);A.5 5B.6 6C.5 7D.6 7164.若有函数定义:int func()static int m=O;return m+;)以下程序段运行后屏幕输出为()-23-inti;for(i=l;i=4;i+)func();printf
39、(,%d,func();A.0B.1C.4D.5165.下面程序的输出结果是()o#include int num=10;func()int num=4;return+num;)void main()printf(%dn,func();A.4B.5C.10D.11166.下列关于C 语言函数的描述中,错 误 的 是()oA.函数的定义可以嵌套,但函数的调用不可以嵌套B.凡不加类型说明的函数,其返回值默认为整型C.函数的返回值可以通过函数中的return语句获得D.可以定义有参函数,也可以定义无参函数167.以下程序的运行结果是()ofunc(int a,int b)int c;c=(ab)?(
40、a-b):(a+b);return(c);)main()int x=7,y=3;printf(n%dnM,func(x,y);)A.3-24-B.4C.7D.101 6 8.以下程序运行结果是()ovoid main()int max(float a,float b);float x,y;int z;x=-4.6;y=-3.7;z=max(x,y);printf(M%dnz);)int max(float a,float b)float c;if(ab)c=a;elsec=b;return(c);)A.-3.7B.3C.-4.6D.-4169.下面函数调用语句含有实参的个数为()。temp(a
41、,b,c),(x,y)A.2B.3C.4D.5170.以下程序的运行结果是()。fun3(int x)static int a=3;a+=x;return a;main()int k=2,m=l,n;-25-n=fun3(k);n=fun3(m);printf(n%dnn,n);)A.3B.4C.6D.91 7 1.以下程序运行后输出结果是()o#define F(m,n)m*nmain()int x=5,y=3,al,a2;al=F(x+y,x-y);a2=F(x-y,x+y);printf(%d,%dn,al,a2);)A.16,16B.16,-16C.-7,17D.17,-71 7 2.
42、以下叙述正确的是().A.编译预处理命令行必须以分号结束B.程序中使用带参数的宏时,参数类型要与宏定义时一致C.宏展开不占用运行时间,只占用编译时间D.宏名只能包含大写字母和数字字符173.以下叙述正确的是().A.一个源程序只能有一个编译预处理命令行B.编译预处理命令行都必须以“#“开头C.define PRICE=30”定义了与30等价的符号常量PRICED.使用带参数的宏定义时,应该说明每个参数的数据类型174.以下叙述错误的是()。A.编译预处理命令行都必须以#号开始B.宏名可以用小写字母表示C.使用预处理命令”#include 文件名”时,编译系统只在指定的系统目录下查找该文件D.宏
43、定义只能放在main()函数之前1 7 5.若有定义:#define N 3+2,则表达式N*2的 值 为()。A.5-26-B.7C.10D.0176.以下程序运行后输出结果是()o#define MIN(m,n)mn?m:nmain()int a=3,b=5,c;c=2*MIN(a,b);printf(n%dn,c);)A.3B.5C.6D.10177.下列#inckide命令中,正确的是()。A.#include Hmath.huB.#include math.hC.#include(math.h)D.#include math.h178.下面程序的输出结果是()o#include#de
44、fine MON 1#define TUE 2*MON#define WED 3*TUEvoid main()printf(H%dnM,WED-TUE);)A.2B.3C.4D.5179.下面错误的叙述是()oA.预处理命令行必须位于C 源程序的起始位置B.在 C 语言中,预处理命令行都以“#”开头C.C 程序在开头可以不包含预处理命令行:#include D.C 语言的预处理可以实现宏定义和条件编译的功能1 8 0.以下程序的运行结果是()。#define MUL(r)r*r-27-main()int a=2,b=3,c;c=MUL(a+b)*2;prmtf(n%dn,c);)A.10B.1
45、4C.36D.501 8 1.下面程序的运行结果是()#define N 10#define K(x)x*x#define T(x)(x*x)main()int a,b;a=9%K(N);b=9%T(N);printf(M%d,%dnn,a,b);)A.9,9B.9,90C.90,9D.90,90182.以下在任何情况下计算平方数时都不会引起二义性的宏定义是()oA.#define XPF(x)x*xB.#define XPF(x)(x)*(x)C.#define XPF(x)(x*x)D.#define XPF(x)(x)*(x)自、软针183.下程序的运行结果是()。void ast(in
46、t x,int y,int*cp,int*dp)*cp=x+y;*dp=x-y;main()int a=4,b=3,c,d;-28-ast(a,b9&c,&d);printfC,%d,%dnn,c,d);)A.7,1B.1,7C.7,-1D.c、d 未赋值,编译出错184.有以下语句:int a5=0,l,23,4,5,i;int*p=a;设 0W iV 5,对 a 数组元素不正确的引用是()oA.*(&ai)B.ap-aC.*(*(a+i)D pi1 8 5.若有定义int*pl,*p2;则错误的表达式是()oA.pl+p2B.pl-p2C.plp2D.pl=p21 8 6.以下叙述错误的是
47、()。A.存放地址的变量称为指针变量B.NULL可以赋值给任何类型的指针变量C.一个指针变量只能指向类型相同的变量D.两个相同类型的指针变量可以作加减运算1 8 7.以下程序段运行后,表达式*(p+4)的 值 为()。char a=,chinaH;char*p;P=a;A.nB.1a1C.存放k 的地址D.存放置的地址1 8 8.以下程序段运行后,表达式*(p+)的 值 为()ochar a5=nworkn;char*p=a;A.B.存放,w,的地址-29-C.0,D.存放U 的地址189.若有定义:int*p,k=4;p=&k;以下均代表地址的是()。A.k,pB.&k,&pC.&k9 pD
48、.k,*p190.若有定义:doub le*q,p;则能给输入项读入数据的正确程序段是()。A.q=&p;scanf(H%lfn,*q);B.q=&p;scanf(n%lf,q);C.*q=&p;scanf(n%lfn,q);D.*q=&p;scanf(%lf,*q);191.若已定义:int q=5;对 int*p=&q;和 p=&q;这两条语句理解错误的是()。A.是对p 定义时初始化,使 p 指 向 q;而是将q 的地址赋给pB.和中的&q含义相同,都表示给指针变量赋值C.是对p 定义时初始化,使 p 指 向 q;而是将q 的值赋给p 所指向的变量D.和的执行结果都是把q 的地址赋给p1
49、92.下面语句错误的是()oA.int*p;*p=20;B.char*s=Mab cdefH;printf(M%siin,s);C.char*str=nab cdefM;str+;D.char*str;str=nab cdeF,;193.若有定义inta23,*p=a;,则能表示数组元素al地址的是()。A.*(al+2)B.al2C.p5D.p+5194.若已定义:int a=5,*p;且 p=&a;则以下表示中不正确的是(A.&a=&(*p)B.*(&p)=aC.&(*p)=pD.*(&a)=a195.若有以下程序段,则叙述正确的是()。char sJ=ncomputern;char*p;
50、P=s;-30-A.s 和 p 完全相同B.数组s 的长度和p 所指向的字符串长度相等C.*p与 s0相等D.数组s 中的内容和指针变量p 中的内容相等196.以下程序段的运行结果是()。enum weekday aa,b b=2,cc,dd,ee week=ee;printf(n%dnM,week);A.eeB.5C.2D.4197.若有以下程序段,则 不 能 正 确 访 问 数 组 元 素 的 是()oint(*p)3;int a 口 3=1,2,3,4,5,6,7,8,9;P=a;A.pl+2B.pl2C.(*(p+l)D.*(*(a+l)+2)198.以下程序段的运行结果是()oint