两个整数相除,将结果用字符串返回。如果是循环小数,将循环的位用括号括起来。
函数原型为 void div(const int a,const int b,char *str)
输入:1 3
输出:0.(3)
本题写的简单点——》直接输出结果#include<iostream> #include<cstdio> #include<map> using namespace std; void divv(const int a,const int b) { int w[100]; int q[100]; int i,j,k; int m=a; int n=b; int cnt=6; int r=0; int pos; int t; if(m*n<0) printf("-"); m=m<0?-m:m; n=n<0?-n:n; i=0; j=0; k=0; printf("%d.",m/n); m=m%n; if(m==0) { printf("(0)"); } else { while(k<cnt) { m*=10; t=m/n; m=m%n; if(m==0) { q[i++]=t; pos=i; break; } for(r=0;r<j;++r) if(w[r]==m) break; if(r<j) { pos=r; break; } q[i++]=t; w[j++]=m; k++; } if(k<cnt) { for(r=0;r<pos;++r) printf("%d",q[r]); if(pos==i) printf("(0)"); else{ printf("("); for(;r<i;++r) printf("%d",q[r]); printf(")"); } } else { for(r=0;r<cnt;++r) printf("%d",q[r]); } } printf("\n"); } int main(int argc, char *argv[]) { divv(1,3); divv(1225,1000); divv(8,3); divv(8,4); divv(1,1); return 0; }
原文地址:http://blog.csdn.net/wdkirchhoff/article/details/42408161