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语言 标识符 常量 类型