C语言程序设计习题参考答案!(第二版 杜友福) 联系客服

发布时间 : 星期四 文章C语言程序设计习题参考答案!(第二版 杜友福)更新完毕开始阅读

printf(\}

7. 用牛顿迭代法求高次方程f(X)=2x-4x+5x-18=0的根。牛顿迭代公式为:Xn=Xn-1-f(Xn-1)/f’(Xn-1),其中f’(Xn-1)为导函数在点Xn-1的值。 答:程序参见文件Cprogram\\xt5_4_07.c

#include \#include \main()

{float x,f,f1;

x=8; // x的初值可为任意值 do

{f=2*x*x*x-4*x*x+5*x-18; f1=6*x*x-8*x+5; x=x-f/f1; }while(fabs(f)>0.00001); printf(\}

8. 用弦截法求高次方程2x-3x+7x-13=0的根。 答:程序参见文件Cprogram\\xt5_4_08.c

#include \#include \main()

{float a,b,c,fa,fb,fc; do

{printf(\ scanf(\ fa=2*a*a*a-3*a*a+7*a-13; fb=2*b*b*b-3*b*b+7*b-13; }while(fa*fb>0); do

{c=(a*fb-b*fa)/(fb-fa);

fc=2*c*c*c-3*c*c+7*c-13; if(fa*fc>0)

{a=c;fa=fc;} else

{b=c;fb=fc;}

}while(fabs(fc)>0.0001); printf(\}

9. 有这样一些真分数:其分子和分母都是两位正整数,且分子的个位数与分母的十位数相同,如果把该分数的分子的个位数与分母的十位数同时去掉,所得到的新的分数正好与原分数的值相等,如26/65=2/5。试编程求出所有满足上述条件的真分数。 答:程序参见文件Cprogram\\xt5_4_09.c

#include \main()

{int a,b,c; //设这个分数为ab/bc for(a=1;a<=9;a++) for(b=1;b<=9;b++) for(c=1;c<=9;c++)

9

3

2

3

2

}

if((a

10. 编写程序,求数列:1、(1+1/2)、(1+1/2+1/3)、(1+1/2+1/3+1/4)、(1+1/2+1/3+1/4+1/5)?

的前10项之和。

答:程序参见文件Cprogram\\xt5_4_10.c

#include \main() {float s,t; int i; s=0,t=0;

for(i=1;i<=10;i++)

{t=t+1.0/i; s=s+t; } printf(\}

11. 编写程序,求3到100之间的所有素数之和。 答:程序参见文件Cprogram\\xt5_4_11.c

#include \main()

{int s,i,k,flag; s=0;

for(i=3;i<=100;i++) {flag=1;

for(k=2;k

{s=s+i;printf(\ }

printf(\}

12. 编写程序,求Fibonacci数列中大于800的最小的一个数。 答:程序参见文件Cprogram\\xt5_4_12.c

#include \void main()

{int f1=1,f2=1,f3; while(f3<=800) {f3=f1+f2;

f1=f2; f2=f3; }

printf(\数列中大于800的最小数是]\\n\}

习题六 数组

一、选择题

1~10: BDBCD CDBAB

10

11~20:BCDCC DABBC 21~30:CCADC ABBCB

31~41:BDDDD CDCCB A 二、填空题

1. 9 、 0 2. 先行后列

3. 连续的存储空间中 4. QuickC

5. (c=getchar( )) 、 ‘A’+i或65+i 6. ‘\\0’ 、 str1[i]-str2[i] 7. CDABC 8. 10 14 9. 6 10. 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 11. 600 12. AzyD 13 4 some string *test 三、编程题

1. 定义一个有20个元素的整型数组,分别求出下标为奇数和偶数的元素的平均值。 答:程序参见文件Cprogram\\xt6_3_01.c

#include \#include \main()

{int i,s0=0,s1=0,a[20]; for(i=0;i<20;i++) a[i]=rand()0; for(i=0;i<20;i+=2) {printf(\ s0=s0+a[i]; }

printf(\ sum is:%d ave=%f\\n\ for(i=1;i<20;i+=2) {printf(\ s1=s1+a[i]; }

printf(\ sum is:%d ave=%f\\n\ }

2. 设有一个整型数组,另输入一个整数,编程查找这个整数是否在数组中出现过,若出现,则输出第一次出现的位置,否则,输出no found。 答:程序参见文件Cprogram\\xt6_3_02.c

#include \#include \main()

11

{int i,s,a[20];

for(i=0;i<20;i++) a[i]=rand()0; scanf(\ for(i=0;i<20;i++) if(a[i]==s)

{printf(\ break; }

if(i==20)

printf(\ for(i=0;i<20;i++) printf(\ printf(\}

3. 设有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。 答:程序参见文件Cprogram\\xt6_3_03.c

#include \#define N 10 main() {int i,j,s;

//int a[N]={1,3,5,7,9,11,13,15,17}; int a[N]={17,15,13,11,9,7,5,3,1}; scanf(\ i=0;

if (a[0]

while(s>a[i]) i++; else

while(si;j--) a[j]=a[j-1]; a[j]=s;

for(i=0;i

printf(\ printf(\}

4. 编一程序,从一个已排好序的数组中删去某个位置上的元素。 答:程序参见文件Cprogram\\xt6_3_04.c

#include \#define N 10 main() {int i,j;

int a[N]={1,3,5,7,9,11,13,15,17,19}; for(i=0;i

printf(\ printf(\ scanf(\ for(j=i;j

12