C程序设计基础练习题2及答案_第1页
C程序设计基础练习题2及答案_第2页
C程序设计基础练习题2及答案_第3页
C程序设计基础练习题2及答案_第4页
C程序设计基础练习题2及答案_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、单选题1、分析以下程序,下列说法正确的是()#include<stdio.h>main(){intx=0,a=0,b=0;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,则输出结果是()#include<stdio.h>intmain(){intx;scanf("%d",&x);if(x--<5)printf("%d",x);elseprintf("%d",x++);}A.6B.5C.3D.4正确答案:D解析:D、(x--),自减在后,则先求表达式的值,因此,(x--)的值为5,然后,x=x-1,x变为4if(x--<5)判断(x--)表达式的值是否小于5即if(5<5),条件不成立,执行else后的语句(x++),自增在后,则先求表达式的值,因此,(x++)的值为4,然后,x=x+1,x变为5printf("%d",x++);输出(x++)表达式的值,所以,输出43、运行以下程序,如果从键盘上输入5,则输出结果是()#include<stdio.h>intmain(){intx;scanf("%d",&x);if(x--<5)printf("%d",x);elseprintf("%d",++x);}A.6B.3C.5D.4正确答案:C解析:C、(x--),自减在后,则先求表达式的值,因此,(x--)的值为5,然后,x=x-1,x变为4if(x--<5)判断(x--)表达式的值是否小于5即if(5<5),条件不成立,执行else后的语句(++x),自增在前,则先自增,x=x+1,x变为5,然后求表达式的值,因此,(++x)的值为5printf("%d",++x);输出(++x)表达式的值,所以,输出54、运行以下程序,如果从键盘上输入9,则输出结果是()#include<stdio.h>intmain(){intx;scanf("%d",&x);if(++x<10)printf("%d",x);elseprintf("%d",--x);}A.11B.9C.8D.10正确答案:B解析:B、(++x),++在前,则先自增,x=x+1,x变为10,然后求表达式的值,因此,(++x)的值为10if(++x<10)判断(++x)表达式的值是否小于10即if(10<10),条件不成立,执行else后的语句(--x),自减在前,则先自减,x=x-1,x变为9,然后求表达式的值,因此,(--x)的值为9printf("%d",--x);输出(--x)表达式的值,所以,输出95、​下面程序的运行结果是()。#include<stdio.h>main(){inta=12,b=-34,c=56,min=0;min=a;if(min>b)‎min=b;‎if(min>c)min=c;‎printf("%d",min);}A.-34B.0C.12D.56正确答案:A解析:A、该程序是求3个数中的最小数,min保存最小数先只有一个数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,因此,输出-346、​分析以下程序,输出结果是()​#include<stdio.h>​intmain()​{​intx=5;​if(x)x=6;​x=7;​printf("%d\n",x);​}A.xB.7C.6D.5正确答案:B解析:B、x赋值为5,当执行if(5)时,5非0,为真,条件成立,执行x=6因为,x=7不是if的内嵌语句,与if无关,按顺序结构必须执行,所以,输出77、‏设有如下程序段,则输出结果为()‏intk=0,a;‏for(a=1;a<=1000;a++)‏k=k+1;‏printf("k=%d",k);A.溢出B.k=1000C.k=1001D.k=1正确答案:B解析:B、a从1递增至1000,每次加1,循环1000次;在每次循环中k增加1,因此,循环结束时,k为10008、设有如下程序段,则最后一次输出的是()inta;for(a=1;a<=1000;a++)printf("a=%d",a);A.a=1000B.a=1C.a=1001D.溢出正确答案:A解析:A、最后一次执行循环体时,a的值为1000。因此输出"a=1000"。9、设有如下程序段,则输出结果为()intk=0,a;for(a=1;a<=1000;a++){a=a+1;k=k+1;}printf("k=%d",k);A.k=501B.k=499C.k=500D.k=1000正确答案:C解析:C、for(a=1;a<=1000;a++){a=a+1;k=k+1;}这里,a=a+1;和a++,使得每次执行循环体a的值加2,因此,循环体重复执行500次,故循环结束时k的值为500。10、‏语句for(x=0,y=0;y!=1&&x<4;x++);是()A.无限循环B.循环4次C.循环3次D.循环次数不定正确答案:B解析:B、y=0,且循环体中未修改y的值,y!=1总是成立。而x的初值为0,循环体中每次加1,条件x<4,使得循环重复执行4次,x的值依次取0、1、2、3,当x的值为4时,循环条件不再满足。11、inti=0,j;for(j=10;i<j;j--)i++;‏程序的循环次数是()‏A.无穷多次B.0C.语法错误D.5正确答案:D解析:D、分析循环每次执行i、j的值变化可得到。第1次循环,i为0,j为10;第2次循环,i为1,j为9;直至第5次循环,i为4,j为6;执行第5次循环后i为5,j为5;不满足循环条件,循环结束。12、设有程序段,以下说法正确的是()x=-1;do{x=x*x;}while(!x);A.循环体将执行一次B.系统将提示有语法错误C.循环体将执行两次D.循环体将执行无限次正确答案:A解析:A、执行一次循环后x的值为1,循环条件(!x)为假,循环结束。13、C语言中while和do-while循环的主要区别是()A.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(1)i++;B.inti=1;doi++;while(1);C.inti=10;while(i)i--;D.inti=1;for(;;)i++;正确答案:C解析:A、常量1表示条件恒真。C、当i的值递减为0时,循环结束,不是死循环。D、for的表达式2为空,无须满足任何条件,总是执行循环。15、‏下面程序的功能是:计算1~10之间的奇数之和及偶数之和,空白处应填()‏#include<stdio.h>intmain(){‏inta,b,c,i;a=c=0;for(i=0;i<=10;i+=2){a+=i;}printf("偶数之和=%d!\n",a);printf("奇数之和=%d!\n",c-11);}A.b+=i+1;B.c+=i+1;C.b+=i;D.c+=i;正确答案:B解析:A、变量b是无用的变量。B、c累加奇数之和C、变量b是无用的变量。16、下面程序的功能是()#include<stdio.h>intmain(){intx,s=0,i;for(i=1;i<=5;i++){scanf("%d",&x);s=s+x;}printf("s=%d\n",s);return0;}A.输入任意5个整数,输出这5个数的和B.求1+2+3+4+5的和C.输入任意5个整数,输出这5个数D.输入语句scanf("%d",&x);不能放在循环中,程序出错正确答案:A17、下面程序的功能是()#include<stdio.h>intmain(){intx,s=0,i;scanf("%d",&x);while(x!=0){s=s+x;scanf("%d",&x);}printf("s=%d\n",s);return0;}A.输入一组整数,输出不为0的数B.输入一组整数,并输出这些数C.输入一组整数,以输入0作为结束,求所有数的和并输出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、运行下面的程序,输出的星号个数一共是()#include<stdio.h>intmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=i;j++)putchar('');putchar('*');putchar('\n');}}A.16B.4C.12D.10正确答案:B解析:B、因为for循环的循环体只能一条语句或复合语句,所以,putchar('*');不属于j循环,属于外层i循环中的语句。外层循环共循环4次,所以输出4个*20、‏运行下面的程序,输出的星号个数一共是()‏#include<stdio.h>intmain(){inti,j;for(i=1;i<=4;i++)for(j=1;j<=i;j++)‎‏putchar('');putchar('*');‎‏putchar('\n');‎‏}‎A.0B.10C.4D.1正确答案:D解析:D、因为for循环的循环体只能一条语句或复合语句,内层j循环中有一条语句putchar('');外层i循环中也没有使用复合语句,只有一条循环语句for(j=1;j<=i;j++)putchar('');所以,putchar('*');不属于任何循环,只执行1次,只输出1个*21、执行下面的程序片段,k的值是()intk=0,i,j;for(i=0;i<5;i++)for(j=0;j<3;j++)k=k+1;A.15B.3C.8D.5正确答案:A解析:A、共循环15次,每次k+122、‎下面程序的功能是输出以下形式的图案,则在下划线处应填入的是()‎*******‎*****‎***‎*‎‎#include<stdio.h>intmain(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=;j++)putchar('*');putchar('\n');}return0;}‎A.2*(5-i)+1B.2*i-1C.2*(5-i)-1D.2*i+1正确答案:C解析:C、外层循环变量i对应于图形的行,内层循环变量j对应于图形的列,内层j循环控制输出*的个数研究图形可发现,随着行号加1(i加1),*的个数减2,且i=4时,1个*,本答案符合这个规律23、鸡兔同笼,共有98个头,386只脚,编程求鸡、兔各多少只。代码如下,按要求在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include<stdio.h>intmain(){intx,y;for(x=1;x<98;x++){_____(1)____if(__(2)___){printf("x=%d,y=%d",x,y);}}return0;}A.(1)y=98-x;(2)2*x+4*y==386;B.(1)x=98-y;(2)2*x+4*y==386;C.(1)y=98-x;(2)2*x+4*y<=386;D.(1)x=98-y;(2)2*x+4*y<=386;正确答案:A解析:A、要满足2个条件:假设x表示鸡,第一空描述兔子的头数y,符合98个头的条件第二个空填满足386只脚的条件24、下面程序的功能是()#include<stdio.h>intmain(){intx,s,i;scanf("%d",&x);s=x;for(i=1;i<=6;i++){scanf("%d",&x);if(s<x)s=x;}printf("s=%d\n",s);return0;}A.输入6个整数,输出第1个数B.输入7个整数,输出其中的最小数C.输入7个整数,输出其中的最大数D.输入6个整数,输出这些数的和正确答案:C二、多选题1、‏按功能键F5进入调试状态后,可以()。A.控制程序一步一步地执行,每执行一步,都可以暂停B.查出所有的语法错误C.观察变量或表达式值的变化D.设置断点正确答案:A、C、D解析:B、编译查语法错误,只有编译通过后,才能使用调试工具。调试工具查的是逻辑错误2、程序功能:输入一个整数,当它是偶数时,输出“该数是偶数”,否则,输出“该数是奇数”。请完善程序,空格处应填()。#include<stdio.h>intmain(){intx;printf("请输入x:");scanf("%d",&x);if(x%2==0)printf("该数是偶数\n");//偶数除以2的余数为0printf("该数是奇数\n");return0;}A.if(x%2!=0)B.if(x/2!=0)C.elseD.elseif(x%2!=0)正确答案:A、C、D解析:A、采用2个单分支if语句完成C、采用if...else双分支结构完成D、采用了级联式if...elseif结构3、输入一个考试分数(0至100范围内),如果分数小于60分,则输出“不及格”;否则输出“及格”。(程序有1个空,请选择正确的答案)#include<stdio.h>intmain(){intx;printf("请输入分数(0-100):");scanf("%d",&x);if(x<60)printf("不及格\n");‏printf("及格\n");return0;‏}A.elseB.elseif(x>=60)C.if(x>=60)D.x>=60正确答案:A、B、C解析:A、采用if...else双分支结构完成B、采用了级联式if...elseif结构C、采用2个单分支if语句完成4、‏‏下面()循环体执行10次。A.for(i=2;i<=20;i=i+2){循环体;}B.for(i=10;i>=1;i=i-1){循环体;}C.for(i=0;i<=9;i=i+1){循环体;}D.for(i=1;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、下面()是正确的判断素数程序(m>1)。A.j=0;for(i=2;i<=m-1;i++)if(m%i!=0)j++;if(j==m-2)printf(“%d是素数\n",m);提示:素数,不能整除[2,m-1]内的所有数,不能整除数的总个数=m-2B.j=0;for(i=2;i<=m-1;i++)if(m%i==0)j++;if(j==0)printf(“%d是素数\n",m);提示:素数,不能整除[2,m-1]内的所有数,能整除数的总个数=0C.flag=0;for(i=2;i<=m-1;i++)if(m%i==0)flag=1;if(flag==0)printf(“%d是素数\n",m);D.for(i=2;i<=m-1;i++)if(m%i==0)i=m+2;if(i==m+3)printf(“%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、阅读下面的程序,该程序完成的功能有()#include<stdio.h>intmain(){intnumber,min;inti,n=1;printf("请输入第1个数");scanf("%d",&number);min=number;//只有1个数时,最小数就是这个数,设min初值为第1个数for(i=2;i<=8;i++){printf("请输入第%d个数",i);‏scanf("%d",&number);‏if(min>number)//min与新输入的数比,如果更大,则{min=number;//min更新为较小的数n=i;//n更新为较小数的位置}}printf("第%d个数最小,为%d\n",n,min);//输出最小数的位置与最小数return0;}A.输出8个数中的最小数B.将输入的8个数由大至小排序C.输出最小数的位置D.求7个数最小数正确答案:A、C解析:A、min变量保存的是最小数求最大、最小的编程套路,请大家熟悉。这是经常需要的程序C、n保存的就是位置,每次更新最小值min时,同时更新最小值的位置三、填空题1、‍读程序,写出运行结果。#include<stdio.h>main(){​inta=1,b=3,c=5;​if(c==a+b)​printf("yes\n");​else​printf("no\n");​}​​正确答案:no解析:a+b的值为4,c为5,5的值与a+b的值不相等if条件不成立,执行else后的语句printf("no\n");2、‎读程序,写出运行结果。#include<stdio.h>intmain(){intx=2,y=-1,z=5;if(x<y)if(y<0)z=0;elsez=z+1;printf("%d\n",z);}正确答案:5解析:else与其上面最近的未配对的if配对,因此,if(y<0)z=0;elsez=z+1;是一条双分支语句该语句是第1个if---------if(x<y)的内嵌语句,当x<y时,才执行2<-1不成立,所以,内嵌语句不执行,z无任何变化3、读程序,写出运行结果。#include<stdio.h>main(){floata,b,c,t;a=3;b=7;c=1;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f",a,b,c);//注意%5.2f的输出格式与逗号‏}正确答案:1.00,3.00,7.00解析:该程序是将a,b,c3个数由小至大排序当a>b时,a,b的值交换,则保证此时a<=b当a>c时,a,c的值交换,则保证此时a<=c因此,a中存放的是3个数的最小值最后比较b,c,当b>c时,b,c的值交换,则保证此时b<=c至此,a<=b<=c,将3个数输出,并带2位小数位,应是1.00,3.00,7.004、下面是一个旅游自助程序。程序先输出选择菜单,如果用户输入1,则提示输入租车数量,用变量i保存,然后计算需支付的金额,并输出。如果用户输入2,则提示输入购票数量,用变量j保存,然后计算需支付的金额,并输出。如果用户输入其它数,则提示选择错误。费用计算方法:租一辆车需支付150元。门票一张60元,如果购票数>=10,则每张50元。请完善程序。(程序有2个空,答案一行写一个,不要添加多余的空格)#include<stdio.h>intmain(){intchoose,i,j,money;printf("\n\t\t旅游自助服务\n");printf("\t1---租车\t2---购买门票\n\n");printf("请选择您需要的服务:");scanf("%d",&choose);if() { printf("请输入租车数量"); scanf("%d",&i); money=150*i; printf("\n您需支付:%d元\n",money); }(choose==2) { printf("请输入购票数量"); scanf("%d",&j); if(j>=10)money=50*j;elsemoney

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论