资源描述:
《顺序结构程序设计练习题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
C语言练习题总汇一、单选题:【顺序结构程序设计】1.己知intk,m=l;执行语句k=-m++;后k的值是(A)。(提示:负号与自加运算符同级,结合方向从右向左)A)-lB)0C)1D)22.若有定义intx=4;则执行语句x+=x*=x+l;后,x的值为(C)。A)5B)20C)40D)无答案3.若有定义:floata=3.0,b=4.0,c=5.0;则表达式l/2*(a+b+c)的值为(C)。A)6.0B)6C)0.0D)无答案4.以下程序段的输出结果是(C)。(提示:a当约束过严时,约束失效。按自由格式输出。)inta=1234;printf("%2d 〃,a);A)12B)34C)1234D)提示出错,无结果5.下列程序段的输出结果是(C)。inta=1234;floatb=123.456;doublec=12345.54321;printfC%2d,%3.2f,%4.lf〃,a,b,c);A)无输出B)12,123.46,12345.50)1234,123.46,12345.5D)1234,123.45,1234.56.设x,y均为整型变量,且x=8,y=5,则以下语句的输出结果是(D)。printf("%d,%d ",x—-,++y);A)8,5B)7,5C)7,6D)8,67.以下程序的输出结果是(A)。intmain(){inta=20,b=10;printf("%d,%%d ",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);}D)x=2.500000,y=2.000000A)x=2.500000,y=2B)x=2.5,y=2C)x=2,y=29.以下程序的输出结果是(A)。intmain(){charc=‘7?•、printf("%c",c-25);}(字母共有26个,而z是最后一个)A)aB)zC)z-25D)y10.下面程序的输出结果是(C)。intmain(){doubled=3.2;intx=l.2,y;y=(x+3.8)/5.0;printf("%d ",d*y);}A)3B)3.2C)0D)3.07 11.下面程序的输出结果是(C)。(提示:输出时无定界符)intmain() {intk=17;printf("%d,%o,%x ",k,k,k);}A)17,17,17B)17,021,0x11C)17,21,11D)17,0x11,02111.下列程序执行后的输出结果是(C)。intmain(){charx=0xFFFF;printf("%d ",x―);}A)-32767B)FFFEC)-lD)=-3276812.printf("abre’hi’y\bou ");的输出结果是(C)oA)abre,hi’y\bouB)abre’hi’ybouC)re’hi*youD)abre*hi’ybou13.有定义语句:intx,y;若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中错误的是(A)。A)11〈空格〉12〈回车〉B)11,〈空格〉12〈回车〉Oil,12〈回车〉D)11,〈回车〉12〈回车〉14.有以下程序段:intm=0,n=0;charc=;scanf("%d%c%d",&m,&c,&n);printf(〃%d,%c,%d ",m,c,n);若从键盘上输入:10A10〈回车〉,则输出结果是(A)。A)10,A,10B)16,a,10C)10,a,0D)10,A,015.若变量己正确说明为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〈回车〉16.a,b,c被定义为int型变量,若从键盘给a,b,c输入数据,正确的输入语句是0)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);17.已知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);18.执行下程序时输入:123〈空格〉456〈空格〉789〈回车〉,输出结果是(D)。intmain(){chars;intc,i;scanf(〃%c*,&c);scanf&i);scanf(〃%c〃,&s);printf("%c,%d,%c ",c,i,s);}A)123,456,789B)1,456,789C)1,23,456,789D)1,23,19.己定义c为字符型变量,则下列语句中正确的是(C)。A)c=z97B)c=“97“C)c=97D)c=“a”20.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。^includevoidmain() {intr;floats;scanf(〃%d",&r);s=p*r*r;printf("s=%f 's);}出错的原因是()。A)注释语句书写位置错误B)存放圆半径的变量r不应该定义为整型C)输出语句中格式描述符非法D)计算圆面积的赋值语句中使用了非法变量答案:D11.有以下程序^includevoidmain(){intm=12,n=34;printf(〃%d%cT,m++,++n);printf("%d%d ",n++,++m);}程序运行后的输出结果是()。A)12353514B)12353513C)12343514D)12343513答案:A12.数字字符0的ASCII值为48,若有以下程序^includevoidmain(){chara=,1,,b=,2,;printf("%c,",b++);printf(^dXn^,b-a);}程序运行后的输出结果是。A)3,2B)50,2C)2,2D)2,50答案:C13.有以下程序^includevoidmain(){charcl=’1/,c2=’2’;cl=getchar();c2=getchar();putchar(cl):putchar(c2):}当运行时输入:a〈回车〉后,以下叙述正确的是。A)变量cl被赋予字符a,c2被赋予回车符B)程序将等待用户输入第2个字符C)变量cl被赋予字符a,c2中仍是原有字符2D)变量cl被赋予字符a,c2中将无确定值答案:A25. 【选择结构程序设计】 1.有变量说明语句inta,b,c;,顺序执行下面语句:a=b=c=l;++a||++b&&++c;那么,变量b的值应是(B)D.3则表达式a〈l&&--a〉l的运算结果和a的值应该是(B)C.1和2D.1和3下列表达式的值不为1的是(A)。B)a||b+c&&b~cD)!(a+b)+c-l&&b+c/2A.2B.1C.02.有变量说明inta=3;,A.0和2B.0和33.设inta=3,b=4,c=5;,A)a+b>c&&b==cC)!(a>b)&&!c||14.#includeintmain(){inta,b,c;a=10;b=50;c=30;if(a>b)a=b;b=c;c=a;printf(“a=%d,b=%d,c=%d ”,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。则条件表达式a-10&&x-y<10C)!(x-y)<-10||!(y-x)>10D)(x-y)*(x-y)<1007.若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)/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)llC)10D)无答案10.己知intk=10,m=3,n;贝!J下列语句的输出结果是(B)。printf("%d ",n=(k%ra,k/m));A)2B)3C)4D)511.设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是()。A)把x和y按从大到小排列B)把x和y按从小到大排列0无确定结果D)交换x和y中的值答案:D)o12•设inti=2,j=3,k=4,a=4,b=5,c=3;,则执行表达式(a=i〈j)&&(b=j〉k)&&(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.以下程序的输出结果是。^includevoidmainO inta=-l,b=4,k;k=(++a<0)&&(b+=5);printf("%d%d%d ",k,a,b);A)104B)103C)003D)004答案:D13.下列运算符中,结合方向为自左向右的是()。(A)?:(B),(C)+=(D)++答案:(B)14.下列运算符中优先级最高的是()A)!B)%C)-=D)&&答案:(A)15.有以下程序^includevoidmain(){intm=3,n=4,x;x=_m++;x=x+8/++n;printfC%d '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语句答案:B 4.下面程序段不是死循环的是()。A.int1=100;B.for(;;);while(1){I=I%100+l;if(I>100)break;}C.intk=0;do{k;}while(k〉=0);答案:C5.以下能正确计算1*2*3*-A.do{i=l;s=l;s=s*i;i++;}while(i〈=10);C.i=l;s=l;do{s=s*i;i++;}while(i<=10);答案:C6.下面程序的运行结果是(^includeintmain(){inty=10;do{y~;}while(~y);printf("%d ",y—);}A.-1B.1答案:D7.下面程序的运行结果是(#includeintmainO{intnum=0;while(num<=2){num++;printf(”%d ",num);D.ints=36;while(s):一一s;*10的程序是()oB.do{i=l;s=0;s:s*i;i++;}while(i<=10)D.i=l;s=0;do{s=s*i;i++;}while(i<=10))o)cC.8D.0}A.B.12C.123答案:c8.若运行以下程序时,从键盘输入3.62.4(表示回车),则下面程序的运行结果是(#include)o#includevoidmain(){floatx,y,z;scanf(“%f%f”,&x,&y);z=x/y;while(1){if(fabs(z)>1.0){x=y;y=z;z=x/y;} elsebreak;}printf(“%f ”,y);A.1.500000B.1.600000C.2.000000D.2.400000答案:B9.有以下程序:^includevoidraain(){inti=0,s=0;for(;;){if(i==3||i==5)continue;if(i==6)break;i++;s+=i;};printf(IdVi's);}程序运行后的输出结果是()。A)10B)13C)21D)程序进入死循环答案:D1.若有程序段:for(m=l;m<=100;m++){scanf("%d",&y);if(y<0)continue;printf("%3d",m);}正确的描述是()oA)当y<0时整个循环结束B)y>=0时什么也不输出C)printf函数永远也不执行D)最多允许输出100个非负整数答案:D2.下列程序的运行结果是()。#include“stdio.h”voidmain(){inti=23;do{++i;}while(i);printf(“%d”,i);C)死循环D)无任何结果A)23B)24答案:C12.二、填空题【顺序结构程序设计】1.有以下程序:intmain(){intra,n,p; scanf(〃m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d 〃,m,n,p);}若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是_m=123n=456p=789。1.以下程序段的输出结果是28。intmain(){inta=2,b=3,c=4;a*=16+(b++)-(++c);printf("%d",a);}2.以下程序段的输出结果是」_。intx=17,y=26;printf("%d",y/=(x%=6));3.下列程序的输出结果为i_。intmain(){intx=3,y=5;printf("%d〃,x=(x-一)*(一一y));}4.若有以下程序:intmain(){chara;a=W-‘A'+‘0’;(W'o’)printf("%c,%d ",a,a);}执行后的输出结果是7,55。5.以下程序段的输出结果是261。voidmain(){inta=177;printf("%o ",a);}6.以下程序的输出结果是0(-32767〜32767int)。voidraain(){unsignedshorta=65536;intb;printf("%d ",b=a);}提示:当unsignedshort和int均占2个字节时。7.输入“12345,xyz”,下列程序输出的结果是。intraain(){intx;chary;scanf(“%3d%3c”,&x,&y):printf(“%d,%c”,x,y);}答案:123,48.以下程序的运行结果是。^includevoidmain(){inti=8,j=9,m,n;m=++i;n=j++;printf(z/%d,%d,%d,%d ",i,j,m,n);}答案:9,10,9,99.下列程序的输出结果是。 ^includevoidmain(){inta=3,b=14,c=5;c=c+a*a+b%5*10;printf(/z%o z,,c);}答案:661.阅读程序,并按给定的输出格式将程序运行结果写在“运行结果:”之后^includevoidmain(){inta,b,c;a=(b=(c=3)*5)*5;printf("a=%d,b=%d,c=%d ",a,b,c);}运行结果是:答案:运行结果是:a二75,b=15,c=312.【选择结构程序设计】1.以下程序运行的结果是。^includevoidmain(){inta,b,c;a=l;b=2;c=3;a=b—<=a||a+b!=c;printf("%d,%d",a,b);}答案:1,12.以下程序的运行结果是^includevoidmain(){inta,b,c;a=b=c=l;if(a++||++b)C++;printf("%d,%d,%d ",a,b,c);}答案:2,1,23.以下程序的输出结果是^include〈stdio.h>voidmain(){intk,i=0,j=2;k=i++&&j++;printf("%d,%d,%d ",i,j,k);} 答案:1,2,04.【循环结构程序设计】1.若运行以下程序时,从键盘输入ADescriptor/,则下面程序的运行结果是v0=12,vl=4,v2=12^includevoidmain(){charc;intv0=0,vl=0,v2=0;do{switch(c=getchar()){case’af:case’:case’ecase’:case’icase’I’:case’o':case’O':case’ucase’IT:vl+=l;default:v0+=l;v2+=l;}}while(c!=’ ’);printf(“v0=%d,vl=%d,v2=%d ”,vO,vl,v2);}2.下面程序的运行结果是8,-2。#includevoidmain(){inti,b,k=0;for(i=l;i〈=5;i++){b=i%2;while(b>=0)k++;}printf(“%d,%d”,k,b);}3.下面程序的运行结果是8,22#includevoidmain(){inta,b; for(a=1,b=1;a〈=100;a++){if(b>=20)break;if(b%3==l){b+=3;continue;}b-=5;}printf(“%d,%d ”,a,b);}1.下面程序的运行结果是x=8。#includevoidraain(){inti,j,x=0;for(i=0;i〈2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf(“x=%d ”,x);}2.下面程序的运行结果是*#*#*#$。#includevoidmain(){inti;for(i=l;i〈=5;i++){if(i%2)printf(“*”);elsecontinue;printf(“#”);}printf(“$ ”);}3.下面程序的运行结果是4。#includevoidraainO{inti,j,a=0;for(i=0;i〈2;i++){for(j=0;j<4;j++){if(j%2)break;a++;}a++;}printf(“%d ”,a);}4.有以下程序,若从键盘输入:247〈回车〉,则程序的输出结果是^includevoidmain()intc; while((c=getchar())!=' ')switch(c-’2’){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);default:putchar(c+2);break;答案:66898.三、程序填空题1.下面程序的功能是将小写字母变成对应的大写字母后的第二个字母,其中y变成A,z变成B,请在空白处填入正确内容。#includevoidmain(){charc;while((c=getchar())!=’ ’){if(c>=’a’&&c〈=’z’)if(c>,V&&c<=9V+2);}printf(“%c”,c);}}答案:c-=30,c_=26。2.下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m,n中的较大数,请在内填入正确内容。#includevoidmain(){intm=0,n=0;charc;while(()!=’ ’){if(c>=,A,&&0<=?V)m++;if(c〉=’a’&&c〈=’z’)n++;}printf(“%d ”,m〈n?);[解答]:c=getchar(),n: 2.从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束。内容。^includevoidmain(){floatx,amax,amin;scanf(“%f”,&x);amax=x;amin=x;while(){if(x>amax)amax=x;if()amin=x;scanf(“%f”,&x);}printf(〃amax=%f amin=%f 〃,amax,amin);}[解答]:x>=0,xvoidmain(){intx,y,z,i,result=532;for(x=l;;x++)for(y=1;;y++)for(z=0;;z++){i=100*x+10*y+z+100*y+10*z+z;if()printfCx=%d,y=%d,z=%d x,y,z);}请在内填入正确内填入正确内容。[解答]:x<10,y〈10,z〈10,i==resulto