c语言题库_第一章C语言基础知识.pdf
第一章C语言基础知识1.以下不是C 语言的特点的是()。A.语言简洁紧凑B.能够编制出功能复杂的程序C.C 语言可以直接对硬件操作D.C 语言移植性好2.下列字符序列中,不可用作C 语言标识符的是()。A.abcl23 B.no.l C._123_ D.ok3.正确的C 语 言 标 识 符 是()。A._buy_2 B.2_buy C.?_buy D.buy?4.请选出可用作C 语言用户标识符的一组标识符()。A.void B.a3 b3 C.For D.2adefine _123-abc DOWORD IF Case sizeof5.下列符号中,不属于转义字符的是()oA.B.0 xAA C.t D.06.不属于C 语言关键字的是()oA.int B.break C.while D.character7.是 C 语言提供的合法关键字的是()。A.Float B.signed C.integer D.Char8.以下不能定义为用户标示符的是()oA.scanf B.Void C._3com_ D.int9.一个C 程序是由()。A.一个主程序和若干子程序组成B.一个或多个函数组成C.若干过程组成D.若干子程序组成10.C 语言程序的基本单位是()。A.程序行 B.语句 C.函数 D.字符11.下列说法中,错误的是()。A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B.每个函数都有一个函数头和一个函数体,主函数也不例外C.主函数只能调用用户函数或系统函数,用户函数可以相互调用D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数12.以下说法中正确的是()。A.C 语言程序总是从第一个定义的函数开始执行B.在 C 语言程序中,要调用的函数必须在main()函数中定义C.C 语言程序总是从main()函数开始执行D.C 语言程序中的main()函数必须放在程序的开始部分13.C 编译程序是()。A.C 程序的机器语言版本B.一组机器语言指令C.将 C 源程序编译成目标程序D.由制造厂家提供的一套应用软件14.以下选项中,合法的用户标识符是()0A.long B._2abc C.3dmax15.以下选项中,合法的实型常数是()oA.5E2.0 B.E-3 C.2E0D.A.datD.1.3E16.已知大写字母A 的 ASCII码值是6 5,小写字母a 的 ASCII码是9 7,则用八进制表示的字符常量、01,是()。A.字符A B.字符a C.字符c17.以下选项中,合法转义字符的选项是(A.B.,018/C.,xab18.以下选项中,正确的字符常量是()。A.F B.,C.Z19.以下选项中可作为C 语言合法整数的是A.10110B B.0386 C.OXffa20.下列变量定义中合法的是D.非法的常量D.abc7D.D.x2a2A.short_a=l-.le-l;C.long do=0 xftiaL;B.doubleb=l+5e2.5;D.float 2_and=1 -e-3;21.与 数 学 式 子 上 匚 对 应 的 C 语言表达式是()o2 x-lA.9*xAn/(2*x-l)B.9*x*n/(2*x-l)C.9*pow(x,n)*(l/(2*x-l)D.9*pow(n,x)/(2*x-1)22.若 有 代 数 式 等,则不正确的C 语言表达式是()oA.a/c/d*b*3B.3*a*b/c/dC.3*a*b/c*d D.a*b/d/c*323.已知各变量的类型说明如下:int m=8,n,a,b;unsigned long w=10;double x=3.14,y=0.12;则以下符合C 语言语法的表达式是()oA.a+=a-=(b=2)*(a=8)B.n=n*3=18C.x%3 D.y=float(m)24.以下符合C 语言语法的赋值表达式是()。A.a=9+b+c=d+9 B.a=(9+b,c=d+9)C.a=9+b,b+,c+9 D.a=9+b=c+925.已知字母A 的 ASCII码为十进制数6 5,且 S 为字符型,则执行语句S=,A,+,6,3,;后,S 中的值为()。A.(D-B.68 C.不确定的值 D.C26.在 C 语言中,要求运算数必须是整型的运算符是()oA./B.+C.*=D.%27.若有说明语句:chars=72;则变量s()。A.包含一个字符B.包含两个字符C.包含三个字符D.说明不合法,s 的值不确定28.若有定义:intm=7;float x=2.5,y=4.7;则表达式 x+m%3*(int)(x+y)%2/4 的 值 是()。A.2.500000 B.2.750000 C.3.500000 D.0.00000029.在 C 语言中,char型数据在内存中的存储形式是()。A.补码 B.反码 C.原码 D.ASCH码30.设变量x 为 float类型,m 为 int类型,则以下能实现将x 中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是()。A.x=(x*100+0.5)/100.0B.m=x*100+0.5,x=m/100.0C.x=x*100+0.5/100.0D.x=(x/l00+0.5)*100.031.表达式13/3*sqrt(16.0)/8的数据类型是(3A.int B.float C.double D.不确定32.设以下变量均为int类型,则值不等于7 的表达式是()。A.(m=n=6,m+n,m+1)B.(m=n=6,m+n,n+1)C.(m=6,m+1,n=6,m+n)D.(m=6,m+1,n=m,n+1)33.假设所有变量均为整型,则表达式(x=2,y=5,y+,x+y)的 值 是(A.7 B.8 C.6D.23 4.已知s 是字符型变量,下面不正确的赋值语句是()oA.s=012;B.s=u+v;C.s=,1 +2,;D.s=l+2;3 5.已知s 是字符型变量,下面正确的赋值语句是()oA.s=abc;B.s=,08C.s=xdez;D.s=;3 6.若有以下定义,则正确的赋值语句是()。int x,y;float z;A.x=l,y=2,B.x=y=1 0 0C.x-H-;D.x=i n t (z);3 7.设 x、y均为f l o a t 型变量,则不正确的赋值语句是()。A.+x ;C.y=(x%3)/1 0;B.x*=y-2;D.x=y=0;3 8.下列语句中符合C语言的赋值语句是()oA.a=7+b+c=a+7;B.a=7+b+=a+7;C.a=7+b,b+,a+7D.a=7+b,c=a+7;3 9.p u t c h a r 函数可以向终端输出一个()。A.整型变量表达式值。B.字符串C.实型变量值。D.字符或字符型变量值。4 0.以下程序段的输出结果是()。i n t a=1 2 3 4 5;p r i n tf(/%2 d n/,a);A.1 2 B.3 4 C.1 2 3 4 5D.提示出错、无结果4 1.若 x和 y均定义为i n t型,z 定义为d o u b l e 型,以下不合法的s c an f ()函数调用语句为()。A.s c an f (%d%l x,%l e ,&x,&y,&z);B.s c an f (,z%2 d*%d%l f ,&x,&y,&z);C.s c an f(/z%x%*d%ow,&x,&y);D o s c an f(%x%o%6.2 f,z,&x,&y,&z);4 2.有如下程序段:i n t x l,x 2;c h ar y l,y 2;s c an f (%d%c%d%c”,&x 1 ,&y 1 ,&x 2,&y 2);若 要 求 x l、x 2、y l、y 2的值分别为1 0、2 0 代表空格)A.1 0 Au 2 0 BC.1 0 u A u2 0 u BA、B,正确的数据输入是()o (注:uB.1 0 u A2 0 BD.1 0 A2 0 u B4 3.若变量已正确说明为f l o at类型,要通过语句5 2 吠%1%自,&%&卜 舐);给2 赋予1 0.0,b赋予2 2.0,c 赋予3 3.0,不正确的输入形式为()。A.1 0 回车,B.1 0.0,2 2.0,3 3.0 V 回车,2 2 V回车3 3C.1 0.0 D.1 0 2 2 V 回车2 2.0 3 3.0 回车,3 3 V 回车,4 4.有如下程序,若要求x l、x 2、y l、y 2 的值分别为1 0、2 0、A、B,正确的数据输入是()。(注:u代表空格)i n t x l,x 2;c h ar y l,y 2;s c an f (%d%d,&x l,&x 2);scanf(%c%c,#,&y 1 ,&y2);A.1020ABC.10u20B.10LJ20UABCD.10u20ABAB45.J 有定义int a=-2;和输出语句:printf(/%81x/,a);以下正确的叙述是()。A.整型变量的输出格式符只有d 一种B.%x是格式符的一种,它可以适用于任何一种类型的数据C.%乂是格式符D.81x不是错误的格式符,其中数字8 规定了输出字段的宽度4 6.有如下程序段,对应正确的数据输入是()。float x,y;scanf(f%f,&x,&y);printf(a=%f,b=%f”,x,y);A.2.04V回车 B.2.04,5.67 回车5.67v回车,C.A=2.04,B=5.67v回车 D.2.055.67 回车47.有如下程序段,从键盘输入数据的正确形式应是()。(注:u 代表空格)float x,y,z;scanf(ttx=%d,y=%d,z=%d,&a,&y,&z);A.123B.x=l,y=2,z=3C.1,2,3 D.x=l u y=2u z=348.以下说法正确的是()oA.输入项可以为一个实型常量,如 scanf(f,3.5);B.只有格式控制,没有输入项,也能进行正确输入,如 scanf(a=%d,b=5d);C.当输入一个实型数据时;格式控制部分应规定小数点后的位数,如 scanf(4.2f,&f);D.当输入数据时,必须指明变量的地址,如 scanf(f,&f);49.根据定义和数据的输入方式,输入语句的正确形式为:()。(注:口代表空格)已有定义:float x,y;数据的输入方式:1.23V回车,4.5 回车A.scan(/%f,%f/,&x,&y);B.scantyz,%f%f,z,&x,&y);C.scanf(%3.2fu%2.1,&x,&y);D.scanf(%3.2f%2.1 f,&x,&y);5 0.根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为()o#include stdio.hz/main()char sl,s2,s3;输入语句;printf(%c%c%c/,sl,s2,s3);输入形式:A uB uC v回车,(注:口代表空格)输出形式:AuBA.scanfif%c%c%c ,&sI,&s2,&s3);B.scanf(%cu%uc%c,&s 1,&s2,&s3);C.scanf(/%c,%c,%c”,&sI,&s2,&s3);D.scanf(%c%c,&sl,&s2,&s3);5 1.以下程序的执行结果是:()o#include stdio.hmain()int x=2,y=3;printsz,x=%d,y=%dnz,x,y);A.x=%2,y=%3 B.x=%d,y=%dC.x=2,y=3 D.x=%d,y=%d5 2.以下程序的输出结果是()o(注:口代表空格)#inchide stdio.hmain()printf(nstring 1 =%15s*n,programming);print nstring2=%-5s*,boy);printRstring3=%2s*,5 girl);A.string 1 =programmingu u u u*string2=boy*string3=gi*C.stringl=programmingu u u u*string2=u u boy*string3=girl*B.string 1=u u u u programming*string2=boy u u*string3=gi*D.stringl=u u u uprogramming*string2=boy u u*string3=girl*53.根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是()。#include stdio.hmain()int a;float b;输入语句输出语句输入形式:1口 2.3回车,输出形式:a+b=3.300A.scanR%d%f,&a,&b);printf(/zna+b=%5.3f/,a+b);C.scanf(d,%f,&a,&b);printf(na+b=%5.3f ,a+b)54.阅读以下程序,当输入数据的形式为:(注:代表空格)B.scanf(d%3.1f,&a,&b):printR na+b=%P/,a+b);D.scanf(d%f,&a,&b);print*na+b=%f/,a+b);12,34,正确的输出结果为()b)&(n=cd)后 n 的值为()。A.1 B.2 C.3 D.43.设 x、y 和 z 都是int类型变量,且 x=3,y=4,z=5,则下面的表达式中,值为0 的表达式为()。A.&7 yz B.x=yC.x|y+z&y-z D.!(xy)&!z|l)4.为了避免嵌套的iAelse语句的二义性,C 语言规定else总 是 与()组成配对关系。A.缩排位置相同的ifB.在其之前未配对的ifC.在其之前未配对的最近的ifD.同一行上的if5.逻辑运算符两侧运算对象的数据类型()。A.只能是0 或 1B.只能是0 或非。正数C.只能是整型或字符型数据D.可以是任何类型的数据6.以下关于运算符优先顺序的描述中正确的是()。A.关系运算符 算术运算符v 赋值运算符v 逻辑与运算符B.逻辑与运算符v 关系运算符 算术运算符 赋值运算符C.赋值运算符v 逻辑与运算符 关系运算符 算术运算符D.算术运算符 关系运算符 赋值运算符v 逻辑与运算符7.下列运算符中优先级最高的是()。A.B.&C.+D.!=8.选择出合法的if语 句(设 intx,a,b,c;)()。A.if(a=b)C+;B.if(a=b)c+;C.if(ab)c+;D.if(a=b)c+;9.能正确表示“当乂的取值在 58=-58)&(x=40)&(x=-58)|(x=40)|(x=-58)&(x=40)&(x=-58)|(x=40)|(x=58)10.判断char型变量s 是否为小写字母的正确表达式是()。A.a=s=,a,)&(s=a)&(sv=,z)D.(a v=s)and(z=s)11.若希望当x 的值为奇数时,表达式的值为“真。X的值为偶数时,表达式的值为“假二则以下不能满足要求的表达式是()。A.x%2=l B.!(x%2=0)C.!(x%2)D.x%212.已知 x=45,y=z az,z=0;贝 lj表达式(x=z&y v z,|!y)的值是()。A.0 B.语法错C.1D.“假”13.指出下列程序段所表示的逻辑关系是()。if(ab)if(c=d)x=10;elsex=-10;10 a b.c d10 a =dB.x=b10 a bSic=dC.x=-1010。目 二4D.x=10 c 丰 d-114.有一函数:y=01x 0A.if(x0)y=l;else if(x=0)y=0;else y=-1;B.y=0;if(x0)y=l;else if(x=0)if(x0)y=l;else y=-1;D.if(x=0)if(x0)y=l;else y=0;else y=-1;15.执行以下语句后,y 的值为()。int x,y,z;x=y=z=0;+x|+y&+z;A.0 B.1 C.2 D.不确定值16.已知inta=l,b=2,c=3;以下语句执行后a,b,c的值是()。if(ab)c=a;a=b;b=c;A.a=l,b=2,c=3 B.a=2,b=3,c=3C.a=2,b=3,c=l D.a=2,b=3,c=217.请阅读以下程序:该 程 序()。#include stdio.hmain()int x=-10,y=5,z=0;if(x=y+z)printf();else printf(/,);A.有语法错不能通过编译B.可以通过编译但不能通过连接C.输出*D.输出$18.以下程序的运行结果是()。#include stdio.hmain()int a=l;if(a-H-l)printf(/%dn,/,a);else print%dn,a-);A.0 B.1 C.2 D.319.当 a=l,b=2,c=4,d=3时,执行完下面一段程序后x 的 值 是()。if(ab)if(cd)x=l;elseif(ac)if(bd)x=2;else x=3;else x=4;else x=5;A.1 B.2 C.3 D.420.执行以下程序段后,变量x,y,z的值分别为()。int a=l,b=0,x,y,z;x=(a=b+)?a:-F+b;y=a+;z=b;A,x=0,y=0,z=0 B.x=-l,y=-l,z=1C,x=0,y=l,z=0 D.x=-l,y=2,z=121.若 a、b、c、d、w 均为int类型变量,则执行下面语句后的w 值 是()。a=l;b=2;c=3;d=4;w=(ab)?a:b;w=(wc)?w:c;w=(wb?ac?a:c:b);A.5 B.4 C.6D.不确定23.若 a、b、c l、c2、x、y 均为整型变量,正确的switch语 句 是()。A.switch(a+b);case 1:y=a+b;break;case 0:y=a-b;break;B.switch a case c 1:y=a-b;break;case c2:x=a*d;break;default:x=a+b;C.switch(a*a+b*b)case 3:case 1:y=a+b;break;case 3:y=b-a;break;D.switch(a-b)default:y=a*b;break;case 3:x=a+b;break;case 10:case 11:y=a-b;break;24.执行下列程序,输入为3 的数Hl结 果 是()。#include stdio.hmain()int k;scanR d,&k);switch(k)case I:printf(/,%dn/,k+);case 2:printf(/%dn,/,k+);case 3:printR dn,k+);case 4:printfit%dn/,k+);break;default:printf(,Full!n,);25.A.3B.4C.35D.44假定等级和分数有以下对应关系:等级:A等级:B等级:C分数:85100分数:6084分数:6 0 以下对于等级grade输出相应的分数区间,A.switch(grade)能够完成该功能的程序段是()。case i A,:printf(/85-100n);case z Bz:printR 60-84n);case 7 C:prints,z 60n/z);default:printR grade is error!nw);B switch(grade)case 7 A7:printf(z,85-100n/,);break;case 7 Bz:printf(/60-84n);case r Cr:printR”60n);default:printsz,grade is error!nz,);C.switch(grade)case z Az:printf(85-100nw);break;case z Bz:prints/z 60-84n);break;case 1C :printf/60n/,);default:printR grade is error!n/z);)D switch(grade)case z C :printfif v60n);break;case z Bz:print60-84n);break;default:printf(grade is error!n,/);break;c a s e:p rin ts85-100nz,);)26.有如下程序,写出该执行结果()。#include stdio.hmain()float x=2.0,y;if(x0.0)y=0.0;else if(x 10.0)y=1.0/x;else y=1.0;pr 血A.0.000000 B.0.250000 C.0.50000027.以下程序的运行结果是()。#include stdio.hD.1.000000main()(int a=2,b=-l,c=2;if(ab)if(bb的值为假时,便已经确定整个表达式的值为假,所以不必再继续判断第二个表达式的逻辑值。仍为2。由于没有执行第二个表达式n=cd,所 以 n 的值当继续输入h 时,switch语句的执行情况为:U W外 向 下 知 行s wi t c h(c h)c a s e a :c a s e h:田 为 沟1右k r/a o V ;五 句,d e f a ul t:vl-H-;c a s e Q:V2-H-;(V 1=v l+1 =1、,|v 2 =v 2 +1=1a叶 冰 白K勃 行s wi t c h(c h).c a s e a :c a s e h:d e f a ul t:vl-H-;田%洱 右h r o a l r也 告I (vl=vl 4-1 =2Vv2=v2+1 =2重复上述过程,输入5 个有效字符,则 v l 和 v2执行5 次自加操作,所以:vl=5,v2=5第三章循环结构1.以下程序的输出结果是()。main()int n=4;while(n)printf(d,-n);)A.20 B.31 C.321 D.2102.以下程序的输出结果是()。main()int x=10,y=10,i;fbr(i=0;x8;y=+i)printf(,%d%d,x-,y);A.10192 B.9876 C.10990 D.1010913.当执行以下程序段时。x=-l;dox=x*x;while(!x);A福环体将执行一次C.循环体将执行无数多次4.执行以下程序后输出的结果是()。main()inty=10;doy;while(y);printfCH%dnM,y-);A.-l B.l C.85.下面程序的输出结果是()。main()int x=3,y=6,a=0;while(x4-+!=(y-=l)a+=l;if(yx)break;)printf(Mx=%d,y=%d,a=%dnn,x,y,a);)A.x=4,y=4,a=lC.x=5,y=4,a=3B.循环体将执行两次D.系统将提示有语法错误B.x=5,y=5,a=lD.x=5,y=4,a=lD.06.若 i,j已定义为int类型,则以下程序段中内循环的总的执行次数是()。for(i=5;i;i-)for 0=0;j4;j+)A.20B.24C.25D.307.请读程序:#includemain()int x=l,y=0,a=0,b=0;switch(x)case kswitch(y)case 0:a+;break;case 1 :b+;break;case 2:a+;b+;break;printfi(a=%d,b=%dn,a,b);上面程序的输出结果是()。A.a=2,b=l B.a=l,b=l C.a=l,b=O D.a=2,b=28.若有以下程序段,w 和 k 都是整型变量w=k;LB:if(w=O)goto LE;w-;printf(*);goto LB;LE:则不能与上面程序段等价的循环语句是()。A.fbr(w=k;w!=0;w)print(产);B.w=k;while(w!=0)printff);w+;C.w=k;do w;printf(,/*卜while(w!=0);D.for(w=k;w;-w)printf(/,*);9.下面程序的输出是()。main()char*s=/,34211 ;int k,v 1 =0,v2=0,v3=0,v4=0;for(k=0;sk;k-H-)switch(sk)default:v4-H-;case l:vl+;case 2:v2+;esse 3:v3+;)printR vl=%d,v2=%d,v3=%d,v4=%dn,vl,v2,v3,v4);A.v 1 =4,v2=2,v3=l,v4=1C.vl=5,v2=8,v3=6,v4=lB.v 1 =4,v2=9,v3=3,v4=1D.vl=8,v2=8,v3=8,v4=810.有以下程序#include,/stdio.hint abc(int u,int v);main()(int c,a=24,b=16;c=abc(a,b);printf(,%dn,c);int abc(int u,int v)(int w;while(v)w=u%v;u=v;v=w;return u;输出结果是()oA.6 B.7 C.811.在下列选项中,没有构成死循环的程序段是()。A.int i=100;while(1)i=i%100+1;i 电100)break;B.for(;);C.int k=1000;do+k;while(k=10000);D.int s=36;while(s);D.9-s;1 2.若输入B,以下程序的运行结果为()omain()char grade;scanf(,%cn,&grade);switch(grade)caselA,:printf(,t=85.M);caseB*:c a s e C:p r i n t f(=6 0 J);c a s e,D,:p r i n t f(n=8 5.B.=6 0.C.=6 0.6 0.e r r o r.D.e r r o r.1 3 .列程序运行的情况是()。m a i n()i n t i=l,s um=0;wh i l e(i 1 0)s um=s um+l ;i+;p r i n t f(,i=%d,s u m=%d,i,s um);A.i=1 0,s um=9 B.i=9,s um=9 C.i=2,s um=l D.运行出现错误1 4.有以下语句:i=l;f b r(;i =1 0 0;i-H-)s um+=i;与以上语句序列不等价的有()oA.f o r(i=l;s um+=i;i f(i=1 0 0)b r e a k;B.f b r(i=l;i =l 0 0;)s um+=i;i-H-;C.i=l;f b r(;i =1 0 0;)s um+=i;D.i=l;f o r(;)s um+=i;i f(i=1 0 0)b r e a k;i+;1 5.下面程序的运行结果为()om a i n()i n t n;f b r(n=l;n =1 0;n+)i f(n%3=0)c o n t i n ue;p r i n t f(H%dn,n);)|A.1 2 457 8 1 0 B.3 6 9 C.1 2 D.1 2 3 456 7 8 9 1 01 6 .下面程序的运行结果是()om a i n()i n t x,y,z;x=0;y=z=-l;x+=-z-y;p r i n t f(Hx=%d n ,x);A.x=4 B.x=0 C.x=2 D.x=317.标有/*/的语句的执行次数是()oint y,i;for(i=0;i0|E0)C.(E=O)D.(E!=0)20.假定所有变量均已正确定义,下列程序段运行后x 的 值 为()。kl=l;k2=2;k3=3;x=15;ifi(!kl)x-;else if(k2)if(k3)x=4;else x=3;A.14 B.4 C.15 D.321.执行下面语句的输出为()oint i=-l;if(iv=O)printfr*rT);else printfC4%n);A.*B.%C.%c D.有错,执行不正确22.下列程序的输出是()。#includemain()int i;char c;fbr(i=0;i=5;i-H-)c=getchar();putchar(c);程序执行时从第一列开始输入以下数据,代表换行符。uwxstaA.uwxsta B.u C.u D.uw w wx xs xsta23.下列程序的输出为()o#includenstdio.hmain()int i,j,x=O;fbr(i=0;i2;i+)x+;for(j-0;j=3;j+)if(j%2)continue;x+;x+;)printf(Hx=%dn,x);A.x=4 B.x=8 C.x=6 D.x=1224.下列程序的输出为()。#includemain()int ij,k=O,m=O;fbr(i=0;i2;i+)fbr(j=0;j3;j-H-)k-H-;k-=j;m=i+j;printf(k=%d,m=%dn,k,m);A.k=0,m=3 B.k=0,m=5 C.k=l,m=3 D.k=l,m=525.在 C 语言中,为了结束while语句构成的循环,while后一对圆括号中表达式的值应该为()。A.O B.l C.true D.非 026.在 C 语言中,为了结束山do-while语句构成的循环,while后一对圆括号中表达式的值应 为()。A.O B.l C.true D.非 027.下列程序的输出为()。#includemain()int k=0;char c-A*;doswitch(c-H-)caseA:k+;break;caseBk;caseC:k+=2;break;case,D,:k=k%2;continue;case*E*:k=k*10;break;default:k=k/3;k+;while(cvG);printff%dn”,k);A.k=3 B.k=4 C,k=2 D.k=O28.C 语言的if语句嵌套时,if与 else的配对关系是()。A.每个else总是与它上面的最近的if配对B.每个else总是与最外的if配对C.每个else与 if 的配对是任意的D.每个else总是与它上面的if配对29.下列程序的输出为()。#includemain()int i=0,j=0,a=6;if(+iO)|(+jO)a+;printfCi=%d,j=%d,a=%dnH,ij,a);)A.i=0,j=0,a=6 B.i=l j=l,a=73 0.下列程序段的输出结果为()。main()int x=3;do printf(%3d,x-=2);while(!(x);A.l B.3 0C.i=l,j=0,a=7C.l-2D.i=0,j=l,a=7D.死循环答案及部分解题分析1.A2.D3.A4.D5.D6.A7.A8.C9.D10.C11.C12.C13.D14C15.A16.C17.C18.D19.C20.B21.A22.C23.B24.B25.A26.A27.B28.A29.C30.C1.答案:A解析:此题中判断while后面的条件时,先使用n 的值再n-,而打印时打印的是n 减 1后的值。所以第一次循环,n=4,执行完后n=2,打印出2;第二次循环,n=2,经过n和一n,n变成了 0,打印出0;第三次循环时while后面的条件不成立(n=0),所以循环结束。故输出为 20。2.答案:D解析:第一次循环时打印的X和 y 的值都是1 0,然 后 X通 过 X 后变成9,因此第二次循环时x=9,而“尸+i”执行完后,y 变 成 1,所以第二次循环时打印的x 和 y 的值是9和 1 ,然后x变成8;第三次循环时,x 8 条件不成立,循环结束。故 D为正确答案。3 .答案:A解析:对于一个不为0的数,!x 即为0,故对于x=-l,while 后条件不成立,但是d o 循环体是先执行的,故等判断条件时,循环体已执行了一次。4 .答案:D解析:此题是一个d o-while 循环,当 y 值 为 1 时,while 后的条件-y 变成0,从而循环结束,这时打印出0,然后y-变成-1。故 D为正确答案。5 .答案:D解析:此题中循环进行了 1 次,但判断了 2次,第一次x 加 1 变成4,y 减 1 变 成 5,a加 1 变 成 1:第 2次 while 后面的条件不成立,因为!=的左边先使用x 的值4来判断,右边表达式的值为4,即 y 山 5 变成4,判断结束后4变成5,循环结束。故 D为正确答案。6 .答案:A解析:此题中外层f o r 要进行5次,内层f o r 循环要进行4次,所以共进行4*5=2 0 次循环。第四章数组1 .以下关于数组的描述正确的是()。A.数组的大小是固定的,但可以有不同的类型的数组元素B.数组的大小是可变的,但所有数组元素的类型必须相同C.数组的大小是固定的,所有数组元素的类型必须相同D.数组的大小是可变的,可以有不同的类型的数组元素2 .以下对-一 维整型数组a的正确说明是()。A.in t a(1 0);B.in t n=1 0,a n ;C.in t n;D.#d e f in e S I Z E 1 0sc a n f&n);in t a S I Z E ;in t a n ;3 .在 C语言中,引用数组元素时,其数组下标的数据类型允许是()。A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式4.以下对一维数组m 进行正确初始化的是()。A.in t m 1 0 =(0,0,0,0);B.in t m 1 0 =;C.in t m =0 ;D.in t m 1 0 =1 0*2);5 .若有定义:in t b b 8 ;。则以下表达式中不能代表数组元b b l 的地址的是()。A.&b b 0 +l B.&b b l C.&b b 0 +D.b b+16 .假 定 in t类型变量占用两个字节,其有定义:in t x 1 0 =0,2,4);,则数组x 在内存中所占字节数是()。A.3 B.6 C.1 0D.2 07 .若有以下说明:in t a 1 2 =l,2,3,4,5,6,7,8,9,1 0,1 1,1 2);c ha r c=,a*,d,g;则数值为4的表达式是()A.a g-c B.a 4 C.a U d -c D.a *d-c 8 .以下程序段给数组所有的元素输入数据,请选择正确答案填入()。#in c lud e ma in ()(in t a 1 0 ,i=0;while(i=0;i)a i=1 0-i;pr in tf (d%d%d ,a 2 ,a 5 ,a 8 );)A.2 5 8 B.7 4 1 C.8 5 21 1 .以下程序运行后,输出结果是().ma in()(in t n 5 =0,0,0 ,i,k=2;f o r(i=0;i=l);f o r(j=i-l;j=0;j)p r i n t f a j );p r i n t f (n);)A.1 0 0 0 0 B.1 0 0 1 0 C.0 0 1 1 0 D.1 0 1 0 01 3.以下程序运行后,输出结果是()。m a i n ()(i n t a 1 0 ,a l =1,3,6,9,1 0 ,a 2 =2,4,7,8,1 5),i=0,j=O,k;f o r (k=0;k 4;k+)i f(a l i a 2 j )e l s ef o r(k=0;k 4;k+)A.1 2 3 4a k =a l i+;a k =a 2 j+;p r i n t f (,%d,/,a k );B.1 3 2 4C.2 4 1 3D.4 3 2 11 4.以下程序运行后,输出结果是()。m a i n()i n t i,k,a 1 0 ,p 3 k=5;f o r (i=0;i 1 0;