C语言练习题总汇一、单选题:【顺序结构程序设计】1.己知intk,m=1;执行语句k=-m++;后k的值是(A)。(提示:负号与自加运算符同级,结合方向从右向左)A)-1B)0C)1D)22.若有定义intx=4;则执行语句x+=x*=x+1;后,x的值为(C)。A)5B)20C)40D)无答案3.若有定义:floata=3.0,b=4.0,c=5.0;则表达式1/2*(a+b+c)的值为(C)。A)6.0B)6C)0.0D)无答案4.以下程序段的输出结果是(C)。(提示:a当约束过严时,约束失效。按自由格式输出。)inta=1234;printf(%2d\n,a);A)12B)34C)1234D)提示出错,无结果5.下列程序段的输出结果是(C)。inta=1234;floatb=123.456;doublec=12345.54321;printf(%2d,%3.2f,%4.1f,a,b,c);A)无输出B)12,123.46,12345.5C)1234,123.46,12345.5D)1234,123.45,1234.56.设x,y均为整型变量,且x=8,y=5,则以下语句的输出结果是(D)。printf(%d,%d\n,x--,++y);A)8,5B)7,5C)7,6D)8,67.以下程序的输出结果是(A)。intmain(){inta=20,b=10;printf(%d,%%d\n,a+b,a-b);}A)30,%dB)30,10C)30,%10D)以上答案均不正确(%%d中第一个%后面的表示字符)8.下列程序的运行结果是(A)。intmain(){floatx=2.5;inty;y=(int)x;printf(x=%f,y=%d,x,y);}A)x=2.500000,y=2B)x=2.5,y=2C)x=2,y=2D)x=2.500000,y=2.0000009.以下程序的输出结果是(A)。intmain(){charc=‘z’;printf(%c,c-25);}A)aB)zC)z-25D)y(字母共有26个,而z是最后一个)10.下面程序的输出结果是(C)。intmain(){doubled=3.2;intx=1.2,y;y=(x+3.8)/5.0;printf(%d\n,d*y);}A)3B)3.2C)0D)3.0711.下面程序的输出结果是(C)。(提示:输出时无定界符)intmain(){intk=17;printf(%d,%o,%x\n,k,k,k);}A)17,17,17B)17,021,0x11C)17,21,11D)17,0x11,02112.下列程序执行后的输出结果是(C)。intmain(){charx=OxFFFF;printf(%d\n,x--);}A)-32767B)FFFEC)-1D)=-3276813.printf(a\bre\'hi\'y\\\bou\n);的输出结果是(C)。A)a\bre\'hi\'y\\\bouB)a\bre\'hi\'y\bouC)re'hi'youD)abre'hi'y\bou14.有定义语句:intx,y;若要通过scanf(%d,%d,&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中错误的是(A)。A)11空格12回车B)11,空格12回车C)11,12回车D)11,回车12回车15.有以下程序段:intm=0,n=0;charc=‘a';scanf(%d%c%d,&m,&c,&n);printf(%d,%c,%d\n,m,c,n);若从键盘上输入:10A10回车,则输出结果是(A)。A)10,A,10B)16,a,10C)10,a,0D)10,A,016.若变量已正确说明为int类型,要通过语句scanf(%d%d%d,&a,&b,&c);给a赋值1,b赋值2,c赋值3,不正确的输入形式是(B)。A)1空格2空格3回车B)1,2,3回车C)1回车2空格3回车D)1空格2回车3回车17.a,b,c被定义为int型变量,若从键盘给a,b,c输入数据,正确的输入语句是(D)A)inputa,b,c;B)read(%d%d%d,&a,&b,&c);C)scanf(%d%d%d,a,b,c);D)scanf(%d%d%d,&a,&b,&c);18.已知a,b,c为int型变量,若从键盘输入:1,2,3回车,使a的值为1,b的值为2,c的值为3,以下选项中正确的输入语句是(B)。A)scanf(%2d,%2d,%2d,a,b,c);B)scanf(%d,%d,%d,&a,&b,&c);C)scanf(%d%d%d,&a,&b,&c);D)scanf(i=%dj=%d,k=%d,&a,&b,&c);19.执行下程序时输入:123空格456空格789回车,输出结果是(D)。intmain(){chars;intc,i;scanf(%c,&c);scanf(%d,&i);scanf(%c,&s);printf(%c,%d,%c\n,c,i,s);}A)123,456,789B)1,456,789C)1,23,456,789D)1,23,20.已定义c为字符型变量,则下列语句中正确的是(C)。A)c='97'B)c=“97“C)c=97D)c=“a”21.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。#includestdio.hvoidmain(){intr;floats;scanf(%d,&r);s=p*r*r;printf(s=%f\n,s);}出错的原因是()。A)注释语句书写位置错误B)存放圆半径的变量r不应该定义为整型C)输出语句中格式描述符非法D)计算圆面积的赋值语句中使用了非法变量答案:D22.有以下程序#includestdio.hvoidmain(){intm=12,n=34;printf(%d%d,m++,++n);printf(%d%d\n,n++,++m);}程序运行后的输出结果是()。A)12353514B)12353513C)12343514D)12343513答案:A23.数字字符0的ASCII值为48,若有以下程序#includestdio.hvoidmain(){chara='1',b='2';printf(%c,,b++);printf(%d\n,b-a);}程序运行后的输出结果是______。A)3,2B)50,2C)2,2D)2,50答案:C24.有以下程序#includestdio.hvoidmain(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}当运行时输入:a回车后,以下叙述正确的是______。A)变量c1被赋予字符a,c2被赋予回车符B)程序将等待用户输入第2个字符C)变量c1被赋予字符a,c2中仍是原有字符2D)变量c1被赋予字符a,c2中将无确定值答案:A25.【选择结构程序设计】1.有变量说明语句inta,b,c;,顺序执行下面语句:a=b=c=1;++a||++b&&++c;那么,变量b的值应是(B)A.2B.1C.0D.32.有变量说明inta=3;,则表达式a1&&--a1的运算结果和a的值应该是(B)A.0和2B.0和3C.1和2D.1和33.设inta=3,b=4,c=5;,下列表达式的值不为1的是(A)。A)a+bc&&b==cB)a||b+c&&b-cC)!(ab)&&!c||1D)!(a+b)+c-1&&b+c/24.#includestdio.hintmain(){inta,b,c;a=10;b=50;c=30;if(ab)a=b;b=c;c=a;printf(“a=%d,b=%d,c=%d\n”,a,b,c);}程序的输出结果是(C)。A.a=10,b=50,c=10B.a=10,b=50,c=30C.a=10,b=30,c=10D.a=50,b=30,c=505.若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式ab?a:cd?c:d的值是(A)。(A)1(B)2(C)3(D)46.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|10的是(C)。A)abs(x-y)10B)x-y-10&&x-y10C)!(x-y)-10||!(y-x)10D)(x-y)*(x-y)1007.若有定义:inta=7;f1oatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是(A)。A)2.5B)2.7C)3.5D)4.78.若有定义和语句:ints,p;s=p=5;p=s++,++p,p+2,p++;则执行语句后p的值是(C)A)9B)8C)7D)69.若有定义:inta,b;则表达式a=4,b=3,a+b+2,a++,a+b+2的值为(C)。A)12B)11C)10D)无答案10.己知intk=10,m=3,n;则下列语句的输出结果是(B)。printf(%d\n,n=(k%m,k/m));A)2B)3C)4D)511.设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是()。A)把x和y按从大到小排列B)把x和y按从小到大排列C)无确定结果D)交换x和y中的值答案:D12.设inti=2,j=3,k=4,a=4,b=5,c=3;,则执行表达式(a=ij)&&(b=jk)&&(c=i,j,k)后,c值是()。A)0B)1C)2D)3答案:D13.若x、a、b、c均为int型变量,则执行表达式x=(a=4,b=8,c=12)后,x的值为_______。A)4B)8C)12D)24答案:C14.以下程序的输出结果是_______。#includestdio.hvoidmain(){inta=-1,b=4,k;k=(++a0)&&(b+=5);printf(%d%d%d\n,k,a,b);}A)104B)103C)003D)004答案:D15.下列运算符中,结合方向为自左向右的是()。(A)?:(B),(C)+=(D)++答案:(B)16.下列运算符中优先级最高的是()A)!B)%C)-=D)&&答案:(A)17.有以下程序#includestdio.hvoidmain(){intm=3,n=4,x;x=-m++;x=x+8/++n;printf(%d\n,x);}程序运行后的输出结果是()。A)3B)5C)-1D)-2答案:D18.【循环结构练习题】1.下面有关for循环的正确描述是()A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判定表达式C.在for循环中,不能用break语句跳出循环体D.for循环体语句中,可以包含多条语句,但要用花括号括起来答案:D2.对于for(表达式1;;表达式3)可理解为()A.for(表达式1:1;表达式3)B.for(表达式1;1;表达式3)C.for(表达式1;表达式1;表达式3)D.for(表达式1;表达式3;表达式3)答案:B3.以下正确的描述是()。A.continue语句的作用是结束整个循环的执行B.只能在循环体内和switch语句体内使用break语句C.在循环体内使用break语句或continue语句的作用相同D.从多层循环嵌套中退出时,只能使用goto语句答案:B4.下面程序段不是死循环的是()。A.intI=100;B.for(;;);while(1){I=I%100+1;if(I100)break;}C.intk=0;D.ints=36;do{--k;}while(s);while(k=0);--s;答案:C5.以下能正确计算1*2*3*……*10的程序是()。A.do{i=1;s=1;B.do{i=1;s=0;s=s*