c语言第二版第七章答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.1 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。
参考程序如下:
#include
int aa(int m,int n) //求最大公约数
{ int k;
if(m {k=m;m=n;n=k;} k=m%n; while(k) //辗转求余法 { m=n; n=k; k=m%n; } return(n); //n即为最大公约数 } int bb(int m,int n) //求最小公倍数 { int k; k=aa(m,n); //调用aa函数,返回两数的最大公约数 return(m*n/k); } main() { int m, n,yy,kk; printf("Input m and n:"); scanf("%d%d",&m,&n); yy=aa(m,n); kk=bb(m,n); printf("最小公倍数=%d\n",kk); printf("最大公约数=%d\n",yy); } 7.3 写一个判素数的函数,在主函数输入一个整数,输出是否素数的信息。 参考程序如下: #include int aa(int n) { int i; int flag; // flag标志 for(i=2;i<=sqrt(n);i++) { if(n%i==0) break; } if(i>sqrt(n)) flag=1; else flag=0; return(flag); } main() { int n,flag; // flag标志 printf("\nInput n:"); scanf("%d",&n); flag=aa(n); if(flag==1) printf("%d is a prime number.\n",n); else printf("%d is not a prime number.\n",n); } 7.4 写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换。 参考程序如下: #include main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int b[3][3],i,j; printf("array a:\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%5d",a[i][j]); printf("\n"); } printf("After switch:\n"); aa(a,b); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%5d",b[i][j]); printf("\n"); } } void aa(int a[3][3],int b[3][3]) { int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[j][i]=a[i][j]; } 说明:当数组名作函数参数时,形参也必须是同类型的数组名,形参数组名的实质是一个指针变量,存放的第0行第0列的元素的地址;这样,子函数中a[i][j]就是主函数中的a[i][j]; 7.11写一个函数,用“起泡法”对输入的10个字符按由小到大的顺序排列 参考程序如下: main() { char s[10]; int i; void sort(char ss[],int n); printf("\nInput 10 character:\n"); for(i=0;i<10;i++) scanf("%c",&s[i]); printf("\nbefore sort:"); for(i=0;i<10;i++) printf("%c ",s[i]); printf("\nAfter sort:"); sort(s,10); for(i=0;i<10;i++) printf("%c ",s[i]); } void sort(char a[],int n) //起泡法 { int i,j; char t; for(i=1;i<=9;i++) for(j=0;j if(a[j]>a[j+1]) { t=a[j];a[j]=a[j+1];a[j+1]=t;} } 7.17用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。 参考程序如下: #include main() { int n; void aa(int n); printf("Input a integar:"); scanf("%d",&n); printf("The result is:"); if(n<0) {printf("-"); n=-n;} //如果是负数,先输出符号 printf("The result is:"); aa(n); } void aa(int n) {