您好,欢迎访问三七文档
一、选择正确答案填空。1.以下叙述不正确的是D。A)一个C源程序必须包含一个main函数B)一个C源程序可由一个或多个函数组成C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面2.一个C语言程序是由B。A)一个主程序和若干个子程序组成B)函数组成C)若干过程组成D)若干子程序组成3.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为C。x=(i=4,j=16,k=32)A)4B)16C)32D)524.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+3后,c2中的值为B。A)字符’B’B)68C)不确定的值D)字符’C’5.设有说明:charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为D。A)floatB)charC)intD)double6.设有:inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=ab)&&(n=cd)后n的值为B。A)1B)2C)3D)47.判断char型变量ch是否为大写字母的正确表达式是C。A)‘A’=ch=‘Z’B)(ch=‘A’)&(ch=‘Z’)C)(ch=‘A’)&&(ch=‘Z’)D)(‘A’=ch)AND(‘Z’=ch)8.已知ch是字符型变量,下面正确的赋值语句是C。A)ch=‘a+b’;B)ch=‘\0’;C)ch=‘7’+‘9’;D)ch=5+9;9.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式B;如果字符串长度小于5,则输出按方式C。A)从左起输出该字符串,右补空格B)按原字符长从左向右全部输出C)右对齐输出该字符串,左补空格D)输出错误信息二、计算下列表达式的值。(设a=3,b=6,c=9)1.a/b______0________________________2.(a+b)%c_______________0________________3.a+b,a-c,a=b/c,a+b+c______________15_________________4.c=a++______________3_________________5.(int)a+(float)a/b___________________3____________6.(a=a+b)-(--c)_________________1______________三、分析程序,写出结果。以下程序段的输出结果是___x=1y=2*sun-*=310Squaredis:100_______.main(){intx=1,y=2;printf(“x=%dy=%d*sum*=%d\n”,x,y,x+y);printf(“10Squaredis:%d\n”,10*10);}四、编程。1.编程完成从键盘上输入三角形的底和高,输出三角形面积的C语言程序。#includestdio.hmain(){floats,a,b;printf(请输入直角三角形的底和高\n);scanf(%f%f,&a,&b);s=a*b/2.0;printf(%f,s);}2.从键盘输入本学期所有课程的成绩,输出课程成绩、总成绩和平均成绩。如下显示:课程:C程序设计大学英语高数计应基础体育成绩:98.067.070.088.065.0总成绩:329.0平均成绩:65.8#includestdio.hmain(){floatavg,s,a,b,c,d,e;scanf(%f%f%f%f%f,&a,&b,&c,&d,&e);s=a+b+c+d+e;avg=s/5.0;printf(C程序设计大学英语高数计应基础体育\n);printf(%-.2f\t%-.2f%4f%-.2f%-.2f\n,a,b,c,d,e);printf(总成绩:%.2f\n,s);printf(平均成绩:%.2f\n,avg);}模块3一、选择题1.以下不正确的if语句是C。A)if(xy&&x!=z);B)if(x!=y)x+=y;C)if(x!=y)(x++;y++;)D)if(x==y)sacnf(%d,%d,&x,&y);2.变量定义为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=23.以下程序的运行结果是B。intm=5;if(m++5)printf(“%d\n”,m);elseprintf(“%d\n”,m--);A)4B)5C)6D)74.有一分段函数如下表:x的范围y和x的关系x0y=x-1x=0y=x下面程序段中能正确表示上面关系的是D。A)y=x+1;B)y=x–1;C)if(x=0)D)y=x;if(x=0)if(x!=0)if(x0)if(x=0)if(x==0)if(x0)y=x-1;if(x0)y=x;y=x+1;elsey=x;y=x–1;elsey=x–1;elsey=x;elsey=x+1;elsey=x+1;5.为了避免在嵌套的if-else语句中产生歧义,C语言规定:else子句总是与______B______配对。A)缩排位置相同的ifB)其之前最近的ifC)其之后最近的ifD)同一行上的if二、填空题1.输入三个整数,按从大到小的顺序进行输出。intmain(){intn1,n2,n3,temp;scanf(“%d%d%d”,&n1,&n2,&n3);if(n2n3)//希望n2存放的数比n3大{temp=n2;n2=n3;n3=temp;}if(n1n3)//希望n1存放的数比n3大{temp=n1;n1=n3;n3=temp;}if(n1n2)//希望n1存放的数比n2大{temp=n1;n1=n2;n2=temp;}printf(“%d,%d,%d“,num1,num2,num3);}2.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。intmain(){charch;scanf(“%c“,&ch);x0x+1if(ch=’Z’&&ch=’Z’)ch=ch+32;elseif(ch=‘a’&&ch=‘z’)ch=ch-32;printf(“%c”,ch);}三、编程题1.编写一个程序,要求用户从终端上键入两个整数数值。检测这两个数,判定第一个数能否被第二个数整除,并在终端上显示相应的信息(要求绘制流程图)。#include”stdio.h”main(){inta,b;printf(pleaseinputtwonumbers:\n);scanf(%d%d,&a,&b);if(a%b==0)printf(%d%可以被%d整除,a,b);elseprintf(%d不能被%d整除,a,b);}2.从键盘输入a、b、c三个整数,输出其中最大的数。#includestdio.hmain(){inta,b,c,t;scanf(%d%d%d,&a,&b,&c);if(ab)t=a;elset=b;if(tc);elset=c;printf(%d,t);}3.商场进行打折促销活动,消费金额(P)越高,折扣(d)越大,标准如下:消费金额折扣P1000%100≤P2005%200≤P50010%500≤P100015%P≥100020%编写程序,从键盘输入消费金额,输出折扣率和实付金额(f),分别用if语句和switch语句来实现(要求绘制流程图)。1.#includestdio.hmain(){floatp,f,d;scanf(%f,&p);if(p100)d=0.;elseif(p200)d=0.05;elseif(p500)d=0.1;elseif(p1000)d=0.15;elsed=0.2;f=p*(1-d);printf(d=%d%%,f=%.2f\n,(int)(d*100),f);}2.#includestdio.hmain(){floatp,f,d;intc;scanf(%f,&p);c=p/100;switch(c){case0:d=0.;break;case1:d=0.05;break;case2:case3:case4:d=0.1;break;case5:case6:case7:case8:case9:d=0.15;break;default:d=0.2;}f=p*(1-d);printf(d=%d%%,f=%.2f\n,(int)(d*100),f);}模块41.单选题(1)C语言中while与do-while语句的主要区别是(A)A)do-while的循环体至少无条件执行一次B)do-while允许从外部转到循环体内C)do-while的循环体不能是复合语句D)while的循环控制条件比do-while的循环控制条件严格(2)假定a和b为int型变量,则执行以下语句后b的值为(B)a=1;b=10;do{b-=a;a++;}while(b--0);A)9B)–2C)–1D)8(3)以下程序段(A)x=-1;do{x=x*x;}while(!x);A)是死循环B)循环执行两次C)循环执行一次D)有语法错误(4)下面程序的运行结果是(A)#includestdio.hintmain(){inty=10;do{y--;}while(--y);printf(%d\n,y--);return0;}A)–1B)1C)8D)0(5)对for(表达式1;;表达式3)可理解为(B)A)for(表达式1;0;表达式3)B)for(表达式1;1;表达式3)C)for(表达式1;表达式1;表达式3)D)for(表达式1;表达式3;表达式3)(6)若i、j均为整型变量,则以下循环(A)for(i=0,j=-1;j=1;i++,j++)printf(%d,%d\n,i,j);A)循环体只执行一次B)循环体一次也不执行C)判断循环结束的条件不合法D)是无限循环(7)以下的for循环(B)for(x=0,y=0;(y!=123)&&(x4);x++);A)执行3次B)执行4次C)循环次数不定D)是无限循环(8)设j为int型变量,则下面for循环语句的执行结果是(B)for(j=10;j3;j--){if(j%3)j--;--j;--j;printf(%d,j);}A)63B)74C)62D)732.根据要求完成程序填空(1)下面的程序片段从键盘输入的字符中统计数字字符的个数,用换行符结束循环。intn=0,c;c=getchar();while(C!=’\n’&&c!=’\o’){if(c=’0’&&c=’9’)n++;c=getchar();}(2)下面程序的功能是用do-while语句求1至1000之间满足“用3除余2,用5除余3,用7除余2”的数,且一行只打印五个数。#includestdio.hintmain(){inti=1,j=0;do{if(i%3==2&&i%5==3$$i%7==2){printf(%4d,i);j=j+1;if(j==5)printf(\n);}i=i+1;}while(i1000);return0;}(3)打印100以内个位数为6且能被3整除的所有数。#includestdio.hintmain(){inti,j;for(i=0;;i++){j=i*10+6;if(i%3==1)continue;printf(%d,j);}return0;}3.编程题:(1)编一程序求n的阶乘(n由键盘输入)。Main(){intn,e=1;Longinti;Scanf(“%d”,&n);For(i=n;i0;i--)e=e*i;Printf(“%d”,e);}(2)计算1!+2!+3!+…+10!的值。Main(){ints=0,i,e;For(
本文标题:C语言书本练习答案
链接地址:https://www.777doc.com/doc-1561792 .html