C语言书本练习答案doc.docx
《C语言书本练习答案doc.docx》由会员分享,可在线阅读,更多相关《C语言书本练习答案doc.docx(14页珍藏版)》请在冰豆网上搜索。
![C语言书本练习答案doc.docx](https://file1.bdocx.com/fileroot1/2022-10/26/19c701e7-2bcf-4f3a-9cf3-25e90904db48/19c701e7-2bcf-4f3a-9cf3-25e90904db481.gif)
C语言书本练习答案doc
一、选择正确答案填空。
1.以下叙述不正确的是D。
A)一个C源程序必须包含一个main函数
B)一个C源程序可由一个或多个函数组成
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
2.一个C语言程序是由旦。
A)一个主程序和若干个子程序组成
B)函数组成
C)若干过程组成
D)若干子程序组成
3.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为C。
x=(i=4,j=16,k=32)
A)4B)16C)32D)52
4.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=,A,+3后,c2中的值为旦。
A)字符BB)68C)不确定的值D)字符C
5.设有说明:
charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为D。
A)floatB)charC)intD)double
6.设有:
inta=l,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为Bo
A)1B)2C)3D)4
7.判断char型变量ch是否为大写字母的正确表达式是C。
A),A,v=chv=2,B)(ch>=6A?
)&(ch<=aZ?
)
C)(ch>=A)&&(chv=Z)D)(Av=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,则输出按方式旦;如果字符串长度小于5,则输出按方式C。
A)从左起输出该字符串,右补空格B)按原字符长从左向右全部输出
C)右对齐输出该字符串,左补空格D)输出错误信息
二、计算下列表达式的值。
(设a=3,b=6,c=9)
1.a/b0
2.(a+b)%c0
3.a+b,a・c,a=b/c,a+b+c15
4.c=a++3
5.(int)a+(float)a/b3
6.(a=a+b)-(--c)1
三、分析程序,写出结果。
以下程序段的输出结果是_x=l尸2*sun・*=3
10Squaredis:
100.
main()
{intx=l,y=2;
printf("x=%dy=%d*sum*=%d\n",x,y,x+y);
printf("10Squaredis:
%d\n",10*10);
}
四、编程。
1.编程完成从键盘上输入三角形的底和高,输出三角形面积的C语言程序。
#includenstdio.h"
main()
{floats,a,b;
printf(”请输入直角三角形的底和高\n”);
scanf(”%f%f',&a,&b);
s=a*b/2.0;
printfC^f^s);
}
2,从键盘输入本学期所有课程的成绩,输出课程成绩、总成绩和平均成绩。
如下显示:
课程:
C程序设计大学英语高数计应基础体育
成绩:
98.067.070.088.065.0
总成绩:
329.0
平均成绩:
65.8
#includeHstdio.hn
main()
{
floatavg,s,a,b,c,d,e;
scanf(n%f%f%f%f%f',&a,&b,&c,&d,&e);
s=a+b+c+d+e;
avg=s/5.0;
printf(”C程序设计大学英语高数计应基础体育\n”);
printf(n%-.2f\t%-.2f%4f%-.2f%-.2f\n”,a,b,c,d,e);
print町总成绩:
%.2f\n”,s);
printf(”平均成绩:
%.2f\n”,avg);
模块3
一、选择题
1.以下不正确的if语句是C。
A)if(x>y&&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=l,y=2,z=3;以下语句执行后x、y、z的值是旦。
if(x>y)
z=x;x=y;y=z;
A)x=l,y=2,z=3
B)x=2,y=3,z=3
C)x=2,y=3,z=]
D)x=2,y=3,z=2
3.以下程序的运行结果是旦。
intm=5;
if(m++>5)printf(“%d\n”,m);
elseprintf("%d\n",m--);
A)4B)5C)6D)7
4.有一分段函数如下表:
X的范围
y和x的关系
x<0
y=x-l
x=0
y=x
x>0
x+1
下面程序段中能正确表示上面关系的是Do
A)y=x+1;B)y=x-l;C)if(x<=0)
D)y=x;
if(x>=0)if(x!
=0)if(x<0)
if(xv=0)
if(x==0)if(x>0)y=x-1;
if(x<0)
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)其之前最近的if
C)其之后最近的ifD)同一行上的if
二、填空题
1.输入三个整数,按从大到小的顺序进行输出。
intmain()
{intnl,n2,n3,temp;
scanf(“%d%d%d”,&nl,&n2,&n3);
if(n2{temp=n2;n2=n3;n3=temp;}
if(nl{temp=nl;nl=n3;n3=temp;}
if(nlvn2)〃希望nl存放的数比n2大
{temp=nl;nl=n2;n2=temp;}
printf("%d,%d,%d",numl,num2,num3);
}
2.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。
intmain()
{charch;
scanf("%c“,&ch);
if(ch>=Z&&chv=Z)ch=ch+32;
elseif(ch>='a'&&chv='z')ch=ch-32;
printf("%c",ch);
1.编写一个程序,要求用户从终端上键入两个整数数值。
检测这两个数,判定第一个数能否被第二个数整除,并在终端上显示相应的信息(要求绘制流程图)。
#include”stdio.h”
mainQ
{inta,b;
printff'pleaseinputtwonumbers:
\nH);
scanf("%d%d”,&a,&b);
if(a%b==O)
printf(n%d%可以被%d整除”,a,b);
else
printf(H%d不能被%(1整除”,a,b);
}
2.从键盘输入a、b、c三个整数,输出其中最大的数。
#includeHstdio.hn
mainQ
{
inta,b,c,t;
scanf(”%d%d%d”,&a,&b,&c);
if(a>b)
t=a;
else
t=b;
if(t>c);
else
t=c;
printf(”%d”,t);
i
3.商场进行打折促销活动,消费金额(P)越高,折扣(d)越大,标准如下:
消费金额
折扣
P<100
0%
100
5%
200
10%
500
15%
P>1000
20%
编写程序,从键盘输入消费金额,输出折扣率和实付金额(f),分别用if语句和switch语句来实现(要求绘制流程图)。
1.#includeHstdio.hn
main()
(
floatp,fd;
scanf("%f',&p);
if(p<100)
d=0.;
elseif(p<200)
d=0.05;
elseif(p<500)
d=0.1;
elseif(p<1000)
d=0.15;
else
d=0.2;
f=p*(l-d);
printf(”d=%d%%a%.2f\n”,(int)(d*100),f);
}
2.#include”stdio.h”
main()
(
floatp,f>d;
intc;
scanf("%f',&p);
c=p/100;
switch(c)
{case0:
d=0.;break;
casel:
d=0.05;break;
case2:
case3:
case4:
d=0.1;break;
case5:
case6
case7
case8
d=0.15;break;
case9
default:
d=0.2;
f=p*(l-d);
printf(nd=%d%%>%.2f\nH,(int)(d*100),f);
模块4
1.单选题
(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二T;
do
(X=x*x;}
while(!
x);
A)是死循环B)循环执行两次C)循环执行一次D)有语法错误
(4)下面程序的运行结果是(
ftinclude
intmain()(inty=10;
do{y—;}
while(一y);
return0:
(5)对for(表达式1;;表达式3)可理解为(B)
(6)若i、j均为整型变量,则以下循环for(i=0,j=T;j=l;i++,j++)
printf("%d,%d\n",i,j);
⑺以下的for循环(B)
for(x=0,y=0;(y!
=123)&&(x<4);x++);
(8)设j为int型变量,则下面for循环语句的执行结果是(
for(j=10;j〉3;j—)
—j;—J;
printfj);
2.根据要求完成程序填空
(1)下面的程序片段从键盘输入的字符中统计数字字符的个数,用换行符结束循环。
intn=0,c;
c=getchar();
while(C!
二'\n'&&c!
='\o')
{if(c=〉'O'&&c〈='