《C程序设计基础练习题2及答案.docx》由会员分享,可在线阅读,更多相关《C程序设计基础练习题2及答案.docx(33页珍藏版)》请在优知文库上搜索。
1、一、单选题1、分析以下程序,下列说法正确的是()#includemain()(intx=O,a=O,b=O;if(x=a+b)printf(*n);elseprintf(#n);)A.输出*B.有语法错,不能通过编译C.通过编译,但不能连接D.输出#正确答案:A解析:A、a+b的值为0,X为0,X的值与a+b的值相同if条件成立,执行if后的语句printf(*n);2、运行以下程序,如果从键盘上输入5,则输出结果是()#includeintmain()(intx;scanf(%d,z&x);if(-5)printf(%d,x);elseprintf(%d,x+);)A.6B.5C.3D.4正
2、确答案:D解析:D、(x-),自减在后,则先求表达式的值,因此,(X-)的值为5,然后,=-l,X变为4if(-5)判断(X-)表达式的值是否小于5即if(55),条件不成立,执行else后的语句(X+),自增在后,则先求表达式的值,因此,(X+)的值为4,然后,=x+l,X变为5printf(%d,x+);输出(x+)表达式的值,所以,输出43、运行以下程序,如果从键盘上输入5,则输出结果是()#includeintmain()scanf(%d,&x);if(x-5)printf(%d7x);elseprintf(%d,+);A.6B.3C.5D.4正确答案:C解析:C.(-),自减在后,则
3、先求表达式的值,因此,(X-)的值为5,然后,x=x-l,X变为4if(x-5)判断(x-)表达式的值是否小于5即if(55),条件不成立,执行else后的语句(+X),自增在前,则先自增,x=x+l,X变为5,然后求表达式的值,因此,(+X)的值为5printf(%d,+x);输出(+x)表达式的值,所以,输出54、运行以下程序,如果从键盘上输入9,则输出结果是()#includeintx;scanf(%dz&x);if(+x10)printf(%d,);elseprintf(%d,-x);)A.llB.9C.8D.10正确答案:B解析:B、(+x),+在前,则先自增,x=+l,X变为10,
4、然后求表达式的值,因此,(+x)的值为10if(+10)判断(+x)表达式的值是否小于10即if(1010),条件不成立,执行else后的语句(-X),自减在前,则先自减,=-l,X变为9,然后求表达式的值,因此,(-X)的值为9printf(%dn,-x);输出(-X)表达式的值,所以,输出95、下面程序的运行结果是()。#includeinta=12,b=-34,c=56,min=O;min=a;if(minb)min=b;if(minc)min=c;printf(,%dzmin);)A.-34B.0C.12D.56正确答案:A解析:A、该程序是求3个数中的最小数,min保存最小数先只有一
5、个数a,则a是最小数,min=a当有2个数时,新的数b与min比较,如果b小于min,则min=b,否则,min不变。此时,min就是前2个数中的最小数当有3个数时,新的数C与min比较,如果C小于min,则min=c,否则,min不变。此时,min就是前3个数中的最小数a,b,c的最小数是-34,因此,输出-34#includeintmain()(intx=5;if(x)=6;x=7;printf(,%dn,x);)A.xB.7C.6D.5正确答案:B解析:B、X赋值为5,当执行if(5)时,5非0,为真,条件成立,执行x=6因为,x=7不是if的内嵌语句,与if无关,按顺序结构必须执行,所
6、以,输出77、设有如下程序段,则输出结果为Ointk=O,a;for(a=l;a=1000;a+)k=k+l;printf(k=%dzk);A.溢出B.k=1000Ck=100lD.k=l正确答案:B解析:B、a从1递增至1000,每次加1,循环1000次;在每次循环中k增加1,因此,循环结束时,k为IooO8、设有如下程序段,则最后一次输出的是()inta;for(a=l;a=1000;a+)printf(a=%d,7a);A.a=1000B.a=lCa=100lD.溢出正确答案:A解析:A、最后一次执行循环体时,a的值为IoO0。因此输出”a=10009、设有如下程序段,则输出结果为Oin
7、tk=O,a;for(a=l;a=1000;a+)a=a+l;k=k+l;printf(k=%d,k);A.k=501B.k=499C.k=500D.k=lOOO正确答案:C解析:C、for(a=l;a=1000;a+)a=a+l;k=k+l;这里,a=a+l;和a+,使得每次执行循环体a的值加2,因此,循环体重复执行500次,故循环结束时k的值为500。10、i11jfor(x=0,y=0;y!=l&x4;+);是()A.无限循环B.循环4次C.循环3次D.循环次数不定正确答案:B解析:B、y=0,且循环体中未修改y的值,y!=l总是成立。而X的初值为0,循环体中每次加1,条件x4,使得循环
8、重复执行4次,X的值依次取0、1、2、3,当X的值为4时,循环条件不再满足。11、inti=0zj;for(j=10;ij;j-)i+;程序的循环次数是()A无穷多次B.0C.语法错误D.5正确答案:D解析:D、分析循环每次执行i、j的值变化可得到。第1次循环,i为O,j为10;第2次循环,i为1,j为9;直至第5次循环,i为4,j为6;执行第5次循环后i为5,j为5;不满足循环条件,循环结束。12、设有程序段,以下说法正确的是OX=-1;doX=x*;while(!);A.循环体将执行一次B.系统将提示有语法错误C.循环体将执行两次D.循环体将执行无限次正确答案:A解析:A、执行一次循环后X
9、的值为1,循环条件(!x)为假,循环结束。13、C语言中WhiIe和do-while循环的主要区别是OA.do-while的循环体比while的循环体少执行1次B.do-while的循环体至少无条件执行一次C.do-while的循环体不能是复合语句D.while的循环控制条件比do-while的循环控制条件严格正确答案:B解析:B、符合while和do-while循环的执行流程。D、不同循环语句的循环条件没有特殊要求,都是根据表达式值为0或非0决定执行流程。14、下列语句不是死循环的是()A.inti=1;while(l)i+;B.inti=1;doi+;while(l);C.inti=10;
10、while(i)i-;D.inti=1;for(;)i+;正确答案:C解析:A、常量1表示条件恒真。C、当i的值递减为O时,循环结束,不是死循环。D、for的表达式2为空,无须满足任何条件,总是执行循环。15、下面程序的功能是:计算1-10之间的奇数之和及偶数之和,空白处应填O#includeintmain()(inta,bzc,i;a=c=0;for(i=0;i=10;i+=2)(a+=i;)Primf(偶数之和二%d!ra);Primf(奇数之和二%d!nc-ll);)A.b+=i+l;B.c+=i+l;C.b+=i;D.c+=i;正确答案:B解析:A、变量b是无用的变量。B、c累加奇数之
11、和C、变量b是无用的变量。16、下面程序的功能是O#includeintmain()(intx,s=OJ;for(i=l;i=5;i+)(scanf(%dz);s=s+x;)printf(s=%dn,s);return0;)A.输入任意5个整数,输出这5个数的和B.求1+2+3+4+5的和C.输入任意5个整数,输出这5个数D.输入语句SCanf(”d,&x);不能放在循环中,程序出错正确答案:A17、下面程序的功能是()#includeintmain()intx,s=O,i;scanf(%dx);while(x!=0)(s=s+x;scanf(%dz);)printf(s=%dnzs);ret
12、urnO;)A.输入一组整数,输出不为0的数B.输入一组整数,并输出这些数C.输入一组整数,以输入。作为结束,求所有数的和并输出D.程序只输入了一个整数,输出0正确答案:C解析:C、输入一组整数,直至输入为0时,循环条件(x!=0)不成立,输入结束。循环体中完成累加和读取下一个数。循环结束时输出累加和。18、for(i=1;i=10;i+)printf(*);循环结束后,i的值是()。A*B.0C.10D.11正确答案:D解析:D、当i不满足小于等于10时,结束循环。i从1递增,增至11时即结束循环。19、运行下面的程序,输出的星号个数一共是O#includeintmain()(intij;f
13、or(i=l;i=4;i+)for(j=l;j=i;j+)putchar(,);putchar(*);putchar(,n);)A.16B.4C.12D.10正确答案:B解析:B、因为for循环的循环体只能一条语句或复合语句,所以,putchar(w);不属于j循环,属于外层i循环中的语句。外层循环共循环4次,所以输出4个*20、运行下面的程序,输出的星号个数一共是O#includeintmain()(intij;for(i=l;i=4;i+)for(j=l;j=i;j+)putchar(,);putchar(,*1);putchar(,n);)A.0B.10C.4D.l正确答案:D解析:D、因为for循环的循环体只能一条语句或复合语句,内层j循环中有一条语句putchar(1);外层i循环中也没有使用复合语句,只有一条循环语句for(j=l;j=i;j+)putchar();所以,PUtCharC力;不属于任何循环,只执行1次,只输出1个*21、执行下面的程序片段,k的值是Ointk=O,i,j;for