C程序设计(第3版)(谭浩强 著)部分课后习题答案(主要是第6,7,8章).docx_第1页
C程序设计(第3版)(谭浩强 著)部分课后习题答案(主要是第6,7,8章).docx_第2页
C程序设计(第3版)(谭浩强 著)部分课后习题答案(主要是第6,7,8章).docx_第3页
C程序设计(第3版)(谭浩强 著)部分课后习题答案(主要是第6,7,8章).docx_第4页
C程序设计(第3版)(谭浩强 著)部分课后习题答案(主要是第6,7,8章).docx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C程序设计(第三版)部分课后习题答案(谭浩强 著)6.4求n=120n!源代码如下:#includefloat factorial(int n)/定义阶乘函数int i;float product=1;for(i=1;i=n;i+)product=product*i;return product;int main(void)int j;float sum=0;for(j=1;j=3;j+)sum+=factorial(j);printf(%gn,sum);return 0;6.6 “水仙花数”源代码如下:#include#includeint fun(int num)int i=0;int array3;int sum=0;while(num)arrayi=num%10;i+;num=num/10;for(i=0;i3;i+)sum+=pow(arrayi,3);return sum;int main()int j;printf(输出所有的“水仙花数”:n);for(j=100;j=999;j+)if(j=fun(j)printf(%-7d,j);printf(n);return 0;6.7 完数源代码如下:#include#define M 20void main()int i,j;int sum;int arrayM;/用于存放“完数”的数组int k=0;/数组下标int n;/“完数”的个数for(i=1;i=1000;i+)sum=0;for(j=1;j=i/2;j+)if(i%j=0)sum=sum+j;if(sum=i)arrayk=i;k+;printf(输出“完数”及其因子:n);n=k;for(k=0;kn;k+)printf(%d its factors are ,arrayk);for(j=1;j=arrayk/2;j+)if(arrayk%j=0)printf(%d,j);printf(n);7.14 比较两个字符串源代码如下:#include#include#define M 20void main()char s1M,s2M;/定义两个字符串数组int len1,len2;int max_len;int i;int d;printf(Input the string one:n);gets(s1);printf(Input the string two:n);gets(s2);len1=strlen(s1);len2=strlen(s2);max_len=len1len2?len1:len2;/求二者中的较大值for(i=0;imax_len;i+)d=s1i-s2i;if(d!=0)break;printf(The result after comparing is %d.n,d);8.3 判断素数的算法 源代码如下:#include#includeint Prime(int number)int i;double k;k=sqrt(number);for(i=2;ik)return 1;elsereturn 0;int main()int num;int result;printf(Input a integral number:n);scanf(%d,&num);if(num=1)printf(%d既不是素数也不是合数。n,num);return 0;result=Prime(num);if(result)printf(%d is a prime number.n,num);elseprintf(%d is not a prime number.n,num);return 0;8.4 对33的矩阵实现转置源代码如下:#includevoid Transpose(int array_13)int i,j;int array_233;for(i=0;i3;i+)for(j=0;j3;j+)array_2ji=array_1ij;for(i=0;i3;i+)for(j=0;j3;j+)array_1ij=array_2ij;void main()int a33;int i,j;printf(输入一个33的矩阵:n);for(i=0;i3;i+)for(j=0;j3;j+)scanf(%d,&aij);Transpose(a);printf(转置矩阵为:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%-5d,aij);if(j=2)printf(n);8.5 对字符串进行反序处理源代码如下:#include#include#define N 20void Reverse(char* pointer,int len)int i;char temp;for(i=0;ilen/2;i+)temp=pointeri;pointeri=pointerlen-1-i;pointerlen-1-i=temp;void main()char strN;int length;/字符串长度printf(Input a string:n);gets(str);length=strlen(str);Reverse(str,length);printf(The new string:n);puts(str);8.6 对两个字符串进行连接处理源代码如下:#includevoid my_strcat(char*pointer1,char*pointer2)while(*pointer1)pointer1+;while(*pointer2)*pointer1=*pointer2;pointer1+;pointer2+;*pointer1=NULL;void main()char str130,str210;printf(Input string A:n);gets(str1);printf(Input string B:n);gets(str2);my_strcat(str1,str2);printf(The string A&B:n);puts(str1);8.8 将“1990”转换成“1 9 9 0”源代码如下:#includevoid fun(int num)int array14,array27;int i=0;while(num)array1i=num%10;num=num/10;i+;for(i=0;i4;i+)array1i=array1i+0;/将数字转化为相应的字符for(i=0;i4;i+)array22*i=array1i;for(i=0;i=0;i-)printf(%c,array2i);/以字符的形式输出void main()int number;printf(输入一个4位数字:n);scanf(%d,&number);printf(输出形式为:n);fun(number);printf(n);8.11 对字符数组进行排序源代码如下:#includevoid sort(char pointer)int i,j;char temp;for(j=0;j9;j+)for(i=0;ipointeri+1)temp=pointeri;pointeri=pointeri+1;pointeri+1=temp;void main()char array10=a,s,d,f,g,h,j,k,l,x;int i;printf(输入的10个字符为:n);for(i=0;i10;i+)printf(%-5c,arrayi);printf(n);sort(array);printf(The sorted numbers:n);for(i=0;i10;i+)printf(%-5c,arrayi);printf(n);8.13 递归算法求勒让德多项式的值源代码如下:#includefloat legendre_fun(int n, float x)/递归算法float value;if(n=0)value=1;if(n=1)value=x;if(n=2)value=(2*n-1)*x-legendre_fun(n-1,x)-(n-1)*legendre_fun(n-2,x)/n;return value;void main()int n;float x,value;printf(输入勒让德多项式的阶数与自变量的值:n);scanf(%d%f,&n,&x);value=legendre_fun(n,x);printf(勒让德多项式的值为:n);printf(%fn,value);6.1 求两个正整数的最大公约数和最小公倍数源代码如下:#includevoid main()int m,n;int r;int GCD;/最大公约数int LCM;/最小公倍数int product;/乘积int temp;printf(Input two positive integers:n);scanf(%d%d,&m,&n);product=m*n;if(mn)temp=m;m=n;n=temp;r=m%n;while(r)m=n;n=r;r=m%n;GCD=n;LCM=product/GCD;printf(The GCD is %d.n,GCD);printf(The LCM is %d.n,LCM);6.11 迭代法求非负数的算术平方跟源代码如下:#include#includefloat my_sqrt(float a)float x1,x2=a;while(fabs(x1-x2)=1e-5)x1=x2;x2=(x1+a/x1)/2;return x2;int main()float num;float result;printf(输入一个正实数:n);scanf(%f,&num);if(num0)printf(Math error!n);return 0;if(num=0)printf(算术平方根是0。n);return 0;elseresult=my_sqrt(num);printf(算术平方根是%f。n,result);return 0;7.9 折半法查找算法源代码如下:#includevoid main()int array15=15,14,13,12,11,10,9,8,7,6,5,4,3,2,1;int num;int i=0,j=14;int k;printf(输入一个整数:n);scanf(%d,&num);while(i=j)k=(i+j)/2;if(num=arrayk)printf(数组中的第%d个数。n,k+1);break;else if(numj)printf(无此数。n);7.11 打印 * 型平行四边形源代码如下:#include#include#define M 50int main(void)int n;char ch1=*;char ch2= ;int i,j;char arrayMM=0;printf(输入需打印的行数:n);scanf(%d,&n);for(i=0;in;i+)for(j=0;ji+n;j+)if(ji)arrayij=ch2;elsearrayij=ch1;printf(Output:n);for(i=0;in;i+)for(j=0;ji+n;j+)if(arrayij=ch2)printf(%-3c,arrayij);elseprintf(%-4c,arrayij);if(j

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论