两个整数相除,将结果用字符串返回。如果是循环小数,将循环的位用括号括起来。
函数原型为 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;
}
测试结果为: