华为机试—整数相除

来源:互联网 发布:网络机房验收标准 编辑:程序博客网 时间:2024/04/28 13:00

两个整数相除,将结果用字符串返回。如果是循环小数,将循环的位用括号括起来。

函数原型为 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;}

测试结果为:



0 1
原创粉丝点击