C程序设计基础练习题2及答案.docx

上传人:夺命阿水 文档编号:990215 上传时间:2024-02-22 格式:DOCX 页数:33 大小:70.05KB
返回 下载 相关 举报
C程序设计基础练习题2及答案.docx_第1页
第1页 / 共33页
C程序设计基础练习题2及答案.docx_第2页
第2页 / 共33页
C程序设计基础练习题2及答案.docx_第3页
第3页 / 共33页
C程序设计基础练习题2及答案.docx_第4页
第4页 / 共33页
C程序设计基础练习题2及答案.docx_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《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、

14、因为for循环的循环体只能一条语句或复合语句,内层j循环中有一条语句putchar(1);外层i循环中也没有使用复合语句,只有一条循环语句for(j=l;j=i;j+)putchar();所以,PUtCharC力;不属于任何循环,只执行1次,只输出1个*21、执行下面的程序片段,k的值是Ointk=O,i,j;for(i=0;i5;i+)for(j=0;j3;j+)k=k+l;A.15B.3C.8D.5正确答案:A解析:A、共循环15次,每次k+122、下面程序的功能是输出以下形式的图案,则在下划线处应填入的是()*includeintmain()(inti,j;for(i=l;i=4;i+)

15、for(j=1;j=;j+)putchar(*);putchar(n,);)return0;)A.2*(5-i)+lB.2*i-1C.2*(5-i)-lD.2*i+1正确答案:C解析:C、外层循环变量i对应于图形的行,内层循环变量j对应于图形的列,内层j循环控制输出*的个数研究图形可发现,随着行号加1(i加1),*的个数减2,且i=4时,1个*,本答案符合这个规律23、鸡兔同笼,共有98个头,386只脚,编程求鸡、兔各多少只。代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#includeintmain()(intx,y;for(x=l;98;+)(1)if(2)(p

16、rintf(x=%d,y=%d,zy);)return0;)A.y=98-x;2*x+4*y=386;B.(l)=98-y;(2)2*x+4*y=386;C.(l)y=98-x;(2)2*x+4*y=386;D.(l)=98-y;(2)2*x+4*y=386;正确答案:A解析:A、要满足2个条件:假设X表示鸡,第一空描述兔子的头数y,符合98个头的条件第二个空填满足386只脚的条件24、下面程序的功能是O#includeintmain()(intx,s,i;scanf(%d,&x);s=x;for(i=l;i=6;i+)scanf(%d,);if(sx)s=x;printf(s=%dn,s);

17、returnO;A.输入6个整数,输出第1个数B.输入7个整数,输出其中的最小数C.输入7个整数,输出其中的最大数D.输入6个整数,输出这些数的和正确答案:C二、多选题1、按功能键F5进入调试状态后,可以()。A.控制程序一步一步地执行,每执行一步,都可以暂停B.查出所有的语法错误C.观察变量或表达式值的变化D.设置断点正确答案:A、C、D解析:B、编译查语法错误,只有编译通过后,才能使用调试工具。调试工具查的是逻辑错误2、程序功能:输入一个整数,当它是偶数时,输出“该数是偶数”,否则,输出“该数是奇数请完善程序,空格处应填()。#includeintmain()(int;Printf(请输入

18、x:);scanf(,%dx);if(x%2=0)Printf(“该数是偶数n”);偶数除以2的余数为0Printf(“该数是奇数n“);return0;)A.if(%2!=O)8.1 f(2!=0)C.elseD.elseif(%2!=0)正确答案:A、C、D解析:A、采用2个单分支if语句完成C、采用if.else双分支结构完成D、采用了级联式if.elseif结构3、输入一个考试分数(0至Ioo范围内),如果分数小于60分,则输出“不及格”;否则输出“及格”。(程序有1个空,请选择正确的答案)#includeintmain()intx;Primf(“请输入分数(O-IO0):);scan

19、f(,%d,Sx);if(=60)C.if(=60)D.x=60正确答案:A、B、C解析:A、采用if.else双分支结构完成B、采用了级联式if.elseif结构C、采用2个单分支if语句完成4、下面()循环体执行10次。A.for(i=2;i=l;i=i-1)循环体;C.for(i=0;i=9;i=i+1)循环体;D.for(i=l;i=10;i=i+1)循环体;正确答案:A、B、C、D解析:A、i从2增至20,每次循环增2。B、i从10减至1,每次循环减1。C、i从0增至9,每次循环增1。D、循环控制变量i,通过初值、终值、步长的改变设计循环次数。i从1增至10,每次循环增1。5、下面(

20、)是正确的判断素数程序AJ=O;for(i=2;i=m-l;i+)if(m%i!=0)j+;if(j=m-2)printf(a%d是素数n”,m);提示:素数,不能整除2,m-l内的所有数,不能整除数的总个数=m-2BJ=O;for(i=2;i=m-l;i+)if(m%i=0)j+;if(j=O)printf(a%d是素数n”,m);提示:素数,不能整除2,m-l内的所有数,能整除数的总个数二0C.flag=0;for(i=2;i=m-l;i+)if(m%i=0)fag=l;if(fag=O)printf(u%d是素数n”,m);D.for(i=2;i=m-l;i+)if(m%i=0)i=m+

21、2;if(i=m+3)printf(a%d是素数n”,m);正确答案:A、B、C解析:A、正确。当m只能除尽1和m时,m为素数。j统计的是m除不尽的数的个数,非因子的个数。因此,j=m-2,即素数。B、正确。当m只能除尽1和m时,m为素数。j统计的是m的因子的个数,因此,j=0,没有因子,即素数。C、正确。j为标识变量,如果m能除尽i,j+,则j的值被修改。只有m为素数,无因子,j的值才保持为0。D、错误。当m不是素数,存在某个i,使m%i=0,满足if条件,执行i=m+2,然后i+,大于m-1跳出循环。因此,循环后,如果i=m+3,m不是素数。6、阅读下面的程序,该程序完成的功能有()#in

22、cludeintmain()(intnumber,min;inti,n=l;Printf(请输入第1个数”);scanf(%dz&number);min=number;只有1个数时,最小数就是这个数,设min初值为第1个数for(i=2;inumber)如果更大,则(min=number;n=i;小数的位置)Printf(第d个数最小,为dn,1,n,min);最小数return0;)A.输出8个数中的最小数B.将输入的8个数由大至小排序C.输出最小数的位置/min与新输入的数比,/ min更新为较小的数/ n更新为较输出最小数的位置与D.求7个数最小数正确答案:A、C解析:A、min变量保存

23、的是最小数求最大、最小的编程套路,请大家熟悉。这是经常需要的程序C、n保存的就是位置,每次更新最小值min时,同时更新最小值的位置三、填空题1、读程序,写出运行结果。#includemain()(inta=l,b=3,c=5;if(c=a+b)printf(yesn);elseprintf(non);)正确答案:no解析:a+b的值为4,c为5,5的值与a+b的值不相等if条件不成立,执行else后的语句printf(non);2、读程序,写出运行结果。#includeintmain()intx=2zy=-lzz=5;if(y)if(VO)z=O;elsez=z+l;printf(%dn,z)

24、;)正确答案:5解析:else与其上面最近的未配对的if配对,因此,if(yo)z=0;elsez=z+l;是一条双分支语句该语句是第Ijifif(y)的内嵌语句,当xy时,才执行2-1不成立,所以,内嵌语句不执行,Z无任何变化3、读程序,写出运行结果#includemain()floatazb,c,t;a=3;b=7;c=l;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;Printfd%5.2f,%5.2f%5.2f,a,b,c);注意5.2f的输出格式与逗号正确答案:1.00,3.00,7.00解析:该程序是将a,b,c3个数由

25、小至大排序当ab时,a,b的值交换,则保证此时ac时,a,c的值交换,则保证此时ac时,b,c的值交换,则保证此时b=c至此,a=b=10,则每张50元。请完善程序。(程序有2个空,答案一行写一个,不要添加多余的空格)#includeintmain()(intchoosezizj,money;printf(ntt旅游自助服务n)Primf(乜一租车t2-购买门票nn);Primf(请选择您需要的服务:);scanf(%d,&choose);if()(Printf(“请输入租车数量”);SCanf(U%d“,&i);money=150*i;printf(n您需支付:d元n”,money);(ch

26、oose=2)Printf(“请输入购票数量,);scanf(%d,&j);if(j=10)money=50*j;elsemoney=60*j;printf(n您需支付:%d元n”,money);)else(Printf(“选择错误”);)return0;)正确答案:Choose=Ielseif或l=chooseelseif解析:根据题意,如果用户输入1,则提示输入租车数量,第一个if的内嵌语句中,Primf(“请输入租车数量”);因此,该分支是用户输入1的情况而输入的值是保存在ChoOSe中的,因此,填ChOOSe=I第二个空,是第2个分支的条件部分,综合上下,是多分支if结构,因此,填el

27、seif5、程序功能:输入n的值(nll),计算l!+2!+3!+n!,并输出计算结果。请完善程序。(程序有1个空,答案一行写一个,不要添加多余的空格)#includeintmain()(inti,n;longsum=0,fac=l;/fac存储每个加项(阶乘)的值Printf(“请输入n的值:);scanf(%dzn);for(i=l;i=n;i+)(/后一加项与前一加项的关系sum=sum+fac;)Printf(”和为%ldn,sum);return0;)正确答案:fac=fac*i;解析:研究后一加项与前一加项的关系,会发现第i项的加数二第i-1项的加数*i因此,第i次循环使用这个公式

28、求加项,并把加项加入总和中6、编程输出如下图的九九乘法口诀表:1*1=12*1=23*1=34*1=45 6 7 8 9 = Tr=Tr Ti1 IA 1 IA *M* 62*2=43*2=64*2=85*2=106*2=127*2=148*2=169*2=183*3=94*3=124*4=165*3=155*4=206*3=186*4=247*3=217*4=288*3=248*4=329*3=279*4=365*5=256*5=307*5=358*5=409*5=456*6=367*6=428*6=489*6=547*7=498*7=56 8*8=649*7=63 9*8=72 9*9=81(程序有2个空,答案一行写一个,不要添加多余的空格)#includeintmain()inti,j;printf(tttt乘法口诀表nn);for(i=l;i=9;i+)外循环输出9行(for(j=lj=(1);j+)内循环每行输出i列printf(%d*%d=%dt,zizj,);输出乘法表printf(n);输出一行后换行)return0;)正确答案:ii*j

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号