#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 。