admin 管理员组文章数量: 1087139
2024年3月14日发(作者:chown语法)
C语言程序设计教程第五版王秀鸾课后习题解答
习题 1
1.1 思考题
1.答:结构化程序设计是指为使程序具有一个合理的结构以保证程序正确
性而规定的一套如何进行程序设计的原则。其基本结构有:顺序结构,选择结构,
循环结构。
2.输入三个值a、b、c,用它们作为三角形的3条边输出三角形的面积,画
出实现该算法的N-S图。
输入三角形3条边a、b、c
a+b>c&&a+c>b&&b+c>a
Y N
p=(a+b+c)/2;
area=sqrt(p
*
(p-a)
*
(p-b)
*
(p-c));
输出:三角形面积area 输出“不能构成三角
形”
3.标识符是一个由有限个有效字符组成的序列,在C语言中只起标识作用,可
用作符号常量名、变量名、函数名、数组名、文件名等。
C语言合法的标识符必须由字母(A~Z,a~z)或下画线(_)开头,后面可以
跟随任意的字母、数字或下画线。
C语言中的标识符由3种类型组成:关键字、预定义标识符和用户标识符。
4.C语言程序的基本单位是函数。
5.一个C语言函数通常由两部分组成:函数的首部和函数体。函数的首部包括
函数类型、函数名、一对圆括号、函数参数(形参)名和参数类型的说明。函数
体一般包括说明部分和执行部分。
6.可以用“/
*
……
*
/”在任何位置上对C语言程序的任何部分进行注释,一般在一
个程序或函数的开始或某些程序的难点之处加上必要的注释。在Visual C++ 6.0
环境下也可使用符号“//……”引出注释。
7.C语言程序的开发基本上可以分为4步:即编辑、编译、连接和运行。
编辑就是用C语言写出源程序,C源程序的后缀为“.c”;
C语言编译程序对源文件进行编译,即检查其词法、语法、语义方面是否存在错
误。编译后生成目标程序,此目标程序名与相应的源程序同名,但其后缀为.obj。
连接形成完整的可执行文件。一般可执行文件名与源程序文件名同名,后缀
为.exe。
执行程序:当程序编译连接后,生成可执行程序便可以运行了,以后用户只需输
入可执行目标文件名即可。
1.2 编程题
1.答:
#include "stdio.h"
int main()
{ double a=10, b=20, h=5, s;
s=(a+b)
*
h/2;
printf("s=%f " , s );
return 0;
}
2.答:
#include "stdio.h"
int main()
{ printf("
******************************
");
printf("
*
hello world
*
");
printf("
******************************
");
return 0;
}
习题 2
2.1 思考题
1.C语言提供了的数据类型如下:
基本数据类型的标识符和存储单元的长度,以VC6.0为例,
整型数据类型标识符包括:
① 基本整型(简称整型):类型标识符为int,存储单元的长度为4个字节。
② 短整型:类型标识符为short int或short,存储单元的长度为2个字节。
③ 长整型:类型标识符为1ong int或1ong,存储单元的长度为4个字节。
④ 无符号整型:类型标识符为unsigned int,存储单元的长度为4个字节。
⑤ 无符号短整型:类型标识符为unsigned short,存储单元的长度为2个
字节
⑥ 无符号长整型:类型标识符为unsigned 1ong,存储单元的长度为4个字
节。
实型数据有单精度型和双精度型两种。
① 单精度型:类型标识符为float,存储单元的长度为4个字节。
② 双精度型:类型标识符为double,存储单元的长度为8个字节。
字符型数据的类型标识符为char,在内存中存储一个字符型数据需要1个字
节
2.错误的C语言常量有:
1,900, 078,45.2e2.3,.123e-02,e5,
3.符号常量是用用户标识符表示的常量。通常习惯用大写字母表示符号常
量。符号常量在使用之前必须使用#define编译预处理命令在程序开头定义。符
号常量的定义形式为:
#define 符号常量名常量
举例:#define PI 3.1415926
4.试确定下列数据的数据类型,并写出一个实例常量。
(1)一个月的天数int month;实例常量为:month=30。
(2)学生成绩的平均值double aver ;实例常量为:aver=90.4。
(3)胶州湾海底隧道的长度double length ;实例常量为:length=7800。
(4)用M/F描述一个人的性别char sex;实例常量为:sex=’M’。
(5)你的姓名char name[10];实例常量为:”王浩”。
5.(1)sqrt(x*x+y*y) (2) pow((a+a*b)/(a-b),1.0/3)
(3)pow(a,4)-3*a*b/(3+a) (4)pow(x*x*x,1.0/3)+sqrt(x+y)
6.(1)0(2)10(3)21.3(4)6(5)55或’7’
7.(1)int age=18; (2) double r=2.57,area;(3) char xb=’M’
8.(1)1.5(2)6.0
2.2 编程题
1.答:
#include "stdio.h"
int main()
{
double a=56,b=32.3,c=78.2,x=22.1,y=98.5,aver;
aver=(a+b+c+x+y)/5;
printf("%.2fn",aver);
return 0;
}
2.答:
#include "stdio.h"
#include "math.h"
int main()
{
double x1,x2,y1,y2,length;
x1=3;
y1=8;
x2=7;
y2=10;
length=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
printf("%.2fn",length);
return 0;
}
3.答:
#include "stdio.h"
#define PI 3.1415926
int main()
{
double r1=25,r2=15,area;
area=PI*(r1*r1-r2*r2);
printf("%.2fn",area);
return 0;
}
习题 3
3.1 思考题
1.答:
(1)功能:把10赋给变量a
(2)功能:把a*(3+5)的值赋给变量a
(3)功能:把变量a和b的值互换
(4)功能:把变量b除以10所得的余数乘以10再加上变量b除以10取整的和
赋给变量a
(5)功能:把大写字母A变为小写赋给变量a
(6)功能:把字符6赋给变量a
2.答:
(1) scanf("%d",&num);
(2) scanf("%lf,%lf",&score,&sum);
(3) scanf("%d,%lf,%lf",&num,&score,&sum);
(4) scanf("%d",&num);
3.答:
(1) 10,20
(2) 10 20
(3) i=10,j=20
(4)10,A,20
4.
(1) scanf(“%lf%lf%lf”,&a,&b,&c);
(2) printf(“%.3fn”,(a+b+c)/3);
(3) printf(“%c,%dn”,ch,ch);
(4)printf(“ %.2fn”,a);
printf(“+ %.2fn”,b);
printf(“-----------n”,a);
printf(“ %.2fn”,a+b);
3.2 读程序写结果题
答:
1.3,E
2. 1,0.500000
3. 0
4. 2,1
5.x=4,y=6,z=3,m=463
3.3程序填空题
1.6.6
2.%d/%d %d/%d=%.2f
3.4编程题
1.答:
#include "stdio.h"
int main()
{
int x,y;
scanf("%d%d",&x,&y);
printf("ttxtyn");
printf("十进制数t%dt%dn",x,y);
printf("八进制数t%ot%on",x,y);
printf("十六进制数t%Xt%xn",x,y);
return 0;
}
2.答:
#include "stdio.h"
int main()
{
charch;
printf("请输入一个大写英文字母");
scanf("%c",&ch);
printf("大写英文字母是%cn",ch);
printf("它的前导字符是%cn",ch-1);
printf("它的后续字符是%cn",ch+1);
return 0;
}
3.答:
#include "stdio.h"
intmain()
{
int x,a,b,c,y;
printf("请输入一个三位整数:");
scanf("%d",&x);
a=x/100;
b=(x-a
*
100)/10;
c=x%10;
y=c
*
100+b
*
10+a;
printf("反向输出该整数:%dn",y);
return 0;
}
4.答:
#include "stdio.h"
int main()
{ int hour;
double salary, salaryday;
scanf("%d,%lf", &hour, &salaryday );
salary=hour
*
salaryday- hour
*
salaryday
*
0.1;
printf("%.2lfn", salary);
return 0;
}
5.答:
#include "stdio.h"
int main()
{
int a,b,c,t;
printf("请输入三个整数n");
scanf("%d%d%d",&a,&b,&c);
printf("交换前a=%d,b=%d,c=%dn",a,b,c);
t=a;a=c;c=b;b=t;
printf("交换后a=%d,b=%d,c=%dn",a,b,c);
return 0;
}
习题 4
4.1 思考题
1.答:C语言没有提供逻辑数据类型,在进行逻辑运算时,操作数为非0的数
值代表“真”,数值0代表“假”。用数值1表示逻辑值的“真”,数值0表示“假”。
2.答:(1)!(x*y)&&(x+y)(2)a>0||b>0 (3)x>0&&x<=10
(4)a==1.5&&b==1.5&&c==1.5
(5)p=’A’&&ch<=’Z’(7)ch>=’0’&&ch<=’9’
3.答:(1)0 (2)1 (3)1(4)0 (5)1
4.
(1)(2)(3)
5.
(1)
可以用if但分支形式实现,
if (x<0) y=x+1;
if (x>=0 && x<1) y=1;
if (x>=1) y=x*x*x;
或用if嵌套形式实现,如:
if (x<0) y=x+1;
else if (x<1)
y=1;
else
y=x*x*x;
(2)if(max
(3)if((a+b)>c &&(a+c)>b &&(b+c)>a)
{p=(a+b+c)/2 ;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf(“面积是:%fn” ,s);}
elseprintf(“不能构成三角形!”);
4.2 读程序写结果题
1.30
2. 5
3. a
4. -4
5. 5,4,3
6. 0,1,3
4.3 程序填空题
("%d%d%d",&a,&b,&c); c==a+b
2. else if else if else if else n
3. x%3==0&&x%5==0&&x%7==0
4. ( cvb=
college=='Y')&&age<=35
4.4 编程题
1.答
#include "stdio.h"
#include "math.h"
int main()
{
doublea,b,c,p,area;
scanf("%lf%lf%lf",&a,&b,&c);
printf("三角形的三边为:%.llf,%.1lf,%.1lfn",a,b,c);
if (a+b>c&&a+c>b&&b+c>a)
{p=(a+b+c)/2;
area=sqrt(p
*
(p-a)
*
(p-b)
*
(p-c));
printf("三角形的面积为%.2lfn",area);
}
else
printf("不能构成三角形n");
return 0;
}
2.答:
#include "stdio.h"
int main()
{ intx,y;
scanf("%d,%d",&x,&y);
if(x
*
x+y
*
y>1000)
printf("%dn",(x
*
x+y
*
y)/100);
else
printf("%dn",x+y);
='y'||cvb= ='Y')&&(work>=3||college=='y'||
return 0;
}
3.答:
#include "stdio.h"
#include "math.h"
int main()
{ doublex,y;
scanf("%lf",&x);
if(x<-2)
y=x
*
x-sin(x);
else if (x<=2)
y=pow(2,x)+x;
else
y=sqrt(x
*
x+x+1);
printf("x=%.2lf y=%.2lfn",x,y);
return 0;
}
4.答:
#include "stdio.h"
int main( )
{ intge,shi,qian,wan,x;
scanf("%d",&x);
wan=x/10000;
qian=x%10000/1000;
shi=x%100/10;
ge=x%10;
if (ge==wan&&shi==qian) /
*
个位等于万位并且十位等于千位
*
/
printf("this number is a huiwenn");
else
printf("this number is not a huiwenn");
return 0;
}
5.答:
#include "stdio.h"
int main()
{ doublep,w,s,d,f;
scanf("%lf,%lf,%lf",&p,&s,&w);
if (s>3000) d=0.15;
else if( s>=2000) d=0.1;
else if(s>=1000) d=0.08;
else if(s>=500) d=0.05;
else if(s>=250) d=0.02;
else d=0;
f=p
*
w
*
s
*
(1-d);
printf("%.2lf",f);
return 0;
}
6.答:
#include "stdio.h"
int main()
{ intyear,money;
char x;
printf("是否是本公司产品(y/n):");
scanf("%c",&x);
if(x=='y'||x=='Y')
{printf("产品使用的年限:");
scanf("%d",&year);
if(year<=1) money=0;
else if(year<8) money=50;
else money=100;
printf("产品保修额是:%dn",money);
}
else
{ money=200;
printf("不是本公司产品,产品保修额是:%dn",money);
}
return 0;
}
7.答:
#include "stdio.h"
int main()
{ int money,num1,num2;
printf("请输入取款额(≤2000):");
scanf("%d",&money);
if(money>2000) printf("请输入取款额数≤2000!n");
else
if(money%50==0)
{ num1=money/100;
num2=(money-num1
*
100)/50;
printf("需支付100元:%d张n",num1);
printf("需支付50元:%d张n",num2);
}
else
printf("输入钱数必须是50的倍数!n");
return 0;
}
习题 5
5.1 思考题
1.答:“当型”循环结构:先进行循环条件的判断,条件为真执行循环体。C
语言中用while语句实现;
“直到型”循环结构:先执行一次循环体,再进行循环条件的判断,C语言中用
do-while语句实现;
2.
答:(1)for(i=1,p=1;i<=5;i++) p
*
=i;
(2)i=1;p=1;while(i<=5){p
*
=i; i++;}
(3)i=1;p=1;do{p
*
=i; i++; }while(i<=5);
3.
(1)(2)(3)
4.
(1)for(i=1 ;i<100 ;i=i+1) s=s+i
或
i=1 ;
while (i<100)
{
s=s+i ;
i=i+1 ;
}
(2)i=1 ;
do{
s=s+2*i ;
i=i+1 ;
}while (i<100) ;
(3)for(i=1 ;i<=10 ;i++)
scanf(“%d”, &x) ;
(4)for(i=2 ;i if(n%i==0) break ; if (i==n) printf(“n是素数n”) ; else printf(“n不是素数n”) ;
版权声明:本文标题:C语言程序设计教程第五版王秀鸾课后习题解答 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1710390510a570943.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论