📄 ll.cpp
字号:
c5 [ x ] = '\0' ;
for ( j = 0 ; j < k ; j ++ )
{
for ( i = x - 1 ; i >= 0 ; i -- )
c5 [ i + 1 ] = c5 [ i ] ;
c5 [ 0 ] = '0' ;
x ++ ;
}
c22 = c5 ;
for ( ; *c11 != '\0' ; c11 ++ ) ;
for ( ; *c22 != '\0' ; c22 ++ ) ;
c11 -- ;
c22 -- ;
n = 0 ;
c [ strlen ( c5 ) ] = '\0' ;
for ( i = strlen ( c5 ) - 1 ; i >= 0 ; i -- , c11 -- , c22 -- ) {
if ( ( *c11-'0'-n) - ( *c22 -'0' ) >= 0 )
{
k = ( *c11-'0'-n ) - ( *c22-'0' ) ;
n = 0 ;
}
else
{
k = ( *c11-'0'-n+10 ) - ( *c22-'0' ) ;
n = 1 ;
}
c [ i ] = k+'0' ;
}
if ( kk != 0 ) //取减后加入小数点
{
for ( y = 0 ; c [ y ] != '\0' ; y ++ ) ;
if ( y <= kk )
{
y = kk - y + 1 ;
x = strlen ( c ) ;
for ( i = 0 ; i < y ; i ++ )
{
for ( j = x ; j >= 0 ; j -- )
{
c [ j + 1 ] = c [ j ] ;
}
x++ ;
c [ 0 ] = '0' ;
}
}
x = strlen ( c ) ;
for ( i = x , j = 0 ; j <= kk ; j ++ , i -- )
{
c [ i + 1 ] = c [ i ] ;
}
c [ i + 1 ] = '.' ;
x = strlen ( c ) ;
x -- ;
while ( c [ x ] == '0' )
{
c [ x ] = '\0' ;
x -- ;
}
}
if ( kk == 0 )
{
while ( c [ 0 ] == '0' )
{
for ( i = 0 ; c [ i ] != '\0' ; i ++ )
c [ i ] = c [ i + 1 ] ;
}
}
if ( c [ 0 ] == '\0')
{
c [ 0 ] = '0' ;
c [ 1 ] = '\0' ;
}
return c ;
}
Boolean Numcmp ( char * c1 , char *c2 )
{
int i , j , m , n , k , x , y ;
char c [ 50 ] , *c3 , *c4 ;
x = strlen ( c1 ) ;
y = strlen ( c2 ) ;
c3 = c1 ;
c4 = c2 ;
k = ( x - y ) > 0 ? x : y ;
if ( x < k )
{
m = k - x ;
strcpy ( c , c1 ) ;
c [ k ] = '\0' ;
for ( i = 0 ; i < m ; i ++ )
{
for ( j = x - 1 ; j >= 0 ; j -- )
c [ j + 1 ] = c [ j ] ;
c [ 0 ] = '0' ;
x ++ ;
}
c3 = c ;
}
if ( y < k )
{
m = k - y ;
strcpy ( c , c2 ) ;
c [ k ] = '\0' ;
for ( i = 0 ; i < m ; i ++ )
{
for ( j = y - 1; j >= 0 ; j -- )
c [ j + 1 ] = c [ j ] ;
c [ 0 ] = '0' ;
y ++ ;
}
c4 = c ;
}
m = 0 ;
for ( i = 0 ; *c3 != '\0' ; i ++ , c3 ++ , c4 ++ )
{
if ( ( *c3-'0' ) > ( *c4-'0' ) ) { m = 1 ; break ; }
if ( ( *c3-'0' ) < ( *c4-'0' ) ) break ;
}
if ( *c3 == '\0' ) return true ;
if ( m == 0 ) return false ;
else return true ;
}
char * Chu ( char *c1 , char *c2 )
{
char c [ 50 ] , c3 [ 50 ] , c4 [ 50 ] , *c5 , *c6 , c7 [ 2 ] , c8 [ 50 ] , c9 [ 2 ] , c10 [ 50 ] , c11 [ 50 ] ;
int i , j , k , m , n , nn , x , y , Wei , l , ll = 0 ;
c7 [ 0 ] = '0' ;
c7 [ 1 ] = '\0' ;
strcpy ( c3 , c1 ) ;
strcpy ( c4 , c2 ) ;
j = m = 0 ;
for ( i = 0 ; c3 [ i ] != '\0' ; i ++ ) // 取被除数的小数位数
{
if ( c3 [ i ] == '.' ) j = 1 ;
else if ( j == 1 ) m ++ ;
}
j = n = 0 ;
for ( i = 0 ; c4 [ i ] != '\0' ; i ++ ) //取除数的小数位数
{
if ( c4 [ i ] == '.' ) j = 1 ;
else if ( j == 1 ) n ++ ;
}
k = 0 ;
if ( m != 0 || n != 0 ) //取两者最大的小数位数并扩大到整数
{
k = ( m - n ) > 0 ? m : n ;
for ( i = 0 ; c3 [ i ] != '\0'; i ++ )
{
if ( c3 [ i ] == '.' )
{
for ( j = i ; c3 [ j ] != '\0' ; j ++ )
c3 [ j ] = c3 [ j + 1 ] ;
break ;
}
}
if ( m != k )
{
x = strlen ( c3 ) ;
m = k - m ;
for ( i = 0 ; i < m ; i ++ )
{
c3 [ x ] = '0' ;
x ++ ;
}
c3 [ x ] = '\0' ;
}
for ( i = 0 ; c4 [ i ] != '\0' ; i ++ )
{
if ( c4 [ i ] == '.' )
{
for ( j = i ; c4 [ j ] != '\0' ; j ++ )
c4 [ j ] = c4 [ j + 1 ] ;
break ;
}
}
if ( n != k )
{
y = strlen ( c4 ) ;
n = k - n ;
for ( i = 0 ; i < n ; i ++ )
{
c4 [ y ] = '0' ;
y ++ ;
}
c4 [ y ] = '\0' ;
}
}
m = 0 ;
while ( ! Numcmp ( c3 , c4 ) ) //被除数小于除数时将被除数扩大到大于除数
{
m ++ ;
strcat ( c3 , c7 ) ;
}
y = strlen ( c4 ) ;
Wei = 0 ;
for ( i = 0 ; i < y ; i ++ ) //取被除数的除数位字符串
{
c8 [ i ] = c3 [ i ] ;
}
c8 [ i ] = '\0' ; //c8[50]为截取的被除数
Wei = i ;
while ( ! Numcmp ( c8 , c4 ) ) //若字符串小于除数继续扩大
{
c8 [ i ] = c3 [ i ] ;
c8 [ ++ i ] = '\0' ;
Wei = i ; //截取被除数的位置
}
printf ( "c8=%s\n" , c8 ) ;
l = nn = 0 ;
while ( 1 )
{
i = 1 ;
while ( 1 )
{
c9 [ 0 ] = i+'0' ;
c9 [ 1 ] = '\0' ;
c5 = Cheng ( c4 , c9 ) ;
strcpy ( c10 , c5 ) ;
c5 = Jian ( c8 , c10 ) ;
strcpy ( c11 , c5 ) ;// c11为被除数和除数的商
if ( ! Numcmp ( c11 , c4 ) )
{
c [ nn ++ ] = c9 [ 0 ] ;
break ;
}
i ++ ;
}
if ( strcmp ( c11 , c7 ) == 0 )
{
if ( c3 [ Wei ] == '\0' ) { c [ nn ] = '\0' ; break ;}//计算完成
else
{
i = Wei ;
while ( c3 [ i ] == '0' ) //判断被除数此位置以后是否全为零, 若全为零输出
{
if ( c3 [ i + 1 ] == '\0' )
{
c [ nn ] = '\0' ;
for ( j = Wei ; c3 [ j ] != '\0' ; j ++ )
{
c9 [ 0 ] = c3 [ j ] ;
c9 [ 1 ] = '\0' ;
strcat ( c , c9 ) ;
}
goto loop ;
}
i ++ ;
}
c8 [ 0 ] = c3 [ Wei ++ ] ;
c8 [ 1 ] = '\0' ;
i = 1 ;
while ( !Numcmp ( c8 , c4 ) )
{
c [ nn ++ ] = '0' ;
if ( c3 [ Wei ] != '\0' )
{
c9 [ 0 ] = c3 [ Wei ] ;
c9 [ 1 ] = '\0' ;
strcat ( c8 , c9 ) ;
Wei ++ ;
}
else
{
if ( l == 0 )
{ l = 1 ; c [ nn ++ ] = '.' ;
strcat ( c8 , c7 ) ;
}
else strcat ( c8 , c7 ) ;
}
}
}
}
else
{
strcpy ( c8 , c11 ) ;
if ( c3 [ Wei ] != '\0')
{
c9 [ 0 ] = c3 [ Wei ++ ] ;
c9 [ 1 ] = '\0' ;
strcat ( c8 , c9 ) ;
if ( ! Numcmp ( c8 , c4 ) )
{
while ( !Numcmp ( c8 , c4 ) )
{
c [ nn ++ ] = '0' ;
if ( c3 [ Wei ] != '\0' )
{
c9 [ 0 ] = c3 [ Wei ++ ] ;
c9 [ 1 ] = '\0' ;
strcat ( c8 , c9 ) ;
}
else
{
if ( l == 0 )
{
c [ nn ++ ] = '.' ;
strcat ( c8 , c7 ) ;
l = 1 ;
}
else strcat ( c8 , c7 ) ;
}
}
}
}
else
{
if ( l == 0 )
{ c [ nn ++ ] = '.' ; l = 1 ; }
strcat ( c8 , c7 ) ;
ll ++ ;
if ( ll > 20 ) { c [ nn ] = '\0' ; break ; }
while ( !Numcmp ( c8 , c4 ) )
{
if ( l == 0 )
{
c [ nn ++ ] = '.' ;
c [ nn ++ ] = '0' ;
strcat ( c8 , c7 ) ;
l = 1 ;
}
else
{
c [ nn ++ ] = '0' ;
strcat ( c8 , c7 ) ;
}
}
}
}
}
loop : if ( m != 0 ) //取商后加入小数点
{
for ( y = 0 ; c [ y ] != '.' && c [ y ] != '\0' ; y ++ ) ;
if ( y <= m )
{
y = m - y + 1 ;
x = strlen ( c ) ;
for ( i = 0 ; i < y ; i ++ )
{
for ( j = x ; j >= 0 ; j -- )
{
c [ j + 1 ] = c [ j ] ;
}
x++ ;
c [ 0 ] = '0' ;
}
}
ll = 0 ;
for ( i = 0 ; c [ i ] !='\0' ; i ++ )
{
if ( c [ i ] == '.' )
{
for ( j = i ; j > i - m ; j -- )
{
c7 [ 0 ] = c [ j ] ;
c [ j ] = c [ j - 1 ] ;
c [ j - 1 ] = c7 [ 0 ] ;
}
ll = 1 ;
break ;
}
}
if ( ll == 0 )
{
x = strlen ( c ) ;
for ( i = x , j = 0 ; j <= m ; j ++ , i -- )
{
c [ i + 1 ] = c [ i ] ;
}
c [ i + 1 ] = '.' ;
}
x = strlen ( c ) ;
x -- ;
while ( c [ x ] == '0' )
{
c [ x ] = '\0' ;
}
}
return c ;
}
void main ( )
{
char c[ 50 ] , c1 [ 50 ] , *c2;
int x , y , k , i , j , k1 ;
clrscr ( ) ;
gets ( c ) ;
gets ( c1 ) ;
c2 = Add ( c , c1 ) ;
printf ( "%s %s %s " , c2 , c , c1 ) ;
c2 = Cheng ( c , c1 ) ;
printf ( "%s %s %s ", c2 , c , c1 ) ;
// c2 = Jian ( c , c1 ) ;
// printf ( "%s %s %s " , c2 , c , c1 ) ;
// k = Numcmp ( c , c1 ) ;
// printf ( "%d %s %s " , k , c , c1 ) ;
c2 = Chu ( c , c1 ) ;
printf ( "c2 =%s %s %s " , c2 , c , c1 ) ;
getch ( ) ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -