C课后习题参考答案(2)

2020-03-27 04:49

习题参考答案

is %d,”,letter,space,digit,other);

} 3、 main()

{int m,s,i;

for(m=2;m<1000;m++) {s=0;

for(i=1; i

{printf(“%d its factors are ”,m); for(i=1; i

if(m%i==0) printf(“%d,”,i); printf(“\\n”); } } } 4、 main()

{int i,a,min,max; scanf(“%d”,&a); min=a;max=a;

for(i=2;i<=100;i++) { scanf(“%d”,&a); if(amax) max=a; }

printf(“Max=%d,Min=%d\\n”,max,min); } 5、

#include #define N 20 main() {int i,t;

float a=2,b=1,s=0; for(i=1;i<=N;i++) {s=s+a/b; t=a;

a=a+b; /*将前一项的分子与分母之和作为下一项的分子*/ b=t; /*将前一项的分子作为下一项的分母*/ }

printf(“Sum=%f\\n”,s); }

6、问题分析:设王先生的岁数是x,他夫人的岁数是y,可得到如下方程组:

300

习题参考答案

2??x?y?1053 ?2??x?y?873这是一个非线性方程组的求解,无法手算求解,可以用穷举法求解。考虑到实际可能,

x、y可以在20—100范围内取值,逐一穷兴出x、y所有可能的取值判断是否满足上述方程组,若满足,这一组解就是要求的解。程序如下:

main() {int x,y;

for(x=20;x<=100;x++) for(y=20;y<=100;y++)

if(x*x+y==1053&&x+y*y==873) printf(“x=%d y=%d\\n”,x,y); } 7、

main() {

long int k,g,s=0;

printf(\ scanf(\ do

{ g=k;

printf(\ k=k/10;

}while(k!=0); } 8、 (1) main() { int i,j;

for(i=1;i<=9;i++) { for(j=i;j<=9;j++)

printf(\ \ printf(\ } }

(2) main()

{ int i,j,k;

for(i=1;i<=9;i++) {

for(k=1;k

301

习题参考答案

for(j=i;j<=9;j++)

printf(\ printf(\ } } 9、

#include main() {int i=0;

long s,n,j,x;

for(j=100;j<=999;j++) { s=0; x=j;

while(x>0) /*求原数j的反序数*/ {s=s*10+x; x=x/10; }

if(s==j) /*判断反序数s与原数j是否相等*/ {i++; printf(\

if(i==0) printf(\每行输出10个回文数*/ } } } 10、

#include main()

{int x,y,z;

for(x=1;x<20;x++) for(y=1;y<33;y++) for(z=3;z<100;z+=3)

{if((x*5+y*3+z/3)==100&&x+y+z==100)

printf(“公鸡有%d只,母鸡有%d只,小鸡有%d只\\n”,x,y,z); } } 11、

#include #include main()

{int n=1; double x,sum=0,term=1.0; scanf(“%lf”,&x);

while(fabs(term)>=1e-6) { sum+=term;

term*=-x*x/(n*(n+1)); n=n+2; }

302

习题参考答案

printf(“cos(%lf)=%lf ,%lf \\n”,x,sum,cos(x)); } 12、

问题分析:

用迭代法求平方根的算法如下: (1)设定一个x的初值x0;

(2)用上述公式求出x的下一个值x1;

(3)再将x1代入上述公式,求出x的下一个值x2;

(4)如此继续下去,直到前后两次求出的x值(xn+1和xn)满足xn?1?xn?10?5。

为便于程序处理,令x的初值x0=a/2(也可以是其他值),求出x1。程序实现如下: #include main()

{float a,x0,x1;

printf(“Please input a positive number:”); scanf(“%f”,&a); /*输入a的值*/ x0=a/2;

x1=(x0+a/x0)/2; do

{x0=x1;

x1=(x0+a/x0)/2;

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

printf(“The square root of %f is %f, the true root is %f\\n”,a,x1,sqrt(a)); } 13、

程序如下:

#include main()

{float x,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(“The root is %f\\n”,x); } 14、

#include #include

#define epsilon 0.00001 /*定义要求的精度*/ float f(float x) /*求函数值*/

303

习题参考答案

{return(2*x*x*x-4*x*x+3*x-6); } main()

{float a,b,x;

scanf(\输入求根区间*/

if(f(a)*f(b)>=0) /*判断是否符合二分法使用的条件*/ {printf(\不满足二分法使用条件,退出!\ do

{ x=(a+b)/2;

if(f(x)*f(b)<0) /*如果成立,则根在区间的右半部分*/ a=x;

else /*否则根在左半部分*/ b=x; }

while(fabs(b-a)>=epsilon); /*判断是否达到精度要求,如果没达到,继续循环*/ x=(b+a)/2; /*取最后的小区间中点作为根的近似值*/ printf(\输出函数的近似根*/ } 15、

#define N 4 main() {int i,j,k;

for(i=0;i

{ for(j=0;j=N-i;j--) printf(\ for(j=N-1;j>=N-i;j--) printf(\

for(j=0;j

习 题 6

一、选择题 1. B 2. D 3. D 二、填空题

阅读程序写出运行结果题 1. 第一行:1 4 3

第二行:2 5 8 2. 第一行:1 2 4

第二行:3 5 7 第三行:6 8 9 三、编程题

1. # include main()

304

4. D 5. A 6. C


C课后习题参考答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年全国大学生网络安全知识竞赛试题(单选题) - 1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: