我自己的:#include <stdio.h>#define M 10000int main(){ int n,m,r; float f; printf("f="); scanf("%f",&f); n=(int)(f*M); //分子; m=M; //分母; printf("%f=%d/%d\n",f,n,M); r=m%n; //计算分子分母的最大公约数; while(r) { m=n; n=r; r=m%n; } r=n; n=(int)(f*M),n/=r; //分数化简; m=M/r; printf("%f=%d/%d\n\n",f,n,m); system("PAUSE"); return 0;} /*END*/euclid的:#include <stdio.h>#include <math.h>int main (void){ int n = 1, m = 2; float x, d; d = 0.001; /* d是精确度 */ printf ("float:"); scanf ("%f", &x); while (fabs(1.0*n/m - x) >= d) { if (x < 1.0 * n/m) m++; else if (x > 1.0 * n/m) n++; else break; } printf ("=%d/%d\n", n, m); return 0;}/*END*/

评论