文档详情

《C语言程序设计》课后习题答案第八章.doc

发布:2018-04-22约6.46千字共5页下载文档
文本预览下载声明
8.1 编写两个函数,分别求两个证书的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果,两个整数由键盘输入。 void main() { int Mgy(int x,int y); int Mgb(int z); int a,b,mgy,mgb; printf(请输入两个数:\n); scanf(%d,%d,a,b); mgy=Mgy(a,b); mgb=Mgb(a,b,mgy); printf(两个数的最大公约数为%d,最小公倍数为%d\n,mgy,mgb);} int Mgy(int x,int y) {int r,temp; if(xy) { temp=x; x=y; y=temp;} while(x%y!=0) { r=x%y; x=y; y=r;} return y;} int Mgb(int x,int y,int z) { return (x*y/z);} 8.2 求方程ax2+bx+c=0的根,用三个函数分别求当b2-4ac大于零、等于零和小于零时的根,并输出结果。从主函数输入a,b,c的值。 #includemath.h float temp,k,x1,x2; void main() { void Lzero(float a,float b,float c); void Szero(float a,float b,float c); void Ezero(float a,float b,float c); float l,m,n; printf(请输入三个数:\n); scanf(%f,%f,%f,l,m,n); printf(方程的根为:\n); temp=m*m-4*l*n; k=sqrt(temp); if(temp0) { Szero(l,m,n); printf(x1=%f+%fi,x2=%f-%fi\n,x1,x2,x1,x2);} else if(temp==0) { Ezero(l,m,n); printf(x1=%5.2f,x2=%5.2f\n,x1,x1);} else { Lzero(l,m,n); printf(x1=%5.2f,x2=%5.2f\n,x1,x2);} } void Lzero(float a,float b,float c) { x1=(-b+k)/(2*a); x2=(-b-k)/(2*a);} void Szero(float a,float b,float c) { x1=-b/(2*a); x2=sqrt(-temp)/(2*a); } void Ezero(float a,float b,float c) { x1=(-b+k)/(2*a);} 8.3编写一个判素数的函数,在主函数输入一个整数,输出是否是素数的信息。 #includemath.h void main() { int Isprime(int a); int m,temp=0; printf(请输入一个数:\n); scanf(%d,m); temp=Isprime(m); if(temp==0) printf(%d不是素数。\n,m); else printf(%d是素数。\n,m);} int Isprime(int a) { int i,k,flag; if(a==0||a==1) flag=0; else{ k=sqrt(a); for(i=2;i=k;i++) if(a%i==0) flag=0; } return flag; } 8.4编写一个函数,使给定的一个二维数组(3x3)转置,即行列互换。 #define N 3 int a[N][N]; void main() { void exchange(int a[][3]); int i,j; printf(请输入一个数组:\n); for(i=0;iN;i++) for(j=0;jN;j++) scanf(%d,a[i][j]); printf(\n原始数组:\n); for(i=0;iN;i++) { for(j=0;jN;j++) printf(%3d,a[i][j]); printf(\n);} exchange(a); printf(交换后的数组:\n); for(i=0;iN;i++) { for(j=0;jN;j++) printf(%3d,a[i][j]); printf(\n); } } void exchange(int
显示全部
相似文档