C语言程序设计第四课后答案.docx

上传人:牧羊曲112 文档编号:3060808 上传时间:2023-03-10 格式:DOCX 页数:95 大小:62.71KB
返回 下载 相关 举报
C语言程序设计第四课后答案.docx_第1页
第1页 / 共95页
C语言程序设计第四课后答案.docx_第2页
第2页 / 共95页
C语言程序设计第四课后答案.docx_第3页
第3页 / 共95页
C语言程序设计第四课后答案.docx_第4页
第4页 / 共95页
C语言程序设计第四课后答案.docx_第5页
第5页 / 共95页
亲,该文档总共95页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言程序设计第四课后答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第四课后答案.docx(95页珍藏版)》请在三一办公上搜索。

1、C语言程序设计第四课后答案第5章循环结构程序设计 5-2 #include #include / 程序中用到数学函数fabs,应包含头文件math.n int main int sign=1,count=0; / sign用来表示数值的符号,count用来统计循环次数 double pi=0.0,n=1.0,term=1.0; / pi开始代表多项式的值,最后代表的值, n代表分母,term代表当前项的值 while(fabs(term)=1e-8) / 检查当前项term的绝对值是否大于或等于10的(-6)次方 pi=pi+term; / 把当前项term累加到pi中 n=n+2; / n+

2、2是下一项的分母 sign=-sign; / sign代表符号,下一项的符号与上一项符号相反 term=sign/n; / 求出下一项的值term count+; / count累加1 pi=pi*4; / 多项式的和pi乘以4,才是的近似值 printf(pi=%10.8fn,pi); / 输出的近似值 printf(count=%dn,count); / 输出循环次数 return 0; 5-3 #include int main int p,r,n,m,temp; printf(请输入两个正整数n,m:); scanf(%d,%d,&n,&m); if (nm) temp=n; n=m;

3、 m=temp; p=n*m; while(m!=0) r=n%m; n=m; m=r; printf(它们的最大公约数为:%dn,n); printf(它们的最小公约数为:%dn,p/n); return 0; 5-4 #include int main char c; int letters=0,space=0,digit=0,other=0; printf(请输入一行字符:n); while(c=getchar)!=n) if (c=a & c=A & c=0 & c=9) digit+; else other+; printf(字母数:%dn空格数:%dn数字数:%dn其它字符数:%d

4、n,letters,space,digit,other); return 0; 5-5 #include int main int a,n,i=1,sn=0,tn=0; printf(a,n=:); scanf(%d,%d,&a,&n); while (i=n) tn=tn+a; /*赋值后的tn为i个 a组成数的值*/ sn=sn+tn; /*赋值后的sn为多项式前i项之和*/ a=a*10; +i; printf(a+aa+aaa+.=%dn,sn); return 0; 5-6 #include int main double s=0,t=1; int n; for (n=1;n=20;

5、n+) t=t*n; s=s+t; printf(1!+2!+.+20!=%22.15en,s); return 0; 5-7 #include int main int n1=100,n2=50,n3=10; double k,s1=0,s2=0,s3=0; for (k=1;k=n1;k+) /*计算1到100的和*/ s1=s1+k; for (k=1;k=n2;k+) /*计算1到50各数的平方和*/ s2=s2+k*k; for (k=1;k=n3;k+) /*计算1到10的各倒数和*/ s3=s3+1/k; printf(sum=%15.6fn,s1+s2+s3); return

6、0; 5-8 #include int main int i,j,k,n; printf(parcissus numbers are ); for (n=100;n1000;n+) i=n/100; j=n/10-i*10; k=n%10; if (n=i*i*i + j*j*j + k*k*k) printf(%d ,n); printf(n); return 0; 5-9-1 #define M 1000 /*定义寻找范围*/ #include int main int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10; int i,a,n,s; for (a=2;a=M;a+

7、) /* a是2-1000之间的整数,检查它是否完数 */ n=0; /* n用来累计a的因子的个数 */ s=a; /* s用来存放尚未求出的因子之和,开始时等于a */ for (i=1;i1) printf(%d,%d,k1,k2); /* n1表示a至少有2个因子 */ if (n2) printf(,%d,k3); /* n2表示至少有3个因子,故应再输出一个因子 */ if (n3) printf(,%d,k4); 因子 */ if (n4) printf(,%d,k5); if (n5) printf(,%d,k6); if (n6) printf(,%d,k7); if (n7

8、) printf(,%d,k8); if (n8) printf(,%d,k9); if (n9) printf(,%d,k10); printf(n); return 0; 5-9-2 #include int main int m,s,i; for (m=2;m1000;m+) s=0; for (i=1;im;i+) if (m%i)=0) s=s+i; if(s=m) printf(%d,its factors are ,m); for (i=1;im;i+) if (m%i=0) printf(%d ,i); printf(n); return 0; 5-10 #include /*

9、 n3表示至少有4个因子,故应再输出一个 /* 以下类似 */ int main int i,n=20; double a=2,b=1,s=0,t; for (i=1;i=n;i+) s=s+a/b; t=a, a=a+b, b=t; printf(sum=%16.10fn,s); return 0; 5-11 #include int main double sn=100,hn=sn/2; int n; for (n=2;n=10;n+) sn=sn+2*hn; /*第n次落地时共经过的米数*/ hn=hn/2; /*第n次反跳高度*/ printf(第10次落地时共经过%f米n,sn);

10、printf(第10次反弹%f米n,hn); return 0; 5-12 #include int main int day,x1,x2; day=9; x2=1; while(day0) x1=(x2+1)*2; /*第1天的桃子数是第2天桃子数加1后的2倍.*/ x2=x1; day-; printf(total=%dn,x1); return 0; 5-13 #include #include int main float a,x0,x1; printf(enter a positive number:); scanf(%f,&a); x0=a/2; x1=(x0+a/x0)/2; d

11、o x0=x1; x1=(x0+a/x0)/2; while(fabs(x0-x1)=1e-5); printf(The square root of %5.2f is %8.5fn,a,x1); return 0; 5-14 #include #include int main double x1,x0,f,f1; x1=1.5; do x0=x1; f=(2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x1=x0-f/f1; while(fabs(x1-x0)=1e-5); printf(The root of equation is %5.2fn,x1); r

12、eturn 0; 5-15 #include #include int main float x0,x1,x2,fx0,fx1,fx2; do printf(enter x1 & x2:); scanf(%f,%f,&x1,&x2); fx1=x1*(2*x1-4)*x1+3)-6; fx2=x2*(2*x2-4)*x2+3)-6; while(fx1*fx20); do x0=(x1+x2)/2; fx0=x0*(2*x0-4)*x0+3)-6; if (fx0*fx1)=1e-5); printf(x=%6.2fn,x0); return 0; 󰀀 5-16 #includ

13、e int main int i,j,k; for (i=0;i=3;i+) for (j=0;j=2-i;j+) printf( ); for (k=0;k=2*i;k+) printf(*); printf(n); for (i=0;i=2;i+) for (j=0;j=i;j+) printf( ); for (k=0;k=4-2*i;k+) printf(*); printf(n); return 0; 5-17 #include int main char i,j,k; /*是a的对手;j是b的对手;k是c的对手*/ for (i=x;i=z;i+) for (j=x;j=z;j+)

14、 if (i!=j) for (k=x;k=z;k+) if (i!=k & j!=k) if (i!=x & k!=x & k!=z) printf(A-%cnB-%cnC-%cn,i,j,k); return 0; 第6章利用数组处理批量数据 6-1 #include #include int main int i,j,n,a101; for (i=1;i=100;i+) ai=i; a1=0; for (i=2;isqrt(100);i+) for (j=i+1;j=100;j+) if(ai!=0 & aj!=0) if (aj%ai=0) aj=0; printf(n); for (

15、i=2,n=0;i=100;i+) if(ai!=0) printf(%5d,ai); n+; if(n=10) printf(n); n=0; printf(n); return 0; 6-2 #include int main int i,j,min,temp,a11; printf(enter data:n); for (i=1;i=10;i+) printf(a%d=,i); scanf(%d,&ai); printf(n); printf(The orginal numbers:n); for (i=1;i=10;i+) printf(%5d,ai); printf(n); for

16、(i=1;i=9;i+) min=i; for (j=i+1;jaj) min=j; temp=ai; ai=amin; amin=temp; printf(nThe sorted numbers:n); for (i=1;i=10;i+) printf(%5d,ai); printf(n); return 0; 6-3 #include int main int a33,sum=0; int i,j; printf(enter data:n); for (i=0;i3;i+) for (j=0;j3;j+) scanf(%3d,&aij); for (i=0;i3;i+) sum=sum+a

17、ii; printf(sum=%6dn,sum); return 0; 6-4 #include int main int a11=1,4,6,9,13,16,19,28,40,100; int temp1,temp2,number,end,i,j; printf(array a:n); for (i=0;iend) a10=number; else for (i=0;inumber) temp1=ai; ai=number; for (j=i+1;j11;j+) temp2=aj; aj=temp1; temp1=temp2; break; printf(Now array a:n); fo

18、r (i=0;i11;i+) printf(%5d,ai); printf(n); return 0; 6-5 #include #define N 5 int main int aN,i,temp; printf(enter array a:n); for (i=0;iN;i+) scanf(%d,&ai); printf(array a:n); for (i=0;iN;i+) printf(%4d,ai); for (i=0;iN/2;i+) /循环的作用是将对称的元素的值互换 temp=ai; ai=aN-i-1; aN-i-1=temp; printf(nNow,array a:n);

19、 for (i=0;iN;i+) printf(%4d,ai); printf(n); return 0; 6-6 #include #define N 10 int main int i,j,aNN; for (i=0;iN;i+) aii=1; ai0=1; for (i=2;iN;i+) for (j=1;j=i-1;j+) aij=ai-1j-1+ai-1j; for (i=0;iN;i+) for (j=0;j=i;j+) printf(%6d,aij); printf(n); printf(n); return 0; 6-7 #include int main int a1515,

20、i,j,k,p,n; p=1; while(p=1) printf(enter n(n=1-15):); scanf(%d,&n); if (n!=0) & (n=15) & (n%2!=0) p=0; for (i=1;i=n;i+) for (j=1;j=n;j+) aij=0; j=n/2+1; a1j=1; for (k=2;k=n*n;k+) i=i-1; j=j+1; if (in) i=i+2; j=j-1; else if (in) j=1; if (aij=0) aij=k; else i=i+2; j=j-1; aij=k; for (i=1;i=n;i+) for (j=

21、1;j=n;j+) printf(%5d,aij); printf(n); return 0; 6-8 #include #define N 4 #define M 5 /* 数组为4行5列 */ int main int i,j,k,aNM,max,maxj,flag; printf(please input matrix:n); for (i=0;iN;i+) /* 输入数组 */ for (j=0;jM;j+) scanf(%d,&aij); for (i=0;iN;i+) max=ai0; /* 开始时假设ai0最大 */ maxj=0; /* 将列号0赋给maxj保存 */ for

22、(j=0;jmax) max=aij; /* 将本行的最大数存放在max中 */ maxj=j; /* 将最大数所在的列号存放在maxj中 */ flag=1; /* 先假设是鞍点,以flag为1代表 */ for (k=0;kakmaxj) /* 将最大数和其同列元素相比 */ flag=0; /* 如果max不是同列最小,表示不是鞍点令flag1为0 */ continue; if(flag) /* 如果flag1为1表示是鞍点 */ printf(a%d%d=%dn,i,maxj,max); /* 输出鞍点的值和所在行列号 */ break; if(!flag) /* 如果flag为0表

23、示鞍点不存在 */ printf(It is not exist!n); return 0; 6-9 #include #define N 15 int main int i,number,top,bott,mid,loca,aN,flag=1,sign; char c; printf(enter data:n); scanf(%d,&a0); i=1; while(i=ai-1) i+; else printf(enter this data again:n); printf(n); for (i=0;iN;i+) printf(%5d,ai); printf(n); while(flag)

24、 printf(input number to look for:); scanf(%d,&number); sign=0; top=0; /top是查找区间的起始位置 bott=N-1; /bott是查找区间的最末位置 if (numberaN-1) /要查的数不在查找区间内 loca=-1; / 表示找不到 while (!sign) & (top=bott) mid=(bott+top)/2; if (number=amid) loca=mid; printf(Has found %d, its position is %dn,number,loca+1); sign=1; else i

25、f (numberamid) bott=mid-1; else top=mid+1; if(!sign|loca=-1) printf(cannot find %d.n,number); printf(continu or not(Y/N)?); scanf( %c,&c); if (c=N|c=n) flag=0; return 0; 6-10 #include int main int i,j,upp,low,dig,spa,oth; char text380; upp=low=dig=spa=oth=0; for (i=0;i3;i+) printf(please input line

26、%d:n,i+1); gets(texti); for (j=0;j=A& textij=a & textij=0 & textij=9) dig+; else if (textij= ) spa+; else oth+; printf(nupper case: %dn,upp); printf(lower case: %dn,low); printf(digit : %dn,dig); printf(space : %dn,spa); printf(other : %dn,oth); return 0; 6-11 #include int main char a5=*,*,*,*,*; in

27、t i,j,k; char space= ; for (i=0;i5;i+) printf(n); printf( ); for (j=1;j=i;j+) printf(%c,space); for (k=0;k5;k+) printf(%c,ak); printf(n); return 0; 6-12a-c #include int main int j,n; char ch80,tran80; printf(input cipher code:); gets(ch); printf(ncipher code :%s,ch); j=0; while (chj!=0) if (chj=A) &

28、 (chj=a) & (chj=z) tranj=219-chj; else tranj=chj; j+; n=j; printf(noriginal text:); for (j=0;jn;j+) putchar(tranj); printf(n); return 0; 6-12b #include int main int j,n; char ch80; printf(input cipher code:n); gets(ch); printf(ncipher code:%sn,ch); j=0; while (chj!=0) if (chj=A) & (chj=a) & (chj=z)

29、chj=219-chj; else chj=chj; j+; n=j; printf(original text:); for (j=0;jn;j+) putchar(chj); printf(n); return 0; 6-13 #include int main char s180,s240; int i=0,j=0; printf(input string1:); scanf(%s,s1); printf(input string2:); scanf(%s,s2); while (s1i!=0) i+; while(s2j!=0) s1i+=s2j+; s1i=0; printf(nThe new string is:%sn,s1); return 0; 6-14 #include int main int i,resu; char s1100,s2100; printf(input string1:); gets(s1); printf(ninput string2:); gets(s2); i=0; while (s1i=s2i) & (s1i!=0)i+; if (s1i=0 & s2i=0) resu=0; else resu=s1i-s2i;

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号