#C语言第二谭浩强习题解答.docx

上传人:b****5 文档编号:5100926 上传时间:2022-12-13 格式:DOCX 页数:30 大小:24.19KB
下载 相关 举报
#C语言第二谭浩强习题解答.docx_第1页
第1页 / 共30页
#C语言第二谭浩强习题解答.docx_第2页
第2页 / 共30页
#C语言第二谭浩强习题解答.docx_第3页
第3页 / 共30页
#C语言第二谭浩强习题解答.docx_第4页
第4页 / 共30页
#C语言第二谭浩强习题解答.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

#C语言第二谭浩强习题解答.docx

《#C语言第二谭浩强习题解答.docx》由会员分享,可在线阅读,更多相关《#C语言第二谭浩强习题解答.docx(30页珍藏版)》请在冰豆网上搜索。

#C语言第二谭浩强习题解答.docx

#C语言第二谭浩强习题解答

《C程序设计》习题解答第一章

1.5

main(>

{printf(" ******************************\n">。

printf("\n">。

printf("  Very Good!

\n">。

printf("\n">。

printf((" ******************************\n">。

}

1.6

main(>

{inta,b,c,max。

printf("inputa,b,c:

\n">。

scanf("%d,%d,%d",&a,&b,&c>。

max=a。

if(maxmax=b。

if(maxmax=c。

printf("max=%d",max>。

}

第二章习题解略第三章

第三章要点:

1、C语言的数据类型 P38图

2、常量、变量的约定及各类数据常量、变量使用的约定。

3、运算符及表达式的约定和应用。

难点:

自加、自减的用法及其运算后的值。

逗号运算符及逗号表达式的用法

3.3

(1>、<10)10=(12>8=(a>16

(2>、<32)10=(40>8=(20>16

(3>、<75)10=<113)8=(4b>16

(4>、<-617)10=<176627)8=(fd97>16

(5>、<-111)10=(177621>8=(ff91>16

(6>、<2483)10=<4663)8=(9B3>16

(7>、(-28654>10=(110022>8=(9012>16

(8>、(21003>10=(51013>8=(520B>16

3.4略

3.5字符常量是一个字符,用单引号括起来。

字符串常量是由0个或若干个字符组合而成,用双引号把它们括起来,存储时自动在字符串最后加一个结束符号‘0’。

3.6运行结果为:

aabb  cc  abc

    AN

3.7

main(>

{charc1=’C’,c2=’h’,c3=’i’,c4=’n’,c5=’a’。

c1+=4。

c2+=4。

c3+=4。

c4+=4。

c5+=4。

printf(“密码是%c%c%c%c%c\n”,c1,c2,c3,c4,c5>。

}

3.8可以。

因为在可输出的字符范围内,用整型和用字符型作用相同。

3.9<1)2.5<2)3.5

3.10结果为:

9,11,9,10

3.12

<1)24  <2)10   <3)60  

<4)0   <5)0    <6)0

第三章

第四章要点:

1、C语句分类

2、赋值语句的用法

3、数据输入输出的语句的用法。

特别注意格式输入、输出语句的用法,要看到语句能写出输入、输出结果,给出输入、输出结果能写出语句。

4、顺序程序的概念、结构。

4.3不把输入输出作为C语言提供的语句的目的是使C语言编译系统简单,因为将语句翻译成二进制的指令是在编译阶段完成的,没有输入输出语句就是可以避免在编译阶段处理与硬件有关的问题,可以使编译系统简化,而且通用性强,可移植性好,对各种型号的计算机都适用,便于在各种计算机上实现。

4.4

main(>

{inta,b,c。

longintu,n。

floatx,y,z。

charc1,c2。

a=3。

b=4。

c=5。

x=1.2。

y=2.4。

z=-3.6。

u=51274。

n=128765。

c1=’a’。

c2=’b’。

printf(“\n”>。

printf(“a=%2db=%2dc=%2d\n”,a,b,c>。

printf(“x=%8.6f,y=%8.6f,z=%9.6f\n”,x,y,z>。

printf(“x+y=%5.2fy+z=%5.2fz+x=%5.2f\n”,x+y,y+z,,z+x>。

printf(“u=%6ldn=%9ld\n”,u,n>。

printf(“c1=’%c’or%d(ASCII>\n”,c1,c1>。

printf(“c2=’%c’or%d(ASCII>\n”,c2,c2>。

}

4.5

57

□□5□□7

67.856400,-789.124000

67.856400□,-789.124000

□□□67.86,□-789.12,67.8564,-789.1240,67.856400,-789.124000

6.785640e+01,□-7.89e+02

A,65,101,41

1234567,4553207,d687

65535,177777,ffff,-1

COMPUTER,□□COM

4.8

main(>

{floatpi,h,r,l,s,sq,vq,vz。

pi=3.14

printf(inputr,h\n”>。

scanf(“%f,%f”,&r,&h>。

l=2*pi*r。

s=r*r*pi。

sq=4*pi*r*r。

vq=3.0/4.0*pi*r*r*r。

 z=pi*r*r*h。

printf(“l=%6.2f\n”,l>。

printf(“s=%6.2f\n”,s>。

printf(“sq=%6.2f\n”,sq>。

printf(“sv=%6.2f\n”,sv>。

printf(“sz=%6.2f\n”,sz>。

}

4.9

main(>

{floatc,f。

printf(“请输入一个华氏温度:

\n”>。

scanf(“%f”,&f>。

c=(5.0/9.0>*(f-32>。

printf(“摄氏温度为:

%5.2\n”,c>。

}

4.10

#include“stdio.h”

main(>

{charc1,c2。

printf(“inputc1,c2\n”>。

scanf(%c,%c”,&c1,&c2>。

putchar(c1>。

putchar(c2>。

printf(“\n”>。

printf(“%c%c\n”,c1,c2>。

}

第5章

第五章要点:

1、关系运算符和关系运算式;

2、逻辑运算符和逻辑运算式;

3、IF语句的三种形式;

4、条件运算符;

5、switch语句的用法;

5.3

<1)0 <2)1 <3)1  <4)0 <5)1

5.4

main(>

{inta,b,c,t,max。

printf(“inputa,b,c:

”>。

scanf(“%d,%d,%d”,&a,&b,&c>。

t=(a>b>?

a:

b。

max=(t>c>?

t:

c。

printf(“max=%d”,max>。

}

5.5

main(>

{floatx,y。

printf(“inputx:

”>。

scanf(“%f”,&x>。

if(x<1>

y=x。

elseif(x<10>

y=2*x-1。

else

y=3*x-11。

printf(“x=%f,y=%f\n”,x,y>。

}

}

5.6

main(>

{intscore,t,logic。

chargrade。

logie=1。

while(logic>

{printf(“inputscore:

”>。

scanf(“%d”,&score>。

if((score>100||score<0>>printf(“\error”>。

elselogic=0。

printf(“\n”>。

}

if(score==100>t=9。

elset=(int>(score/10>。

switch(t>

{case9:

grade=’A’。

break。

case8:

grade=’B’。

break。

case7:

grade=’C’。

break。

case6:

grade=’D’。

break。

case5:

case4:

case3:

case2:

case1:

case0:

grade=’E’。

}

}

}

5.8

<1)用if语句

main(>

{longi。

floatbonus,bon1,bon2,bon4,bon6,bon10。

bon1=100000*0.1。

/*利润为10万元时的奖金*/

bon2=bon1+100000*0.075。

/*利润为20万元时的奖金*/

bon4=bon2+200000*0.05。

/*利润为40万元时的奖金*/

bon6=bon4+200000*0.03。

/*利润为60万元时的奖金*/

bon10=bon6+40000*0.015。

/*利润为100万元时的奖金*/

scanf(%ld”,&i>。

if(i<1e5>bonus=i*0.1。

elseif(i<=2e5> bonus=bon1+(i-100000>*0.075。

elseif(I<=4e5> bonus=bon2+(i-200000>*0.05。

elseif(I<=6e5> bonus=bon4+(i-400000>*0.03。

elseif(I<=1e6> bonus=bon6+(i-600000>*0.015。

else  bonus=bon10+(i-100000>*0.01。

printf(“bonus=%10.2f”,bonus>。

}

(2>用switch编写

main(>

{longi。

floatt,bonus,bon1,bon2,bon4,bon6,bon10。

intc。

bon1=100000*0.1。

bon2=bon1+100000*0.075。

bon4=bon2+200000*0.05。

bon6=bon4+200000*0.03。

bon10=bon6+40000*0.015。

scanf(%ld”,&i>。

c=i/100000。

if(c>10>c=10。

switch(c>

{case0:

bonus=i*0.1。

break。

case1:

bonus=bon1+(i-100000>*0.075。

break。

case2:

case3:

bonus=bon2+(i-200000>*0.05。

break。

case4:

case5:

bonus=bon4+(i-400000>*0.03。

break。

case6:

case7:

case8:

case9:

bonus=bon6+(i-600000>*0.015。

break。

case10:

bonus=bon10+(i-1000000>*0.01。

}

printf(“bonus=%10.2f”,bonus>。

}

5.9

main(>

{intt,a,b,c,d。

scanf(“%d,%d,%d,%d”,&a,&b,&c,&d>。

printf(“\na=%d,b=%d,c=%d,d=%d\n”,a,b,c,d>。

if(a>b>{t=a。

a=b。

b=t。

}

if(a>c>{t=a。

a=c。

c=t。

}

if(a>d>{t=a。

a=d。

d=t。

}

if(b>c>{t=b。

b=c。

c=t。

}

if(b>d>{t=b。

b=d。

d=t。

}

if(c>d>{t=c。

c=d。

d=t。

}

printf(“%d%d%d%d\n”,a,b,c,d>。

}

5.10

main(>

{inth=10。

floatx,y,x0=2,y0=2,d1,d2,d3,d4。

printf(“inputx,y:

”>。

scanf(“%f,%f”,&x,&y>。

d1=(x-x0>*(x-x0>+(y-y0>*(y-y0>。

d2=(x-x0>*(x-x0>+(y+y0>*(y+y0>。

d3=(x+x0>*(x+x0>+(y-y0>*(y-y0>。

d4=(x+x0>*(x+x0>+(y+y0>*(y+y0>。

if(d1>1&&d2>1&&d3>1&&d4>1>h=0。

printf(“h=%d”,h>

}

第6章

第6章要点:

1、实现循环的语句。

2、几种循环的比较

3、读程序写结果。

常见问题的程序设计。

6.1

#include

main(>

{inta,b,n1,n2,t。

printf(“inputa,b\n”>。

scanf(“%d,%d”,&n1,&n2>。

if(n1>n2>{t=n1。

n1=n2。

n2=t。

}

a=n1。

b=n2。

while(b!

=0>

{t=a%b。

a=b。

b=t。

}

printf(“最大公约数为:

%d\n”,a>。

printf(“最小公倍数为:

%d\n,n1*n2/a>。

}

6.2

#include

#include

main(>

{charc。

intletters=0,space=0,digit=0,other=0。

printf(“输入一行字符:

\n”>。

while((c=getchar(>>!

=’\n’>。

{

if(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’>letters++。

elseif(c==’’>space++。

elseif(c>=’0’&&c<=’9’>digit++。

elseother++。

}

printf(“l%d,%d,%d,%d\n”,letters,space,digit,other>。

}

6.3

#include

main(>

{inta,n,count=1,sn=0,tn=0。

scanf(“%d,%d,”,&a,&n>。

printf(“a=%dn=%d\n”,a,n>。

while(count<=n>

{tn=tn+a。

sn=sn+tn。

a=a*10。

++count。

}

printf(“a+aa+aaa+…=%d\n”,sn>。

}

6.4

#include

main(>

{floatn,s=0,t=1。

for(n=1。

n<=20。

n++>

{t=t*n。

s=s+t。

}

printf(“1!

+2!

+3!

+…+20!

=%e\n”,s>。

}

6.5

#include

main(>

{intn1=100,n2=50,n3=10。

floatk。

floats1=0,s2=0,s3=0。

for(k=1。

k<=n1。

k++>s1=s1+k。

for(k=1。

k<=n2。

k++>s2=s2+k*k。

for(k=1。

k<=n3。

k++>s3=s3+1/k。

printf(“sum=%8.2\n”,s1+s2+s3>。

}

6.6

#include

main(>

{inti,j,n。

printf(“水仙花数是:

”>。

for(n=100。

n<1000。

n++>

{i=n/100。

j=n/10-i*10。

k=n%10。

If(i*100+j*10+k==i*i*i+j*j*j+k*k*k>printf(“%d”,n>。

}

printf(“\n”>。

}

6.7

#include

main(>

{staticintk[10]。

inti,j,n,s。

for(j=2。

j<=1000。

j++>

{n=0。

s=j。

for(i=1。

i

i++>

if((j%i>==0>

{n++。

s=s-i。

k[n]=i。

}

if(s==0>

{printf(“%5d是个完数,它的因子是:

”,j>。

for(i=1。

i<=n。

i++>printf(“%d”,k[i]>。

printf("\n">。

}

}

}

6.8

#include

main(>

{floata=2,b=1,s=0。

intn,t,number=20。

for(n=1。

n<=number。

n++>

{s=s+a/b。

t=a。

a=a+b。

b=t。

}

printf(“sum=%9.6f\n”,s>。

}

6.9

#include

main(>

{intn。

floatsn=100,hn=sn/2。

for(n=2。

n<=10,n++>

{sn=sn+2*hn。

hn=hn/2。

}

printf(“第10次落地时共经过:

%fM\n”,sn>。

printf(“第10次反弹%fM\n”,hn>。

}

6.10

#include

main(>

{intday,x1,x2。

day=10。

x2=1。

while(day>0>

{

x1=(x2+1>*2。

/*前1天的桃子数是当天桃子数加1后的2倍*/

x2=x1。

day--。

}

printf(“桃子总数=%d\n”,x1>。

}

6.11

#include

#include

main(>

{floata,x0,x1。

printf(“inputn\n”>。

scanf(“%f”,&a>。

x0=a/2。

x1=(x0+a/x0>/2。

do{

x0=x1。

x1=(x0+a/x0>/2。

}while(fabs(x0-x1>>=1e-5>。

printf(“%5.2f的平方根=%8.5f\n”,a,x1>。

}

6.12

牛顿迭代法又称牛顿切线法。

它采用以下的方法求根:

先任意设定一个与其真实的根接近的值x0作为第一次近似根,由x0求出f(x0>,过(x0,f(x0>>点做f(x>的切线,交x轴于x1,把它作为第二次近似根;再由x1求出f(x1>,过(x1,f(x1>>点做f(x>的切线,交x轴于x2,求出f(x2>;再作切线……如此继续下去,直到足够接近真正的根x*为止。

f’(x0>=f(x0>/(x1-x0>

x1=x0-f(x0>/f’(x0>

这就是牛顿迭代公式。

#include

main(>

{floatx,x0,f,f1。

x=1.5。

do{

x0=x。

f=((2*x0-4>*x0+3>*x0-6。

f1=(6*x0-8>*x0+3。

x=x0-f/f1。

}while(fabs(x-x0>>=1e-5>。

printf(方程的根=%6.2f\n”,x>。

}

6.13

二分法的思路如下:

先指定一个区间[x1,x2],如果函数f(x>在此区间是单调变化的,则可以根据f(x1>和f(x2>是否同号来确定方程f(x>=0在区间[x1,x2]内是否有一个实根。

若f(x1>和f(x2>不同号,则f(x>=0在[x1,x2]内必有一个<且只有一个)实根;如果f(x1>和f(x2>同号,则则f(x>=0在[x1,x2]内无实根,要重新改变x1和x2的值。

当确定f(x>在[x1,x2]内有一个实根后,可采取二分法将[x1,x2]一分为二,再判断在哪一个小区间有实根。

如此不断进行下去,直到小区间足够小为止。

#include

#include

main(>

{floatx0,x1,x2,fx0,fx1,fx2。

do{

scanf(“%f,%f”,&x1,&x2>。

fx1=x1*((2*x1-4>*x1+3>-6。

fx2=x2*((2*x2-4>*x2+3>-6

}while(fx1*fx2>0>。

do{

x0=(x1+x2>/2。

fx0=x0*((2*x0-4>*x0+3>-6。

if(fx0*fx1<0>{

x2=x0。

fx2=fx0。

}

else{

x1=x0。

fx1=fx0。

}

}while(fabs(fx0>>=1e-5>。

printf(“x=%6.2f\n”,x0>。

}

6.14

main(>

{inti,j,k。

for(i=1。

i<=4。

i++>

{for(j=1。

j<=4-i。

j++>printf(“”>。

 for(k=1。

k<=2*i-1。

k++>printf(“*”>。

printf(“\n”>。

}

for(i=1。

i<=3。

i++>

{for(j=1。

j<=i。

j++>printf(“”>。

 for(k=1。

k<=7-2*i。

k++>printf(“*”>。

printf(“\n”>。

}

}

6.15

开始设计程序时,并不知道A、B、C与X、Y、Z中的哪一个进行比赛,可以假设:

A与i比赛,B与j比赛,C与k比赛。

说明:

整个执行部分只有一个语句,所以只在语句的最后有一个分号。

#include

main(>

{chari,j,k。

for(i=’X’。

i<=’Z’。

i++>

for(j=’X’。

j<=’Z’。

j++>

if(i!

=j>

 for(k=’X’。

k<=’Z’。

k++>

 if(i!

=k&&j!

=k>

if(i!

=’X’&&k!

=’X’&&k!

=’Z’>

 printf(“A--%c\tB--%c\tC--%c\n”,i,j,k>。

}

第九章指针

9.1

main(>

{intn1,n2,n3。

int*p1,*p2,*p3。

scanf("%d,%d,%d",&n1,&n2,&n3>。

p1=&n1。

p2=&n2。

p3=&n3。

if(n1>n2>swap(p1,p2>。

if(n1>n3>swap(p1,p3>。

if(n2>n3>swap(p2,p3>。

printf("%d,%d,%d\n",n1,n2,n3>。

}

swap(p1,p2>

int*p1,*p2。

{intp。

p=*p1。

*p1=*p2。

*p2=p。

}

9.2

main(>

{char*str1[20],*str2[20],*str3[20]。

charswap(>。

scanf("%s",str1>。

scanf("%s",str2>。

scanf("%s",str3>。

if(strcmp(str1,str2>>0>swap(str1,str2>。

if(strcmp(str1,str3>>0>swap(str1,str3>。

if(strcmp(str2,str3>>0>swap(str2,str3>。

printf("%s\n%s\n%s\n",str1,str2,str3>。

}

charswap(p1,p2>

char*p1,*p2。

{char*p[20]。

strcpy(p,p1>。

strcpy(p1,p2>。

strcpy(p2,p>。

}

9.3

main(>

{intnumber[10]。

input(number>。

max_min_value(number>。

output(number>。

}

input(number>

i

展开阅读全文
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1