听听高手的想法~
如题:读入自然数m和n(0<=m<n<=1000),判断分数m/n是有限小数还是无限小数。如果m/n是有限小数,则输出分数的值;如果m/n为循环小数,则把循环部分括在括号中打印出来~
main() { int i,j,m,n,a[1001],t; scanf("%d%d",&m,&n); for(t=m,i=0;i<1000;i++) { a[i]=t*10/n; t=(t*10)%n; if(t==0 || t==m )break; } printf("%d/%d=0.",m,n); if(t==0) for(j=0;j<=i;j++)printf("%d",a[j]); if(t==m) { printf("("); for(j=0;j<=i;j++)printf("%d",a[j]); printf(")"); } printf("\n"); }
main() { int i,j,m,n,a[1001],t,at[1001]={0},startloop; scanf("%d%d",&m,&n); for(t=m,i=0;i<1000;i++) { a[i]=t*10/n; t=(t*10)%n; at[i]=t; for(startloop=0;startloop<i;startloop++) if(t==at[startloop]) { t=-1; break; } if(t==-1 || t==0 || t==m )break; } printf("\n%d/%d=0.",m,n); if(t==0) for(j=0;j<=i;j++)printf("%d",a[j]); if(t==-1) for(j=0;j<=startloop;j++)printf("%d",a[j]); if(t==m) startloop=-1; if(t==m || t==-1) { printf("("); for(j=startloop+1;j<=i;j++)printf("%d",a[j]); printf(")"); } printf("\n"); }........