- 论坛徽章:
- 0
|
/********************************************************************
程序功能:得出 da/db 的一千位小数
在一定的数范围内可以使用da[]={123456};的方式
大数范围内使用da[]={1,2,3,4,5,6};(推荐使用)
参与过程中不要参进小数位
如:0.01234 --> 1234
12.34 --> 1234
小数位过后自己添加
************************************************************************/
#include "stdio.h"
int division(int da[],int db[])
{
int c[1000]={0},ic=0,k,flag=1;
for(int i=100;i>=0;i--)
if(da[i])break;
for(int j=100;j>=0;j--)
if(db[j])break;
while(ic<1000 && flag)
{
da[ic+1]+=da[ic]*10;
da[ic]=0;
while(da[ic+1]>db[0]){
for(k=j;k>=0;k--){
da[k+ic+1]-=db[k];
if(da[k+ic+1]<0)
da[k+ic+1]+=10,
da[k+ic]-=1;
}
c[ic]++;
}
if(da[ic+1]==db[0])
for(k=0;da[ic+1+k]==db[k];k++)
if(k==i+j+3){
c[ic]++;flag=0;break;}
ic++;
}
if(ic==1)
{
printf("%d",c[0]/10);
return 0;
}
for(i=ic-1;i>0;i--)
if(c[i]>=10)
c[i-1]+=c[i]/10,
c[i]%=10;
for(i=0;i<ic;i++)
printf("%d",c[i]);
}
main()
{
int da[2000]={1,8,5,3,8,7,6,6,6,6,4,4,5,1,3,4,7,9,0,1,7,2,6,3,1,6,2,9,8,2,4};//
int db[2000]={1,4,7,5,7,3,9,5,2,5,8,9,6,7,6,4,1,2,9,2,8};
division(da,db);
printf("\n");
} |
|