c语言大数除法算法

Python012

c语言大数除法算法,第1张

#include <stdio.h>

#include <string.h>

#define MAXSIZE 1025

void Div(char *str1, char *str2, char *str3)

{

int i1, i2, i, j, jj, tag, carry, cf, c[MAXSIZE]

int len1 = strlen(str1), len2 = strlen(str2), lend

char d[MAXSIZE]

memset(c, 0, sizeof(c))

memcpy(d, str1, len2)

lend = len2j = 0

for( i1=len2-1i1 <len1++i1 )

{

if( lend <len2 )

{

d[lend] = str1[i1+1]c[j] = 0

++j++lend

}

else

if( lend == len2 )

{

jj = 1

for( i=0i <lend++i )

{

if( d[i] >str2[i] ) break

else if( d[i] <str2[i] )

{

jj = 0break

}

}

if( jj == 0 )

{

d[lend] = str1[i1+1]c[j] = 0

++j++lend

continue

}

}

if( jj==1 || lend >len2 )

{

cf = jj=0

while( d[jj] <= '0' &&jj <lend ) ++jj

if( lend-jj >len2 ) cf = 1

else

if( lend-jj <len2 ) cf = 0

else

{

i2 = 0cf = 1

for( i=jji <lend++i )

{

if( d[i] <str2[i2] )

{

cf = 0break

}

else if( d[i] >str2[i2] )

{

break

}

++i2

}

}//else

while( cf )

{

i2 = len2-1cf = 0

for( i=lend-1i >= lend-len2--i )

{

d[i] = d[i]-str2[i2]+'0'

if( d[i] <'0' )

{

d[i] = d[i]+10carry = 1

--d[i-1]

}

else carry = 0

--i2

}

++c[j]jj=0

while( d[jj] <= '0' &&jj <lend ) ++jj

if( lend-jj >len2 ) cf = 1

else

if( lend-jj <len2 ) cf = 0

else

{

i2 = 0cf = 1

for( i=jji <lend++i )

{

if( d[i] <str2[i2] )

{

cf = 0break

}

else if( d[i] >str2[i2] )

{

break

}

++i2

}

}//else

}//while

jj = 0

while( d[jj] <= '0' &&jj <lend ) ++jj

for( i=0i <lend-jj++i ) d[i] = d[i+jj]

d[i] = str1[i1+1]lend = i+1

++j

}//else

}//for

i = tag = 0

while( c[i] == 0 ) ++i

for( i <j++i, ++tag ) str3[tag] = c[i]+'0'

str3[tag] = '\0'

}

int main()

{

char a[110], b[110], c[110]

scanf( "%s%s", a, b )

Div( a, b, c )

printf( "%s\n", c )

return 0

}

//只得到商的整数部分,小数部分没有

#include "stdio.h"

#include "math.h"

void main(void)

{

int a,b,c,d,e,g

float f

printf("int a,b")

scanf("%d %d",&a,&b)

c=a+b

d=a-b

e=a*b

f=a/(float)b

g=a%b

printf("c=%d\n d=%d\n e=%d\n f=%f\n g=%d\n",c,d,e,f,g)

}

整数除整数得到的一定是整数,这个和c语言中的自动类型转换有关,按照我上面写的,把b强制转换成浮点型,这样得到的结果就是浮点型,还有输出浮点型数时用 %f 。