C语言习题答案人民邮电第2版Word格式文档下载.docx

上传人:b****7 文档编号:22240075 上传时间:2023-02-03 格式:DOCX 页数:53 大小:31.62KB
下载 相关 举报
C语言习题答案人民邮电第2版Word格式文档下载.docx_第1页
第1页 / 共53页
C语言习题答案人民邮电第2版Word格式文档下载.docx_第2页
第2页 / 共53页
C语言习题答案人民邮电第2版Word格式文档下载.docx_第3页
第3页 / 共53页
C语言习题答案人民邮电第2版Word格式文档下载.docx_第4页
第4页 / 共53页
C语言习题答案人民邮电第2版Word格式文档下载.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

C语言习题答案人民邮电第2版Word格式文档下载.docx

《C语言习题答案人民邮电第2版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言习题答案人民邮电第2版Word格式文档下载.docx(53页珍藏版)》请在冰豆网上搜索。

C语言习题答案人民邮电第2版Word格式文档下载.docx

a=513.789185,a=ㄩㄩ513.79,a=513.78918457,a=513.78918457

(2)a=3ㄩb=7x=8.5ㄩy=71.82c1=Aㄩc2=a

3.编程题

(1)

intx,y;

%d%d"

x,&

y);

商数=%d,余数=%d"

x/y,x%y);

doublex,y,z,avg;

%lf%lf%lf"

y,&

z);

avg=(x+y+z)/3;

%.1f"

avg);

第4章

(1)~(10)CCAADCCABD

(1)①a>

0&

&

b>

0||a>

c>

0||b>

②a<

b||a<

c

③a>

5||-a>

5

④(a<

=0)&

((int)a)!

=a

⑤(a%b)!

=0

(2)①!

(x>

0)②1③!

=0&

x<

=5)

(3)3、2、2

(4)ch>

='

A'

ch<

Z'

ch=ch-32

(5)x<

=10&

x>

2x<

=2&

-1y=-1;

(6)a+b>

c&

a+c>

b&

b+c>

aa==b&

a==ca==b||a==c||b==c

(7)x<

0c=x/10y!

=-2

intx;

pleaseinputanumber:

%d"

x);

if(x%2==0)printf("

xisaevennumber"

elseprintf("

xisaoddnumber"

if(x>

-5&

x<

0){y=x;

printf("

y);

}

elseif(x==0){y=x-1;

}

elseif(x>

0&

10){y=x+1;

thenumberiserror"

(3)

{inta,m;

a);

switch(a/10)

{case0:

case1:

case2:

m=1;

break;

case3:

m=2;

case4:

m=3;

case5:

m=4;

default:

m=5;

m);

(4)

floatprice,tax;

pleaseinputthepriceofproduct:

price);

if(price>

=10000)tax=price*0.05;

elseif(price>

=5000)tax=price*0.03;

=1000)tax=price*0.02;

elsetax=0;

tax);

(5)

floatscore;

pleaseinputthescoreofstudent:

score);

if(score>

=85)printf("

VERYGOOD"

elseif(score>

=60)printf("

GOOD"

BAD"

(6)

#include<

main()

{

intx,y,z;

inputtwonumber:

if(x<

10||x>

99||y<

10||y>

99)

inputdataerror!

\n"

else

{z=(x/10)*1000+(y/10)*100+(x%10)*10+y%10;

%d\n"

z);

第5章

(1)d

(2)c(3)a(4)d(5)a(6)d(7)d(8)b(9)d(10)b

(11)c(12)a(13)d(14)d(15)c

(1)fahrcelsius=5.0/9*(fahr-32)fahr+=step

(2)5、4、6(3)3*i-2

(4)y--z*=x(5)8ㄩ5ㄩ2(6)j++i%j==0j>

=i(或j==i)

(7)sum<

ksum==kj-2(8)s=0p=1j<

=i

3.改错题

(1)第一处改正:

For改为for

第二处改正:

for(k=1;

k<

=4;

k++)或for(k=0;

4;

k++)

第三处改正:

ave=sum/4改为ave=sum/4.0

(2)第一处改正:

i++改为j++

m=100*i+10*j+k

(3)第一处改正:

temp=1

第二处改正:

temp>

=eps

第三处改正:

r*2

(4)第一处改正:

n

====

(5)第一处改正:

t=m/10改为t=m%10

t=0改为t==0

m=m%10改为m=/10

4.编程题

(1)分式累加和。

math.h>

ints;

floatn,t,sum;

t=1;

sum=0;

n=1;

s=1.0;

while(n<

=100)

{

sum=sum+t;

n=n+1;

s=-s;

t=s/n;

sum=%10.6f\n"

sum);

(2)1~10的阶乘

inti;

longintn=1;

for(i=1;

i<

=10;

i++)

n=n*i;

printf(i%5==0?

%2d!

=%-10ld\n"

:

=%-10ld"

i,n);

(3)由*组成的等腰三角形

intn,i,j;

n);

=n;

{for(j=1;

j<

=n+i-1;

j++)

if(j<

=n-i)printf("

"

*"

(4)完数

intm,s,i;

for(m=2;

m<

1000;

m++)

{s=0;

m;

if((m%i)==0)s=s+i;

if(s==m)

{printf("

%ditsfactorsare"

if(m%i==0)printf("

%d,"

i);

(5)打靶

inth10,h7,h5;

for(h10=0;

h10<

=8;

h10++)

for(h7=0;

h7<

h7++)

for(h5=0;

h5<

h5++)

if(h10+h7+h5==8&

h10*10+h7*7+h5*5==53)

printf("

h10=%d\th7=%d\th5=%d\n"

h10,h7,h5);

(6)猴子吃桃子问题。

采取逆向思维的方法,从后往前推断。

//代码一

main()

int 

day,x1,x2;

day=9;

x2=1;

while(day>

0)

{x1=(x2+1)*2;

/*第一天的桃子数是第2天桃子数加1后的2倍*/

x2=x1;

day--;

}

printf("

the 

total 

is 

x1);

//代码二

inti=9,sum=1;

for(;

i>

0;

sum=2*(sum+1),i--);

printf("

sum=%d\n"

(7)牛顿迭代法

一般地:

f(x)=a0xn+a1xn-1+….+an-1x+an=0

求f(x)在X0附近的根

计算公式:

Xn+1=Xn-f(Xn)/f’(Xn)

精度:

ε=|Xn+1-Xn|<

1.0e-m,m=5。

所求的根:

满足精度的Xn

#include<

{floatx,x0,f,f1;

x=1.5;

//可改为scanf("

do

{x0=x;

f=2*x0*x0*x0-4*x0*x0+3*x0-6;

f1=6*x0*x0-8*x0+3;

//f的导数,即它的切线

x=x0-f/f1;

//切线与x轴的交点

}while(fabs(x-x0)>

=1e-5);

Therootis%8.7f\n"

x);

(8)利用辗除法,直到b为0为止

{intp,r,n,m,temp;

inputtwointegern,m:

%d,%d"

n,&

m);

if(n<

m)

{temp=n;

n=m;

m=temp;

p=n*m;

while(m!

=0)

{

r=n%m;

m=r;

greatestcommondivisoris:

n);

//最大公约数

leasecommonmultipleis:

p/n);

//最小公倍数

 

第6章

1234567890

CCDCCAADBD

2.写出程序的运行结果

(1)sum=6

(2)Max=9,row=1,col=0

(3)

10

210

3210

(4)-5

3、填空

(1)i=j=k=0i<

4&

j==5j<

5&

i==4

(2)i=1&

j-1

(3)n>

0n%10+0x30或n%10+'

0'

s[j]='

\0'

(4)s[i]、s[0],s[1]、str,s[1]、s[2],str

4.改错题

n=strlen(str)

str[j]=='

'

str[j]!

(2)第一处改正:

ch=str[i]

(j>

=0)&

(ch<

str[j])

(3)第一处改正:

s1[i]!

j=0;

(4)第一处改正:

cnt=0

if(!

(m%i))

cnt

5.编程题

VC提供的intrand(void)产生的实际上是0~32767(short型的最大数)的伪随机数,伪随机数总是以一个相同的数为起始值(种子),运用递推的原理来生成的。

所以,如果只使用rand函数,每次运行所形成的伪随机数列也相同,失去了随机意义。

但这样便于程序调试。

VC的rand()函数默认以1为种子。

要解决这个问题,需要在每次产生随机序列前,先指定不同的种子,这样计算出来的随机序列就不会完全相同了。

VC提供的voidsrand(unsignedintseed)将seed作为种子,如果以time函数值(即当前时间)作为种子数,那么就可以保证随机性了,因为两次调用rand函数的时间通常是不同的。

也可以使用srand函数来人为指定种子数。

若要产生a~b之间的一个随机数,则可用a+rand()%(b-a+1)表示。

若要0~1的小数,则可以先取得0~10的整数,然后均除以10即可得到随机到十分位的10个随机小数;

若要得到随机到百分位的随机小数,则需要先得到0~100的整数,然后均除以100,其它情况依此类推。

stdlib.h>

time.h>

inta[12],count=0,i;

srand((unsigned)time(NULL));

for(i=0;

12;

a[i]=5+rand()%11;

for(i=0;

%5d"

a[i]);

count++;

if(count%4==0)printf("

);

#defineN5

inta[N],max,min,i,sum=0,count=0;

floatav;

i<

N;

i++)

scanf("

a[i]);

max=min=a[0];

sum+=a[i];

if(a[i]>

max)max=a[i];

if(a[i]<

min)min=a[i];

av=(float)sum/5;

av)count++;

max:

%d\nmin:

%d\nav:

%f\ncount:

max,min,av,count);

intscore[30];

/*={61,62,63,64,65,66,67,68,69,70,

71,72,73,74,75,76,77,78,79,80,

81,85,89,90,33,44,55,91,92,93};

//不必赋初值,这是为调试程序方便*/

inti,count90=0,count80=0,count70=0,count60=0;

30;

intputNO.%dstudent'

sscore:

i+1);

score+i);

if(score[i]>

=90)

{

count90++;

count80++;

count70++;

count60++;

}

elseif(score[i]>

=80)

=70)

=60)

0~59:

%d\n60~69:

%d\n70~79:

%d\n80~89:

%d\n90~100:

30-count60,count60-count70,count70-count80,count80-count90,count90);

\n60orhigher:

%d\n70orhigher:

%d\n80orhigher:

%d\n90orhigher:

count60,count70,count80,count90);

1、

chara[45];

inti,j,k;

45;

i++)a[i]='

;

5;

for(j=0;

i;

a[9*i+j]='

for(k=0;

a[9*i+j+k]='

*'

j=0;

%c"

j++;

if(j%9==0)printf("

2、

chara[5][9];

9;

a[i][j]='

a[i][j+k]='

printf("

a[i][j]);

(5)

#defineN4

inti,j,a[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10};

\nTheoriginalarray:

for(j=0;

%2d"

a[i][j]=a[i][j]+a[j][i];

a[j][i]=0;

\nTheresultis:

第7章

123456789012345

DADBDCADACBDDBD

2.填空

(1)函数

(2)main函数(3)函数首部、函数体(4)形式参数、实际参数、实参、形参(5)常量、变量、表达式(6)函数定义时函数值、返回值

(7)max(max(a,b),c))、(x>

y?

x:

y)

(8)

******

######

(9)str[]=abdef

(10)low<

=high(high+low)/2

3.改错题

(1)第一处:

void改为int

第二处:

=n&

(n%i==0)改为i<

(n%i!

=0)或i<

n&

第三处:

n!

=i改为n==i

(2)第一处:

删除;

for(j=1;

j<

=50;

i++)改为for(j=1;

j++)

returni

(3)第一处:

doublefun(doubleb,x0)改为doublefun(doubleb,doublex0)

if(abs(x1-x0)>

=1e-6)改为if(fabs(x1-x0)>

=1e-6)

4、编程题

(1)

longact(longn)

if(n==1||n==0)return1;

returnn*act(n-1);

main

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

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

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