您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > C语言程序设计练习题
C语言程序设计练习题一、选择题.............................................1二、填空题............................................26三、判断题............................................31四、程序填空..........................................34五、程序改错..........................................60六、程序设计..........................................84佳木斯大学公共计算机教研部1一、选择题1、x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是(B).A.INPUTx、y、z;B.scanf(%d%d%d,&x,&y,&z);C.scanf(%d%d%d,x,y,z);D.read(%d%d%d,&x,&y,&z);2、当用户要求输入的字符串中含有空格时,应使用的输入函数是(C).A.scanf()B.getchar()C.gets()D.getc()3、关于if后一对圆括号中的表达式,以下叙述中正确的是(D).A.只能用逻辑表达式B.只能用关系表达式C.既可以用逻辑表达式也可以用关系表达式D.可以用任意表达式4、以下语句的输出结果是(D).printf(%d\n,strlen(\t\065\xff\n));A.5B.14C.8D.输出项不合法,无正常输出5、若x是int型变量,y是float型变量,所用的scanf调用语句格式为:scanf(x=%d,y=%f,&x,&y);则为了将数据10和66.6分别赋给x和y,正确的输入应是(A).A.x=10,y=66.6B.1066.6C.10回车66.6D.x=10回车y=66.66、若有说明:int6、*p,m=5,n;以下正确的程序段是(D).A.p=&n;scanf(%d,&p);B.p=&n;scanf(%d,*p);C.scanf(%d,&n);*p=n;D.p=&n;*p=m;7、若在定义行:inta,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确给变量赋值的是(C).A.scanf(%d,a,b,c);B.scanf(%d%d%d,a,b,c);C.scanf(%d,p);D.scanf(%d,&p);8、若执行下面的程序时,从键盘上输入5和2,则输出结果是(C).main(){inta,b,k;scanf(%d,%d,&a,&b);k=a;if(ab)k=a%b;elsek=b%a;printf(%d\n,k);}A.5B.3C.2D.19、若执行下述程序时,若从键盘输入6和8时,结果为(B).main(){inta,b,s;scanf(%d%d,&a,&b);s=a;if(ab)s=b;s*=s;printf(%d,s);}A.36B.64C.48D.以上都不对10、设变量x和y均已正确定义并赋值.以下if语句中,在编译时将产生错误信息的是(C).A.if(x++);B.if(xy&&y!=0);elsey++;C.if(x0)x--D.if(y0){;}elsex++;211、设变量均已正确定义,若要通过scanf(%d%c%d%c,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y.以下所示的输入形式中正确的是(D).A.10X20YB.10X20YC.10X回车20YD.10X回车20Y12、下列程序的运行结果是(D).main(){intx=-9,y=5,z=8;if(xy)if(y0)z=0;elsez+=1;printf(%d\n,z);}A.6B.7C.8D.913、现有格式化输入语句,scanf(x=%d,sumy=%d,linez=%d,&x,&y,&z);,已知在输入数据后,x,y,z的值分别是12,34,45,则下列数据是正确的输入格式的是(D).A.12,34,45B.x=12,y=34,z=45C.x=12,sumy=34,z=45D.x=12,sumy=34,linez=4514、已有定义和语句:doublea,b,c;scanf(%lf%lf%lf,&a,&b,&c);,要求给a、b、c分别输入10.0、20.0、30.0,不正确的输入形式是(D).A.10.0回车20.0回车30.0B.10.0回车2030C.1020回车30.0D.10.0,20.0,30.015、已知inta;floatb;所用的scanf调用语句格式为:scanf(a//%d,b=%f,&a,&b);为了将数据3和25.08分别赋给x和y,正确的输入形式是(C).A.3,25.08B.a=3,b=25.08C.a//3,b=25.08D.a//3回车b=25.0816、已知intx=1,y=2,z=3;以下语句执行后x,y,z的值是(B).if(xy)z=x;x=y;y=z;A.x=1,y=2,z=3B.x=2,y=3,z=3C.x=2,y=3,z=1D.x=2,y=3,z=217、以下程序的输出结果是(A).main(){inta=15,b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0:m++;break;}}printf(%d\n,m);}A.1B.2C.3D.418、以下程序段的输出结果是(C).inta=1234;printf(%2d\n,a);A.12B.34C.1234D.提示出错、无结果19、以下程序输出结果是(A)main(){inta=5,b=4;printf(%d\n,ab?a+b:a-b);}A.9B.1C.10D.无法确定20、以下叙述中正确的是(C).3A.用C程序实现的算法必须要有输入和输出操作B.用C程序实现的算法可以没有输出但必须要有输入C.用C程序实现的算法可以没有输入但必须要有输出D.用C程序实现的算法可以既没有输入也没有输出21、有定义:intb;charc[10];,则正确的输入语句是(B).A.scanf(%d%s,&b,&c);B.scanf(%d%s,&b,c);C.scanf(%d%s,b,c);D.scanf(%d%s,b,&c);22、有如下程序main(){floatx=2.0,y;if(x0.0)y=0.0;elseif(x10.0)y=1.0/x;elsey=1.0;printf(%f\n,y);}该程序的输出结果是(C).A.0.000000B.0.250000C.0.500000D.1.00000023、有如下程序:main(){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.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=224、有以下程序,其中%u表示按无符号整数输出main(){unsignedintx=0xFFFF;/*x的初值为十六进制数*/printf(%u\n,x);}程序运行后的输出结果是(B).A.-1B.65535C.32767D.0xFFFF25、有以下程序段intj;floaty;charname[50];scanf(%2d%f%s,&j,&y,name);当执行上述程序段,从键盘上输入555667777abc后,y的值为(B).A.55566.0B.566.0C.7777.0D.566777.026、阅读下面的程序,该程序(D).main(){inta=5,b=0,c=0;if(a=b+c)printf(***\n);elseprintf($$$\n);}A.有语法错不能通过编译B.可以通过编译但不能通过连接C.输出***D.输出$$$27、运行下面程序,若从键盘输入字母b,则输出结果是(C).main(){charc;4c=getchar();if(c='a'&&c='u')c=c+4;elseif(c='v'&&c='z')c=c-21;elseprintf(inputerror!\n);putchar(c);}A.gB.wC.fD.d28、执行下列程序时输入:123空格456空格789回车输出结果是(D).main(){chars[100];intc,i;scanf(%c,&c);scanf(%d,&i);scanf(%s,s);printf(%c,%d,%s\n,c,i,s);}A.123,456,789B.1,456,789C.1,23,456,789D.1,23,45629、当输入为quert?时,下面程序的执行结果是(A).#includestdio.hmain(){charc;c=getchar();while(c!='?'){putchar(c);c=getchar();}}A.quertB.RvfsuC.quert?D.rvfsu?30、若变量已正确定义,则下面程序段的输出结果是(B).i=0;doprintf(%d,,i);while(i++);printf(%d\n,i);A.0,0B.0,1C.1,1D.程序进入无限循环31、若有如下语句intx=3;do{printf(%d\n,x-=2);}while(!(--x));则上面程序段(B).A.输出的是1B.输出的是1和-2C.输出的是3和0D.是死循环32、设有程序段intk=10;while(k=0)k=k-1;下面描述中正确的是(C).A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次33、设有程序段intk=10;while(k=0)k=k-1;则下面描述中正确的是(C).A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次34、设有以下程序5main(){intx=0,s=0;while(!x!=0)s+=++x;printf(%d,s);}则该程序的运行情况是(B).A.运行程序后输出0B.运行程序后输出1C.程序中的控制表达式是非法的D.程序执行无限次35、下列程序的输出结果是(B).main(){inti,a=0,b=0;for(i=1;i10;i++){if(i%2==0){a++;continue;}b++;}printf(a=%d,b=%d,a,b);}A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=536、下列说法中错误的是(A).A.只能在循环体内使用break语句B.在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环C.在while和do…while循环中,continue语句并没有使整个循环终止D.continue的作用是结束本次循环,即跳过本次循环体中尚未执行的语句,接着再一次进行循环判断37、下面程序的运行结果是(B).#includestdio.hmain(){chara[]=morning,t;inti,j=0;for(i=1;i7;i++)if(a[j]a[i])j=i;t=a[j];a[j]=a[7];a[7]=a[j];puts(a);}A.mrgninrB.moC.moringD.morning38、下面的表达式while(!x)中的表达式!x与下面条件(A)等价.A.x==0B.x==1C.x==0||x==1D.x!=039、现有如下程序main(){intk[30]={12,324,45,6,768,98,21,34,453,456};intcount=0,i=0;while(k[i]){i
本文标题:C语言程序设计练习题
链接地址:https://www.777doc.com/doc-4154784 .html