C语言程序设计教程杨路明课后习题答案.docx
《C语言程序设计教程杨路明课后习题答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教程杨路明课后习题答案.docx(14页珍藏版)》请在冰豆网上搜索。
C语言程序设计教程杨路明课后习题答案
C语言程序设计教程杨路明课后习题答案北京邮电大学出版
社
第一章
1、算法描述主要是用两种基本方法:
第一是自然语言描述,第二是使用专用工具进行算法描述
2、c语言程序的结构如下:
1c语言程序由函数组成,每个程序必须具有一个main函数作为程序的主控函数。
2"/*"与"*/"之间的内容构成c语言程序的注释部分。
3用预处理命令#include可以包含有关文件的信息。
4大小写字母在c语言中是有区别的。
5除main函数和标准库函数以外,用户可以自己编写函数,程序一般由多个函数组成,这些函数
制定实际所需要做的工作。
例如:
voidmain()
inta,b,c,s;
a=8;b=12;c=6;
s=ab*c;
printf("s=%d",s);
3、c语言的特点:
1c语言具有结构语言的特点,程序之间很容易实现段的共享;
2c语言的主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译成代码,以实现程序的模块化。
3c语言运算符丰富,运算包含的范围很广;
4c语言数据类型丰富。
5c语言允许直接访问物理地址,即可直接对硬件进行操作,实现汇编语言的大部分功能;
6c语言语法限制不太严格,程序设计自由度大,这样是c语言能够减少对程序员的束缚;
7用c语言编程,生成的目标代码质量高,程序执行效率高,可移植性好;
4、合法标识符:
AB12、leed_3、EF3_3、_762、PAS、XYZ43K2
不合法标识符:
a*b2、8stu、D.K.Jon、if、ave#xy、#_DT5、C.D
5、F2:
将当前编辑器中文件存盘
F10:
调用主菜单
F4:
程序运行到光标所在行
CtrlF9:
当前编辑环境下,进行编译、连接且运行程序;
AltF5:
将窗口切换到DOST,查看程序运行结果
6、
(1):
********************
welcomeyou
verygood
********************
(2):
pleaseinputthreenumber;5,7,8
maxnumberis:
8
7、main
8、Userscreen、AltF5
9、标识符必须是字母或下划线开头,大小写字母含义不同。
由数字、字母和下划线组成;关键字是一种语言中规定具有特定含义的标识符。
关键字不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。
10、选择主菜单File项下拉子菜单中Save项或直接按F2键存盘。
第二章
1、符合C语法规定的常数为:
0x1e、"ab"、1.e5
2、
(1):
错误如下:
intx,y=5,z=5,aver;
x=7;
aver=(xyx)/3;
结果如下:
AVER=5
(2):
错误如下:
charc1='a',c2='b',c3='c';
printf("a=?
=__end",a,b);
结果如下:
a=3b='A'"end"
aabccabc
3、
4、
(1):
9,11,9,10
(2):
3,1,0,0
(3):
11,19,31,1
5、
(1):
0
(2):
0
(3):
9.500000
(4):
90
(5):
10
(6):
10
(7):
65
(8):
4
(9):
4.500000
(10):
1
(11):
0
(12):
20
(13):
0
6、(5)
7、求x的绝对值
8、c>(max=a>b?
a:
b)?
c:
max;
9、B
10、D
第三章
1、输入函数scanf的参数错误,应该为:
scanf("%f",&k);2、|12341234|
3、ff10
4、1,3,1
5、原字符串左边加空格再加字符串本省,字符个数总和为5个
6、scanf("%d,%d,%c,%c",&a1,&a2,&c1,&c2);
7、printf("ab=%d",ab);printf("a-b=%d",a-b);printf("a*b=%d",a*b);printf("a/b=%d",a/b);
printf("(float)a/b=%f",(float)a/b);printf("a%b=%d",a%b);
8、voidmain()
floatr;
floats,c;
printf("pleaseinputthenumber:
");scanf("%f",&r);
if(r>=0)
s=3.14*r*r;
c=2*3.14*r;
printf("s=%f,c=%f",s,c);
else
printf("youinputnumberiserror!
");
9、voidmain()
intn;
printf("pleaseinputthenumber:
");scanf("%d",&n);
if(n>=100&&nprintf("%d%d%d",n_,(n/10)_,n/100);
else
printf("youinputnumberiserror!
");
10、voidmain()
inti,j,k;
scanf("%d,%d,%d",&i,&j,&k);
((i%2!
=0?
1:
0)(j%2!
=0?
1:
0)(k%2!
=0?
1:
0))==2?
printf("YES"):
printf("NO");
11、voidmain()
chara;
scanf("%c",&a);
printf("%c,%c,%c",a-1,a,a1);printf("%d,%d,%d",a-1,a,a1);
12、voidmain()
floata,b,c,s,Area;scanf("%f,%f,%f",&a,&b,&c);if(ab>c||ac>b||bc>a)s=(abc)/2;
Area=sqrt(s*(s-a)*(s-b)*(s-c));printf("%f",Area);
else
第四章
printf("youinputthenumberiserror!
");
1:
0
2:
203:
(x20)||(x
4:
***a=25,b=14,c=16***
5:
37
6:
if(a
elseprintf("2");
7、#includevoidmain()chara,b,t1,t2;scanf("%c,%c",&a,&b);
t1=a>b?
a:
b;t2=aif((t1-t2)%2==0)printf("%c,%c",a1,b1);elseprintf("%c,%c",a-1,b-1);getch();
8、#includevoidmain()inttemp1=0,temp2=0,x,y,i=1;printf("Pleaseinput(x,y):
");scanf("%d,%d",&x,&y);
while((i*y)if(x==(i*y))temp1=1;break;
temp2=i;
i;
if(temp1)
printf("%d/%d=%d",x,y,i);
else
printf("%d/%d--->shang=%d,yushu=%d",x,y,temp2,x-y*temp2);getch();
9、
#include
voidmain()
floatx,y,m=0,n=0;scanf("%f,%f",&x,&y);n=(x-2)*(x-2);
m=(y-2)*(y-2);
if((mn)printf("(%.3f,%.3f)Intheyuan",x,y);
else
printf("(%.3f,%.3f)outoftheyuan",x,y);getch();
10、
#include
voidmain()
inttemp=0,month,year;
printf("Pleaseinput(year,month):
");scanf("%d,%d",&year,&month);
if((year@0==0)||(year%4==0&&year_0!
=0))
temp=1;
if(month==2)
if(temp)printf("%dyear%dmonthhave29",year,month);elseprintf("%dyear%dmonthhave28",year,month);
elseif(month%2==0)
printf("%dyear%dmonthhave30",year,month);elseprintf("%dyear%dmonthhave31",year,month);
getch();
11、switch(a/10)case5:
m=4;break;case4:
m=3;break;case3:
m=2;break;case2:
m=1;break;default:
m=5;
12、方法一:
#includevoidmain()intx,y;scanf("%d",&x);if(x-5)y=x-1;
elseif(x==0)
y=x;
elseif(x>0&&xy=x1;printf("%d",y);getch();
方法二:
#includevoidmain()intx,y;
scanf("%d",&x);if(x-5)
if(x==0)y=x;
elseif(x>0&&xelsey=x-1;printf("%d",y);
elseprintf("Inputerror!
!
!
");getch();
方法三:
#includevoidmain()
intx,y,i;scanf("%d",&x);if(x-5)
if(x==0)i=1;
elseif(x>0&&x
elsei=3;
elsei=4;
switch(i)
case1:
y=x;printf("%d",y);break;case2:
y=x1;printf("%d",y);break;case3:
y=x-1;printf("%d",y);break;case4:
printf("Inputerror!
!
");break;getch();
第五章
1、voidmain()
intn,value;
inti,count=0;
floataverage=0;
longintsum=0;scanf("%d",&n);
for(i=0;i
scanf("%d",&value);
if(value%2==0)sum=value;
count;
average=sum/(float)count;printf("theaverageis%f",average);
2、#include"stdio.h"
voidmain()
charch;
intzm=0,sz=0;
ch=getchar();
while(ch!
='*')
if((ch>='A'&&ch='a'&&chzm;
if(ch>='0'&&ch
sz;
ch=getchar();
printf("zm=%d;sz=%d",zm,sz);
3、
voidmain()
longi_value;
intsum=0;
inttemp=0;
scanf("%ld",&i_value);
if(i_value
for(;;)
temp=i_value_;
i_value=i_value/10;
sum=temp;
printf("%d",temp);
if(i_value==0)break;
printf("=%d",sum);
4、
#include"stdio.h"
voidmain()
charch;
ch=getchar();
while(ch!
='.')if((ch>='A'&&chch=ch32;putchar(ch);
elseif((ch>='a'&&chch=ch-32;
putchar(ch);elseputchar(ch);ch=getchar();
printf("");
5、voidmain()floatsum=200;intcount=0;
for(;;)
sum=sumsum*0.045;
count;
if(sum>500)break;
printf("the%dyearslatercomplete!
",count);6、
voidmain()
inti,temp=0,bit=0;for(i=1;iif(i%3==0)temp=i;
for(;temp!
=0;)bit=temp_;
if(bit==5)printf("%d,",i);break;temp=temp/10;
printf("");
#include
intmain(void)
intsteps=29,i=1;while(steps%7)steps=(30*i)-1;printf("Totalsteps:
%d",steps);return0;
8、main()inti,j,k,n;
printf("thenarcissusnumberis:
");for(n=100;n
i=n/100;j=n/10-i*10;
k=n_;
if(i*i*ij*j*jk*k*k==n)printf("%d",n);
9、main()floati,j,temp,n,sum;intt;
i=2;j=1;sum=0;scanf("%d",&t);
for(n=1;nsum=sumi/j;
temp=i;i=ij;j=temp;
printf("2/13/25/38/513/8...=%f",sum);
10、
voidmain()intnWidth,a,b;scanf("%d",&nWidth);for(a=(nWidth%2);afor(b=0;b
charchOut='';
intnleft=(nWidth-a)/2;
intnright=(nWidtha)/2;if(b>=nleft&&bchOut='*';
printf("%c",chOut);printf("");r
11、
voidmain()
inti=1,j=1;
for(i=1;ifor(j=1;jprintf("%d*%d=%d",i,j,i*j);
printf("")
12、
#include"stdio.h"voidmain()charc;
//count1是正数的个数//count2是负数的个数intcount1=0,count2=0;
//sum1是正数之和
//sum2是负数之和
intsum1=0,sum2=0;
intflage=0;c=getchar();while(c!
='*')if(c=='-')flage=1;if(flage==0)sum1=(c-48);count1;
else
if(c!
='-')sum2-=(c-48);flage=0;count2c=getchar();printf("%d,%d",count1,count2);printf("%f,%f",sum1/count1,sum2/count2);
13、voidmain()inti,j;
ints=0;for(i=100;is=0;
for(j=1;j
if(i%j==0)s=sj;
if(s==i)printf("]",i);
14、
#include
#includevoidmain()intn;
longk=1;
floate=1;
n=1;
clrscr();
while(fabs(1.0/k)>=0.000001)n;
e=e1.0/k;k=k*n;printf("%f",e);
15、
#include"math.h"main()
floatx0,x1,x2,f0,f1,f2;
x1=-10;f1=2*x1*x1*x1-4*x1*x13*x1;
x2=10;f2=2*x2*x2*x2-4*x2*x23*x2;dox0=(x1x2)/2;
f0=2*x0*x0*x0-4*x0*x03*x0;if((f0*f1)x2=x0;f2=f0;
elsex1=x0;f1=f0;while(fabs(f0)>1e-6);printf("2*x*x*x-4*x*x3*x=0:
n");
printf("therootis%f",x0);
第六章
1、#includeintdivisor(inta,intb)intr;
while((r=a%b)!
=0)
a=b;
b=r;returnb;intmultiple(inta,intb)
intd;d=divisor(a,b);returna*b/d;voidmain()
inta,b,c,d;printf("intput(a,b):
");scanf("%d,%d",&a,&b);c=divisor(a,b);d=multiple(a,b);printf("=%d=%d",c,d);
2、#includevoidtongji(chara[])intb[3]=0,0,0,i=0;
while(a[i]!
='')
if((a[i]=65)||(a[i]=97))
b[0];
elseif(a[i]=48)
b[1];elseb[2];i;printf("zimuhave:
%d;shuzihave:
%d;qitahave:
%d",b[0],b[1],b[2]);getch();
voidmain()
chara[100];printf("Pleaseinputastring:
");gets(a);
tongji(a);
3、#includeintflower(intn)
intx=0,i,j,k;i=(n_);j=(n/10_);k=(n/100);x=i*i*ij*j*jk*k*k;if(x==n)return1;elsereturn0;voidmain()
inti,n;printf("Pleaseintputn:
");
scanf("%d",&n);
if(n>999||nelse
for(i=100;iif(flower(i))printf("%d",i);getch();
4、
#include
#defineSWAP(a,b)t=b;b=a;a=t;main()
floatx,y,t;printf("Entertwonumber(x,y):
");scanf("%f,%f",&x,&y);SWAP(x,y);printf(":
x=%f,y=%f",x,y);getch();
5、
#include
intfib(intn)
intp;
if(n==0)p=0;
elseif(n==1)p=1;
elsep=fib(n-1)fib(n-2);