- 529.50 KB
- 2022-04-13 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
福建省高校非计算机专业计算机等级考试二级C语言习题集目录第一部分:选择题(40分,20小题/套)3概述3语法基础4控制结构8数组12函数15指针20结构体和共用体23链表26枚举、自定义类型和位运算31文件33第二部分:改错题(每小题10分,2小题/套)36第1套37第2套38第3套39第四套40第5套41第6套42第7套43第8套45第9套46第10套46第11套47第三部分:程序填空题48第1套48第2套49第3套51第4套52第5套54第6套56第7套57第8套59第9套61第10套63第11套65109n第四部分:编程题(每小题8分,2小题/套)66第1套67第2套69第3套71第4套73}74第5套74第6套77第7套79第8套81第9套83第10套85第11套87第五部分:答案88选择题答案88改错题答案89第1套89第2套90第3套90第4套90第5套90第6套90第7套91第8套91第9套91第10套91第11套92填空题答案92第1套92第2套92第3套92第4套93第5套93第6套93第7套94第8套94第9套94第10套95第11套95编程题答案95第1套95第2套96109n第3套97第4套98第5套98第6套99第7套99第8套100第9套101第10套101第11套102109n第一部分:选择题(40分,20小题/套)概述1、下面关于C语言的叙述中,正确的是(D)A.每行只能写一条语句B.程序中必须包含有输入语句C.main函数必须位于文件的开头D.每条语句最后必须有一个分号2、下面关于C语言的叙述中,错误的是(B)A.若一条语句较长,也可分写在下一行上B.构成C语言源程序的基本单位是表达式C.C语言源程序中大、小写字母是有区别的D.一个C语言源程序可由一个或多个函数组成3、关于C语言数据类型的叙述,正确的是(C)A.枚举类型不是基本类型B.数组不是构造类型C.变量必须先定义后使用D.不允许使用空类型4、C程序中main函数的位置(C)A.必须在最开始B.必须在系统库函数后面C.可以在自定义函数后面D.必须在最后5、C语言的函数体由(B)括起来A.()B.{}C.[]D./**/6、关于C语言的叙述中,不正确的是(D)A.C程序可由一个或多个函数组成B.C程序必须包含一个main()函数C.C程序的基本组成单位是函数D.注释说明只能位于一条语句的后面7、一个程序的执行是从(B)A.本程序的第一个函数开始,到最后一个函数结束B.本程序的main函数开始,到main函数结束C.本程序的main函数开始,到最后一个函数结束D.本程序的第一个函数开始,到main函数结束8、结构化程序设计的三种基本结构是(C)A.函数结构、分支结构、判断结构B.函数结构、嵌套结构、平行结构C.顺序结构、分支结构、循环结构D.分支结构、循环结构、嵌套结构9、调试程序是指对程序进行(C)A.编辑B.编译C.查错和排错D.连接109n10、C语言中,复合语句的构成是将一系列语句置于(C)A.begin与end之间B.一对圆括号“()”之间C.一对花括号“{}”之间D.一对方括号“[]”之间11、构成C语言源程序的基本单位是(D)A.语句B.过程C.表达式D.函数语法基础12、在C语言中,正确的用户标识符是(B)A.3fB._forC.structD._f.513、C语言的基本数据类型包括(A)A.整型、实型、字符型B.整型、实型、字符型、逻辑型C.整型、字符型、逻辑型D.整型、实型、逻辑型14、以下(D)是正确的常量A.E-5B.1E5.1C.‘a12’D.32766L15、以下(D)是正确的变量名A.a.beeB.–p11C.intD.p_1116、以下(C)是正确的字符常量A.“c”B.‘//”C.‘W’D.“32a”17、以下(A)是不正确的字符串常量A.‘abc’B.“12’12”C.“0”D.““18、C语言的整型数据在内存中的存储形式是(C)A.原码B.反码C.补码D.ASCII码19、以下(B)是正确的浮点数A.e3B..62C.2e4.5D.12320、下列不属于C语言关键字的是(B)A.continueB.integerC.staticD.signed21、C语言的字符型数据在内存中的存储形式是(D)A.原码B.补码C.反码D.ASCII22、在C语言中,变量所分配的内存空间大小是(A)A.由变量的类型决定B.由用户自己决定C.任意的D.均为两个字节109n23、若有定义:inta=2;则正确的赋值表达式是(A)A.a-=(a*3)B.double(-1)C.a*3D.a*4=324、语句x=(a=3,b=++a);运行后,x、a、b的值依次为(C)A.3,3,4B.4,4,3C.4,4,4D.3,4,325、语句a=(3/4)+3%2;运行后,a的值为(B)A.0B.1C.2D.326、以下四项中,符合C语言语法的语句是(C)A.inta+b=c;B.inta=12:b=12:c=12;C.inta=12,b=12,c=12;D.inta,b=12,floatc=2127、若有定义:intx,a;则语句x=(a=3,a+1);运行后,x、a的值依次为(C)A.3,3B.4,4C.4,3D.3,428、若变量已正确定义并赋值,符合C语言语法的表达式是(C)A.a=8+b+c,a++B.a=3aC.int(12.3%4)D.a=a+1=c+b29、若有定义:inta,b;doublex;则以下不符合C语言语法的表达式是(A)A.x%(-3)B.a+=-1C.a=b=2D.x=a+b30、若有定义:intx=2,y=3;floati;则以下符合C语言语法的表达式是(B)A.x=x*3=2B.x=(y==1)C.i=float(x)D.i%(-3)31、若有定义:intx;则语句x=(2*3)+6%5;运行后,x的值是(B)A.8B.7C.6D.532、下面关于C语言变量的叙述中,错误的是(A)A.可以用const关键字定义变量B.在C程序中,SUM和sum是不同的变量C.变量名必须由字母或下划线组成D.变量的类型确定了变量的取值范围33、若有定义:intx=5,y=6;则表达式x=(y==6)的值为(C)A.5B.1C.6D.034、下面叙述正确的是(C)A.2/3与2.0/3.0等价B.(int)2.0/3与2/3等价C.++5与6等价D.‘A’与”A”等价35、下面叙述中,错误的是(C)A.C语言基本的算术运算符不包含模运算符”%”B.算术运算符的优先级高于关系运算符C.自加和自减运算符的结合方向是”自右向左”D.C语言规定在表达式求值时,按其中运算符的优先级先高后低的次序进行109n36、下面叙述正确的是(A)A.强制类型转换运算的优先级高于算术运算B.若a和b是整型变量,(a+b)++是合法的C.‘A’*’B’是不合法的D.“A”+”B”是合法的37、若有定义:inti=1,j=5;则表达式(++j)*(i--)的值为(C)A.1B.0C.6D.738、设整型变量a为5,使b不为2的表达式是(C)A.b=(++a)/3B.b=6-(--a)C.b=a%2D.b=a/239、若有定义:inta=1,b=2,c=3;则语句++a||++b&&++c;运行后b的值为(C)A.1B.0C.2D.340、若有定义:inti,j;则表达式(i=2,j=5,i++,i+j++)的值是(B)A.7B.8C.9D.1041、若有定义:inta,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是(C)A.7B.8C.9D.1042、若有定义:inti=2,j=5;则表达式(i+1,j+1,(++i+(j--))的值为(A)A.8B.6C.7D.543、若已定义:inti=3,k;则语句k=(i--)+(i--);运行后k的值为(C)A.4B.5C.6D.744、C语言的运算符按运算对象的个数可以分为(B)A.单目运算符一种B.单目和双目运算符C.单目、双目和三目运算符D.单目、双目、三目和四目运算符45、若已定义:floatm;拟从键盘输入135.78这一数据给变量m,则应选用的语句是(A)A.scanf(“%5.2f”,&m);B.scanf(“%3.2f”,&m);C.scanf(“6.2f”,&m);D.scanf(“6f”,&m);46、已知doublea;使用scanf()函数输入一个数值给变量a,正确的函数调用是(A)A.scanf(“%ld”,&a);B.scanf(“%lf”,&a);C.scanf(“%c”,&a);D.scanf(“%u”,&a);47、已知chara;使用scanf()函数输入一个字符给变量a,不正确的函数调用是(C)A.scanf(“%d”,&a);B.scanf(“%lf”,&a);C.scanf(“%c”,&a);D.scanf(“%u”,&a);48、putchar()函数的功能是向终端输出(C)A.多个字符B.一个字符C.一个实型变量值D.一个整型变量表达式109n49、以下程序段运行后的输出结果是(B)intk=11;printf(“k=%d,k=%o,k=%xn”,k,k,k);A.k=11,k=13,k=cB.k=11,k=12,k=13C.k=11,k=13,k=bD.k=11,k=13,k=a50、若有定义:intx=1234,y=123,z=12;则语句printf(“%4d+%3d+%2d”,x,y,z);运行后的输出结果为(D)A.123412312B.12341234123412341231231231212C.1234+1234+1234D.1234+123+1251、已有如下定义和输入语句,inta;charc1,c2;scanf(“%d%c%c”,&a,&c1,&c2);若要求a、c1、c2的值分别为10、A和B,正确的数据输入是(A)A.10ABB.10ABC.10ABD.10AB52、以下程序段的运行结果是(D)inta=0,b=0,c=0;if(a&&++b)c++;printf(“%d,%dn”,b,c);A.0,0B.1,2C.2,2D.1,053、以下程序的运行结果是(D)voidmain(){inta=65;charc=’A’;printf(“%x,%d”,a,c);}A.65,aB.41,aC.65,65D.41,6554、若已定义:inta=5;floatb=63.72;以下语句中能输出正确值的是(B)A.printf(“%d%d”,a,b);B.printf(“%d%2f”,a,b);C.printf(“%2f%2f”,a,b);D.printf(“%2f%d”,a,b);55、运行以下程序段时编译出错,其原因是(D)这题编译不报错charc1='8',c2='2008';printf("%c,%dn",c1,c2);A.c2是字符变量,只能赋以字符常量,不能赋以字符串常量B.字符串要用“2008“表示,而‘2008’不是字符串表示C.‘2008’只能赋值给字符数组D.字符变量不能用%d格式输出109n56、若已定义:inta=3,b=15,c;则语句c=a>b;运行后c的值为(B)A.1B.0C.tD.f57、在C语言中,判定逻辑值为“真“的最正确的叙述是(B)A.1B.非0的数C.大于0的数D.非0的整数58、若已定义:inta=-36,b=-30,c;则语句c=a=y>=500的C语言表达式为(A)A.(y<=800)&&(y>=500)B.(y<=800)AND(y>=500)C.800>=y>=500D.(y<=800)&(y>=500)60、若有定义:intx=3,y=4;则表达式!x||y的值为(A)A.1B.0C.3D.461、若有定义:inti=7,j=8;则表达式i>=j||i10||x<20C.x>10&&<20D.(x>10)&&(x<20)66、以下运算符中优先级最低的是(D)A.<>D.|67、已知doublea=5.2;则正确的赋值表达式是(A)A.a+=a-=(a=4)*(a=3)B.a=a*3=2C.a%3D.a=double(-2)68、已知chara='R';则正确的赋值表达式是(A)A.a=(a++)%4B.a+2=3C.a+=256--D.a=’ 78’109n69、已知inta=’R’;则正确的表达式是(A)A.a%10B.a=int(3e2)C.2*a=a++D.a=a+a=a+370、设有语句floatx=3.0,y=3.0;使x值为6.0的表达式是(D)A.x*=y-4B.x*=yC.x=y+4D.x+=y71、若有定义:floatx=3.5,intz=8;则表达式x+z%3/4的值为(B)A.3。75B.3.5C.3D.472、设有语句intx=3,y=3,a=1,b=2;表达式(x=a>b)&&(y=b>a)的值是(D)A.8B.1C.5D.073、若有定义:inta=2,b=3;floatx=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值是(A)A.3.5B.3.0C.2.5D.2.074、若有定义:intb=7;floata=2.5,c=4.7;则表达式a+(b/2*(int)(a+c)/2)%4的值是(C)A.2.5B.3.5C.4.5D.5.575、若有定义:inta=6,b=2;charc1=’a’,c2=’b’;则表达式a+b%5+c2-c1的值是(C)A.7B.8C.9D.表达式错误76、在下列运算符中,优先级最高的运算符是(C)A.<=B.!=C.!D.||77、设有定义:charc;floatf;inti;unsignedu;doubled;下列各表达式的类型分别是(A)1.u+92.d!=f&&(i+2)3.8.2*i+cA.1.unsigned,2.int,3.doubleB.1.double,2.double,3.doubleC.1.int,2.double,3.charD.1.unsigned,2.double,3.int控制结构78、以下程序段运行时,若从键盘输入10,则输出结果是(D)inta;scanf(“%d”,&a);if(a++>10)printf(“%dn”,a);elseprintf(“%dn”,++a);A.2B.11C.3D.12109n79、以下程序的运行结果是(B)voidmain(){intx,y=1,z;z=-1;if(z==0)z=-z;elsex=y>0?3:5;printf(“%dn”,x);}A.-1B.3C.1D.580、对于整型变量x,下属if语句(B)与赋值语句:x=x%2==0?1:0;不等价。A.if(x%2!=0)x=0;elsex=1;B.if(x%2)x=1;elsex=0;C.if(x%2==0)x=1;elsex=0;D.if(x%2==1)x=0;elsex=1;81、以下程序段运行的结果是(C)inta,b,c,x;a=b=c=0;x=15;if(!a)x--;elseif(b);if(c)x=3;elsex+=4;printf("%dn",x);A.15B.17C.18D.1982、若有定义:inta=1,b=2,c=3;则执行以下程序段后a,b,c的值分别为(D)if(a6)printf(“%dn”,n);elseprintf(“%dn”,++n);}A.4B.5C.6D.787、下面关于switch语句的叙述中,错误的是(A)A.case后面的表达式可以是关系表达式B.switch语句是多分支选择语句C.每一个case后面的值必须互不相同,否则会出现矛盾的现象D.在执行一个case分支后,可用一个break语句使流程跳出switch语句109n88、若有定义:inta=1,b=2,c=3;则以下程序段运行后c的值为(D)if(a>b)c=a*b;elsec=a-b;A.2B.0C.1D.-189、若有定义:intx;以下不会产生死循环的是(A)A.for(;(x=getchar())!=’n’;);B.while(1){x++;}C.for(i=10;;i++);D.for(;;x+=1);90、在循环语句的循环体中,break语句的作用是(D)A.暂停程序的运行B.结束本次循环C.继续执行break语句之后的循环体各语句D.提前结束循环,接着执行该循环后续的语句91、以下程序段运行后,循环体中的“count+=2;”语句运行的次数为(A)inti,j,count=0;for(i=1;i<=4;i++){count+=2;printf(“%d”,count);}A.4次B.10次C.16次D.20次92、在c语言中while循环和do-while循环的主要区别是(B)A.do-while循环体内可以使用break语句,while循环体内不能使用break语句B.do-while的循环体至少无条件执行一次,while的循环体不是C.do-while循环体可以使用continue语句,while循环体内不能使用continue语句D.while的循环体至少无条件执行一次,do-while的循环体不是93、以下程序段运行后,循环体运行的次数为(A)inti=0,x;for(;i<10;i++)x=x+i;A.10B.0C.1D.无限94、以下程序段运行后变量n的值为(D)inti=1,n=1;for(;i<3;i++){continue;n=n+i;}A.4B.3C.2D.1109n95、有以下程序:voidmain(){inti;for(i=0;i<3;i++)switch(i){case1:printf(“%d”,i);case2:printf(“%d”,i);case3:printf(“%d”,i);}}执行后输出的结果是(A)A.11122B.01222C.013020D.12096、以下程序的运行结果是(C)voidmain(){intsum=0,item=0;while(item<5){item++;sum+=item;if(sum>=6)break;}printf(“%dn”,sum);}A.10B.15C.6D.797、以下程序的运行结果是(B)voinmain(){intsum=0,item=0;while(item<5){item++;if(item==2)continue;sum+=item;}printf(“%dn”,sum);}A.10B.13C.15D.1109n98、以下程序段执行后变量sum的值为(C)inti,j=1,sum=0;for(i=1,i<=3,i++){sum+=j;j++;}A.5B.3C.6D.499、以下程序的运行结果是(D)#includemain(){inty=10;do{y--;}while(--y);printf("%dn",y--);}A.1B.2C.-1D.0数组100、C语言中数组元素下标的数据类型是(B)A.实型常量B.整型常量或整型表达式C.任何类型的表达式D.字符型常量101、下列数组定义中,正确的是(A)A.inta[10];B.intn=10,a[n];C.intN=10;inta[N];D.intn;scanf(“%d”,&n);inta[n];102、若已定义:inta[13];则不能正确引用a数组的元素的是(C)A.a[0]B.a[10]C.a[10+3]D.a[13-5]103、若有定义:inta[3]={0,1,2};则a[1]的值为(B)A.0B.1C.2D.3104、若有定义:inta[5]={1,2,3,4,5};则语句a[1]=a[2]+a[2+2]-a[3-1];运行后a[1]的值为(B)A.6B.5C.1D.2109n105、以下合法的数组定义是(C)A.inta[]=“string”;B.inta[5]={0,1,2,3,4,5};C.chara[]={0,1,2,3,4,5};D.chars={“string”};106、若有如下程序段:chars[10];s=“abcd”;printf(“%sn”,s);则(D)。A.执行时输出:abcdB.执行时输出:aC.执行时输出:abD.编译不通过107、下面程序段的运行结果是(C)inti=0,a[]={7,5,7,3,8,3};do{a[i]+=2;}while(a[++i]>5);for(i=0;i<6;i++)printf("%d",a[i]);A.9795105B.9593103C.957383D.757383108、下面程序段的运行结果是(A)inti=0,a[]={1,2,3,4,5};do{a[i]+=10;}while(a[++i]>2);for(i=0;i<5;i++)printf("%d",a[i]);A.112345B.12345C.1112131415D.1112345109、西面关于数组的叙述中,正确的是(A)A.数组必须先定义,然后使用B.定义数组时,可不加类型说明符C.定义数组后,可通过赋值运算符“=”对该数组名直接赋值D.在数据类型中,数组属于基本类型110、一下程序段的运行结果是(C)inti=0,a[]={6,5,3,7};do{a[i]++;}while(a[i]<4);for(i=0;i<4;i++)printf("%d",a[i]);A.6537B.7563C.7537D.5673109n111、有如下程序段:intt[][3]={1,2,3,4,5,6,7,8,9,10,11,12};printf("%dn",t[2][1]);则执行该程序段后输出结果是(A)A.8B.7C.4D.2112、以下程序段运行后s的值是(B)inta[3][3]={1,2,3,1,2,3,1,2,3};inti,j,s=1;for(i=0;i<3;i++)for(j=i;j<3;j++)s*=a[i][j];A.18B.108C.2D.12113、以下不能对二维数组arr进行正确初始化的语句是(C)A.intarr[2][3]={0};B.intarr[][3]={1,2,3,4,5};C.intarr[2][3]={{1,2},{3,4},{5,6}};D.intarr[2][3]={{1},{3,4,5}};114、若有定义:inta[3][4]={{1,2},{0},{1,2,3}};则a[1][1]的值为(A)A.0B.{1,2}C.1D.3115、若有定义:inta[3][3];则表达式&a[2][1]-a的值为(A)A.7B.8C.6D.9116、若有定义:inti=0,x=0;inta[3][3]={1,2,3,4,5,6,7,8,9};则以下程序段运行后x的值为(C)for(;i<3;i++)x+=a[i][2-i];A.0B.12C.15D.18117、若有定义inta[2][3];则对数组元素的非法引用的是(D)A.a[0][1/2]B.a[1][1]C.a[4-4][0]D.a[0][3]118、以下数组定义中,正确的是(C)A.inta[2][]={1,2,3,4,5};B.inta[][2]={{0},{}};C.inta[2][2]={{1,2},{3}};D.inta[][]={1,2,3,4};119、若有定义inta[][3]={1,2,3,4,5,6,7,8,9};则表达式sizeof(a)/sizeof(a[0])的值为(D)A.3B.4C.5D.9120、以下程序段运行后s的值是(A)inta[3][3]={1,2,3,4,5,1,2,3,4};inti,j,s=1;for(i=0;i<3;i++)for(j=i+1;j<3;j++)s*=a[i][j];A.6B.120C.24D.480109n121、设已定义:inta[][4]={0,0};则下列描述错误的是(D)A.数组a的每个元素都可得到初值0B.二维数组a的第一维大小为1C.数组a的行数为1D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0122、设已定义:charstr1[10],str2[10]=”Fujian”;则能将字符串”Fujian”赋给数组str1的正确语句是(B)A.str1=”Fujian”B.strcpy(str1,str2);C.strcpy(str2,str1);D.str1=str2;123、有如下定义:charstr[3][2]={'a','b','c',' ','e','f'};则语句:printf("%s",str[0]);的输出结果是(D)A.abB.abcefC.abc D.abc124、设有如下数组定义:charstr[8]={"Fujian"};则分配给数组str的存储空间是(C)字节A.6B.7C.8D.9125、若有定义:chara[]="abcdef";charb[]="xyz";则以下程序段运行后屏幕输出为(B)strcpy(a,b);printf("%c",a[2]);A.cB.zC. D.D126、以下程序段运行后屏幕输出为(C)chara[]="abc mis";printf("%d",strlen(a));A.5B.8C.3D.4127、若有定义:inta=2;则语句a=strcmp("miss","miss");运行后a的值为(B)A.1B.0C.-1D.2128、以下对C语言字符数组描述中,正确的是(C)A.可以用length函数计算字符数组中字符串的长度B.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值C.存放在字符数组中的字符串,以’ ’作为该字符串结束标志D.字符数组只能存放字符串,不能存放字符129、以下程序段运行后屏幕输出为(A)charstr[80];strcpy(str,"hello");printf("%d",strlen(str));A.5B.6C.7D.80130、若有定义:charstr1[6]="abcdm",*ps,*str2="abcdef";则(B)是正确的A也可以,数组下标越界不判错A.strcpy(str1,str2);B.表达式strcmp(str1,str2)的值大于0109nC.str1=str2;D.表达式strlen(str1)的值为6131、已有定义:charstr1[15]={“university”},str2[15];则以下语句中正确的是(D)A.str2=str1;B.str2=”college”;C.scanf(“%s”,&str2);D.printf(“%s”,str1);132、设已定义:chars1[20]=”Youare”,s2[9]=”welcome!”;若要形成字符串”Youarewelcome!”,正确的语句是(A)A.strcat(s1,s2);B.strcpy(s1,s2);C.s1+s2;D.s1&s2函数133、在C语言中,数组名作为函数调用的实参时,传递给形参的是(D)A.数组元素的个数B.数组的第一个元素值C.数组中全部元素的值D.数组的首地址134、以下程序的运行结果是(A)intfun(intarray[4][4]){intj;for(j=0;j<4;j++)printf("%2d",array[2][j]);printf("n");}main(){inta[4][4]={0,1,2,0,1,0,0,4,2,0,0,5,0,4,5,0};fun(a);}A.2005B.1004C.0120D.0450135、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是(C)A.float型B.long型C.int型D.double型136、以下程序运行后屏幕输出为(B)#includeintf(intx,inty){return(x+y);}main(){inta=2,b=3,c;c=f(a,b);printf("%d+%d=%dn",a,b,c);}109nA.0B.2+3=5C.2+3=0D.3+2=5137、以下程序运行后屏幕输出为(D)#includeinta=2,b=3;intmax(inta,intb){intc;c=a>b?a:b;return(c);}main(){inta=4;printf("%d",max(a,b));}A.3,2B.2C.3D.4138、以下程序的运行结果是(B)fun(inti){inta=2;a=i++;printf("%d",a);}main(){inta=5,c=3;fun(c);printf("%d",a);}A.45B.35C.44D.33139、若有如下函数定义:intfun(){staticintk=0;return++k;}以下程序段运行后屏幕输出为(D)inti;for(i=1;i<=5;i++)fun();printf("%d",fun());A.0B.1C.5D.6109n140、下面程序的输出结果是:(D)#includeintglobal=100;fun(){intglobal=5;return++global;}voidmain(){printf("%dn",fun());}A.100B.101C.5D.6141、下列关于C语言函数的描述中,正确的是(B)A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和函数的调用都可以嵌套D.函数的定义和函数的调用都不可以嵌套142、以下程序的运行结果是(A)fun(intx,inty){intz;z=(xy)z=y;elsez=x;return(z);}A.-7.9B.-7C.-6.3D.-6144、以下程序的运行结果是(C)#defineM(a,b)a*bmain(){intx=3,y=2,s1,s2;s1=M(x+y,x-y);s2=M(x-y,x+y);printf("%d,%dn",s1,s2);}A.-1,7B.5,5C.7,-1D.5,-5145、以下叙述中,正确的是(B)A.“#definePRICE=30”定义了与30等价的符号常量PRICEB.预编译处理命令行都必须以“#”开头C.程序中使用带参的宏时,参数类型要与宏定义时一致D.宏名只能包含大写字母和数字字符146、以下叙述中,正确的是(A)A.宏展开不占用运行空间,只占用编译时间B.预编译处理命令行必须以分号结束C.一个源程序只能有一个预编译处理命令行D.使用带参数的宏定义时,应该说明每个参数的数据类型147、以下的叙述中不正确的是(C)A.宏展开不占用运行时间,只占用编译时间B.宏名无类型C.宏名必须用大写字母表示D.预处理命令行都必须以#号开始148、若有定义:#definePI3,在表达式PI*2*2的值为(A)A.12B.4C.3D.不确定149、以下程序运行后,屏幕输出为(C)#defineMIN(a,b)((a)<(b)?(a):(b))main(){intx=2,y=3,z;109nz=2*MIN(x,y);printf("%d",z);}A.2B.3C.4D.6150、下列#include命令中,正确的是(D)A.#inclue[string.h]B.#include{string.h}C.#include(string.h)D.#include151、下面程序的输出结果是(C)#include#defineONE1#defineTWOONE+1#defineTHREETWO+1voidmain(){printf("%dn",THREE-ONE);}A.产生错误B.1C.2D.3152、以下叙述中正确的是(B)A.预处理命令行必须位于C源程序的起始位置B.在C语言中,预处理命令行都以”#”开头C.每个C程序必须在开头包含预处理命令行:#includeD.C语言的预处理只能实现宏定义和条件编译的功能153、以下程序的运行结果是(B)#defineADD(x)x+xmain(){intm=1,n=2,k;k=ADD(m+n)*3;printf("%d",k);}A.9B.10C.12D.18154、下面程序的运行结果是(B)#defineM10#defineS(x)x*x#defineF(x)(x*x)main(){intn1,n2;n1=1000/S(M);109nn2=1000/F(M);printf("%d,%dn",n1,n2);}A.10,10B.1000,10C.10,1000D.1000,1000指针155、设有以下语句,则(D)是对a数组元素的不正确引用,其中0<=i<10。inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))156、若有定义int*p1,*p2;则指针变量p1、p2不能进行运算的是(C)A.