C语言自测练习一.单项选择题1.为了避免嵌套的条件语句if-else的二义性,C语言规定:else与(B)配对。A.缩进位置相同的ifB.其之前最近的ifC.其之后最近的ifD.同一行上的if2.已知:inty;执行语句y=5%3;则变量y的结果是(A)。A.2B.-2C.1D.-13.具有相同类型的指针变量与数组a,不能进行的操作是(D)。A.p=a;B.*p=a[0];C.p=&a[0];D.p=&a;4.用于函数返回值的语句是(A)。A.returnB.continueC.breakD.printf5.设intm=1,n=2;则m++==n的结果是(A)。A.0B.1C.2D.36.设inta=2,b=2;则++a+b的结果是(D)。A.2B.3C.4D.57.已知:inta,b;用语句scanf(“%d%d”,&a,&b);输入a,b的值时,不能作为输入数据分隔符的是(A)。A.,B.空格C.回车D.Tab8.凡在函数中未指定存储类别的变量,其隐含的存储类别为(A)。A.autoB.staticC.externD.register9.若对函数类型未加显示说明,则函数的隐含类型是(C)。A.voidB.doubleC.intD.char10.在inta[5]={1,3,5};语句中,数组元素a[1]的值是(C)。A.1B.0C.3D.511.已知inta=3,*p=&a;则*p的值是(D)。A.变量a的地址值B.无意义C.变量p的地址值D.312.已知struct{inti;charc;floata;}test;则sizeof(test)的值是(D)。A.4B.5C.6D.7注:在vc++6.0中,test的存储宽度为12字节。C语言中合法的变量名是(B)。A.2xB.x_1C.doubleD.x*214.数学表达式x≤y≤z,C语言中的正确表达式是(D)。A.x=y=zB.x=y,y=zC.x=y||y=zD.!(xy)&&y=z15.下面实型常量的错误形式是(D)。A.-253.000B.-253.C.0.253e3D.2.53e+3.516.已知inti=3,j;j=++i;则i和j的值分别为(B)。A.i=3,j=4B.i=4,j=4C.i=4,j=3D.i=3,j=317.下列表达式的值为0的是(C)。A.3%5B.3/5.0C.3/5D.3518.执行scanf(“%c%c”,&a,&b);语句使变量a、b分别为'A'和'B',正确输入是(A)。A.AB回车B.AB回车C.A,B回车D.A回车B回车19.C语言程序由函数组成,它的(B)。A.主函数必须在其它函数之前,函数内可以嵌套定义函数B.主函数可以在其它函数之后,函数内不可以嵌套定义函数C.主函数必须在其它函数之前,函数内不可以嵌套定义函数D.主函数必须在其它函数之后,函数内可以嵌套定义函数20.为程序输入数据,而打开文本文件file1,正确的函数调用是(B)。A.fopen(“file1”,“r”)B.fopen(“file1”,“w”)C.fopen(“file1”,“rb”)D.fopen(“file1”,“wb”)21.已知intx=1;表达式!(x0)?x+1:x-1的结果为(B)。A.1B.0C.2D.x022.ax2+bx+c的C语言表达式是(C)。A.ax*x+bx+cB.a×x×x+b×x+cC.a*x*x+b*x+cD.a·x·x+b·x+c23.循环for(i=1;i=100;i++){if(i10)break;printf(“*”);};输出的*号个数是(C)。A.100B.101C.10D.1124.在调用函数时,实参和形参都是简单变量,它们之间的数据传递方式是(B)。A.双向地址传递B.单向值传递C.由用户决定D.由实参传递给形参,也可以由形参传递给实参25.下面定义语句中错误的是(C)。A.inta[]={1,2};B.char*p=”CHINA”;C.intn=5,a[n];D.intx=’A’;26.定义二维数组a[3][4]中,其中元素a[1][2]的地址为(D)。A.aB.a[0]C.a[1]D.a[1]+227.有如下程序,其输出结果是(A)。#includestdio.hvoidmain(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;};printf(“a=%d,b=%d\n”,a,b);}A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=228.下面对C语言正确的描述是(B)。A.写程序时,大小写字母没有区别B.源程序经编译连接后,可生成可执行文件C.每个语句和数据定义的最后可以没有分号D.语言允许直接访问物理地址,可以进行位运算,它属于低级语言29.下列选项中不是C语句的是(A)。A.++tB.;C.k=i=j;D.{a/=b=1;b=a%2;}30.以下程序的输出是(C)。#includestdio.hvoidmain(){inta=9;a+=a-=a+a;printf(“%d”,a);}A.18B.9C.-18D.-931.设x和y均为int变量,语句组x+=y;y=x-y;x-=y;的功能是(D)。A.把x和y按从大到小排列B.把x和y按从小到大排列C.无确定结果D.交换x和y中的值32.以下程序的输出是(A)。#includestdio.hvoidmain(){intm=7,n=4;floata=38.4,b=6.4,x;x=m/2+n*a/b+1/2;printf(“%f\n”,x);}A.27.000000B.27.500000C.28.000000D.28.50000033.在下列选项中,没有构成死循环的程序段是(C)。A.inti=100;while(1){i=i%100+1;if(i100)break;}B.for(;;);C.intk=0;do{++k;}while(--k0);D.ints=36;while(s);--s;34.以下while循环不断输出读入的字符,当读入回车换行符时结束循环。正确的程序段是(D)。A.while(ch=getchar()==’\N’)B.while((ch=getchar())==’\n’)C.while((ch=getchar()!=’\N’)D.while((ch=getchar())!=’\n’)35.若以下对fun的调用是正确的:x=fun(fun(a,b,c),(a+b,a+c),a+b+c);则fun函数的形参个数为(A)。A.3B.4C.5D.636.以下叙述中正确的是(C)。A.在函数中必须要有return语句B.函数中可以有多个return语句,但只执行其中的一个C.return语句中必须要有一个表达式D.函数值并不总是通过return语句传回调用处37.以下正确的定义语句是(B)。A.intn=5,a[n][n];B.inta[][3]={{1,2,},{3,4},{5,6}};C.inta[][3];D.inta[][]={{1,2,},{3,4},{5,6}};38.在程序运行时某局部变量始终占据固定的存储单元,其存储类别应该是(C)。A.autoB.registerC.staticD.extern39.C语言规定,标识符的第一个字母必须是(D)。A.字母B.数字C.下划线D.字母或下划线40.下面不正确的字符常量是(A)。A.“c”B.‘Y’C.‘w’D.‘9’41.下面4组选项中,均是正确的八进制或十六进制的选项是(C)。A.016B.0abcC.010D.0a120x8f017-0x117ff0180xa0x16-12342.下面程序段的输出结果是(A)。inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf(“%d\n”,*(p+2));A.3B.4C.1D.243.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是(B)。A.floatB.intC.voidD.double44.若二维数组a有m列,则在a[i][j]之前的元素个数为(B)。A.j*m+iB.i*m+jC.j*m+i+1D.i*m+j+145.若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应是(B)。A.“ab+”B.“wb+”C.“rb+”D.“ab”46.若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是(A)。for(i=5;i;i--)for(j=0;j4;j++){……}A.20B.24C.25D.3047.在以下一组运算符中,优先级别最高的是(C)。A.=B.=C.%D.&&48.以下叙述中正确的是(D)。A.构成C程序的基本单位是函数B.可以在一个函数中定义另一个函数C.main函数必须放在其他函数之前D.所有被调函数一定要在调用之前进行定义49.以下程序运行市,若从键盘输入:102030回车,输出的结果是(C)。#includestdio.hvoidmain(){inti=0,j=0,k=0;scanf(“%d%*d%d”,&i,&j,&k);printf(“%d%d%d\n”,i,j,k);}A.102030B.10020C.10300D.10303050.若执行以下程序时,从键盘上输入9回车,输出结果是(B)。#includestdio.hvoidmain(){intn;scanf(“%d”,&n);if(n++10)printf(“%d\n”,n);elseprintf(“%d\n”,n--);}A.11B.10C.9D.851.以下程序运行后的输出结果是(D)。#includestdio.hvoidmain(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++=3))printf(“%d%d%d\n”,i,j,k);}A.123B.234C.223D.23352.下面程序运行后的输出结果是(C)。#includestdio.hvoidmain(){inta=5,b=4,c=6,d=0;printf(“%d\n”,d=ab?(ac?a:c):(b));}A.5B.4C.6D.053.下面程序运行后的输出结果是(D)。#includestdio.hvoidmain(){intp[7]={11,13,14,15,16,17,18},i=0,k=0;while(i7&&p[i]%2){k=k+p[i];i++;}printf(“%d\n”,k);}A.58B.56C.45D.2454.以下能正确定义一维数组的是(C)。A.inta[5]={0,1,2,3,4,5};B.chara[]={0,1,2,3,4,5};C.chara={‘A’,‘B’,‘C’};D.inta[5]=”0123”;55.已有定义:intn=2,*p=&n,*q=p;以下非法的赋值语句是(D)。A.p=q;B.*p=*q;C.n=*q;D.p=n;56.下面程序运行后的输出结果是(A)。#includestdio.h#definef(x)x*xvoidmain(){inti;i=f(4+4)/f(2+2);printf(“%d\n”,i);}A.28B.22C.16D.457.C语言中的简单数据类型包括(B)。A.整型、实型、逻辑型B.整型、实型、字符型C.整型、字符型、逻辑型D.整型、实型、字符型、逻辑型58.已知inti=5;执行语句i+=i;后i的值是(A)。A.10B.11C.12D.ABC答案都不对59.C语言中下列运算符的操作数必须是int型的是(A)。A.%B./C.-D.++60.已知:intx,y,z,w;scanf(“%4d-%3d-%2d-%1d”,&x,&y,&z,&w);printf(“%4d+%3d+%2d+%1