1、C程序设计第3版谭浩强 著部分课后习题答案主要是第678章C程序设计(第三版)部分课后习题答案(谭浩强著)6.4求源代码如下:#includefloat factorial(int n)/定义阶乘函数 inti; 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#includ
2、eintfun(intnum) inti=0; intarray3; int sum=0; while(num) arrayi=num%10; i+; num=num/10; for(i=0;i3;i+) sum+=pow(arrayi,3); return sum; intmain() 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() inti,j; int su
3、m; 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比较两个字符串源代码
4、如下:#include#include#define M 20void main() char s1M,s2M;/定义两个字符串数组 int len1,len2; intmax_len; inti; 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!=
5、0) break; printf(The result after comparing is %d.n,d);8.3判断素数的算法源代码如下:#include#includeintPrime(int number) inti; double k; k=sqrt(number); for(i=2;ik) return 1; else return 0; intmain() intnum; int result; printf(Input a integral number:n); scanf(%d,&num); if(num=1) printf(%d既不是素数也不是合数。n,num); retu
6、rn 0; result=Prime(num); if(result) printf(%d is a prime number.n,num); else printf(%d is not a prime number.n,num); return 0;8.4 对33的矩阵实现转置源代码如下:#includevoid Transpose(int array_13) inti,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=arr
7、ay_2ij; void main() inta33; inti,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,intlen) inti; char temp;
8、 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*
9、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
10、0”源代码如下:#includevoid fun(intnum) int array14,array27; inti=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(
11、输出形式为:n); fun(number); printf(n);8.11对字符数组进行排序源代码如下:#includevoid sort(char pointer) inti,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; inti; 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 递归算法求勒让
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1