⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ll.cpp

📁 此程序是一个加,减,乘,除的算法.
💻 CPP
📖 第 1 页 / 共 2 页
字号:

#include<conio.h>
#include<stdio.h>
enum Boolean { false , true } ;
int strlen ( char *c )
{
	int i ;
	for ( i = 0 ; *c !='\0' ; c++ , i++ ) ;
	return i ;
}
void strcpy ( char *c , char *c1 )
{
	for ( ; *c1 != '\0' ; c1 ++ , c++ )
		*c = *c1 ;
	*c ='\0';
}
void strcat ( char *c , char *c1 )
{
	for ( ; *c !='\0' ; c++ );
	for ( ; *c1 !='\0' ; c1 ++ , c++)
		*c = *c1 ;
	*c = '\0' ;
}
int strcmp ( char *c , char *c1 )
{
	for ( ; *c !='\0' && *c1 != '\0' ; c++ , c1++ )
	if ( *c != *c1 )  return  *c-*c1 ;
	return 0 ;
}
char * Add ( char * c1 , char * c2 )
{
	int i , j  , x , y , k , k1 , m , n , kk ;
	char c , *c11 , *c22 ,  c3 [ 50 ] , *c4 , c5 [ 50 ] , c6 [ 50 ] ;
	strcpy ( c5 , c1 ) ;
	strcpy ( c6 , c2 ) ;
	j = m = 0 ;
	for ( i = 0 ; c5 [ i ] != '\0' ; i ++ ) // 取被乘数的小数位数
	{
		if ( c5 [ i ] == '.' ) j = 1 ;
		else if ( j == 1 ) m ++ ;
	}
	j = n = 0 ;
	for ( i = 0 ; c6 [ i ] != '\0' ; i ++ )  //取乘数的小数位数
	{
		if ( c6 [ i ] == '.' ) j = 1 ;
		else if ( j == 1 ) n ++ ;
	}
	k = 0 ;
	if ( m != 0 || n != 0 )  //取两者最大的小数位数并扩大到整数
	{
		 k = ( m - n ) > 0 ? m : n ;
		for ( i = 0 ; c5 [ i ] != '\0'; i ++ )
		{
			if ( c5 [ i ] == '.' )
			{
				for ( j = i ; c5 [ j ] != '\0' ; j ++ )
				c5 [ j ] = c5 [ j + 1 ] ;
				break ;
			}
		}
		if ( m != k )
		{
			x = strlen ( c5 ) ;
			m = k - m ;
			for ( i = 0 ; i < m ; i ++ )
			{
				c5 [ x ] = '0' ;
				x ++ ;
			}
			c5 [ x ] = '\0' ;
		}
		for ( i = 0 ; c6 [ i ] != '\0' ; i ++ )
		{
			if ( c6 [ i ] == '.' )
			{
				for ( j = i ; c6 [ j ] != '\0' ; j ++ )
				c6 [ j ] = c6 [ j + 1 ] ;
				break ;
			}
		}
		if ( n != k )
		{
			y = strlen ( c6 ) ;
			n = k - n ;
			for ( i = 0 ; i < n ; i ++ )
			{
				c6 [ y ] = '0' ;
				y ++ ;
			}
			c6 [ y ] = '\0' ;
		}
	}
	kk = k ;
//	printf ( "c5=%s c6=%s k =%d\n" , c5 , c6 , k  ) ;
//	getch ( ) ;
	x = strlen ( c5 ) ;
	y = strlen ( c6 ) ;
	k = x - y > 0 ? x : y ;
	c5 [ k + 1 ] = '\0' ;
	k1 = k + 1 - x ;
	for ( i = 0 ; i < k1 ; i ++ )
	{
		for ( j = x ; j >= 0 ; j -- )
		{
			c5 [ j + 1 ] = c5 [ j ] ;
		}
		c5 [ 0 ] = '0' ;
		x ++ ;
	}
	c6 [ k + 1 ] = '\0' ;
	k1 = k + 1 - y ;
	for ( i = 0 ; i < k1 ; i ++ )
	{
		for ( j = y ; j >= 0 ; j -- )
		{
			c6 [ j + 1 ] = c6 [ j ] ;
		}
		c6 [ 0 ] = '0' ;
		y ++ ;
	}
	c11 = c5 ;
	c22 = c6 ;
	for ( ; *c11 != '\0' ; c11 ++ ) ;
	for ( ; *c22 != '\0' ; c22 ++ ) ;
	c11 -- ;
	c22 -- ;
	c3 [ k + 1 ] = '\0' ;
	m = 0 ;
	for ( i = y - 1 ;  i >= 0 ; c11 -- , c22 -- , i -- )
	{
		k = ( * c11 - '0') + ( * c22 - '0' ) ;
		k = k + m ;
		if ( k > 9 )
		{
			c3 [ i ] = k % 10 + '0' ;
			m = k / 10 ;
		}
		else
		{
			c3 [ i ] = k + '0' ;
			m = 0 ;
		}
	}
	while ( c3 [ 0 ] == '0' )
	{
		for ( i = 0 ; c3 [ i ] != '\0' ; i ++ )
		c3 [ i ] = c3 [ i + 1 ] ;
	}
	if ( kk != 0 ) //取加后加入小数点
	{

		for ( y = 0 ; c3 [ y ] != '\0' ; y ++ ) ;
		if ( y <= kk )
		{
			y = kk - y + 1 ;
			x = strlen ( c3 ) ;
			for ( i = 0 ; i < y ; i ++ )
			{
				for ( j = x ; j >= 0 ; j -- )
				{
					c3 [ j + 1 ] = c3 [ j ] ;
				}
				x++ ;
				c3 [ 0 ] = '0' ;
			}
		}
		x = strlen ( c3 ) ;
		for ( i = x , j = 0 ; j <= kk ; j ++ , i -- )
		{
			c3 [ i + 1 ] = c3 [ i ] ;
		}
		c3 [ i + 1 ] = '.' ;
		x = strlen ( c3 ) ;
		x -- ;
		while ( c3 [ x ] == '0' )
		{
			c3 [ x ] = '\0' ;
			x -- ;
		}
		if ( c3 [ x ] == '.' ) c3 [ x ] = '\0' ;
	}

	if ( c3 [ 0 ] == '\0' )
	{ c3 [ 0 ] = 0 ; c3 [ 1 ] = '\0' ; }
	return c3 ;
}
char * Cheng ( char * c1 , char * c2 )
{
	int i , j , k , m , n , l , x , y , kk ;
	char c [ 50 ] , c10 [ 50 ] , c20 [ 50 ] , *c11 , *c22 , *c3 , c4 [ 50 ] , *c5 , c6 [ 50 ]  , *c7 , c8 [ 2 ] ;
	strcpy ( c10 , c1 ) ;
	strcpy ( c20 , c2 ) ;
	j = m = 0 ;
	for ( i = 0 ; c10 [ i ] != '\0' ; i ++ ) // 取被乘数的小数位数
	{
		if ( c10 [ i ] == '.' ) j = 1 ;
		else if ( j == 1 ) m ++ ;
	}
	j = n = 0 ;
	for ( i = 0 ; c20 [ i ] != '\0' ; i ++ )  //取乘数的小数位数
	{
		if ( c20 [ i ] == '.' ) j = 1 ;
		else if ( j == 1 ) n ++ ;
	}
	k = 0 ;
	if ( m != 0 || n != 0 )  //取两者最大的小数位数并扩大到整数
	{
		 k = ( m - n ) > 0 ? m : n ;
		for ( i = 0 ; c10 [ i ] != '\0'; i ++ )
		{
			if ( c10 [ i ] == '.' )
			{
				for ( j = i ; c10 [ j ] != '\0' ; j ++ )
				c10 [ j ] = c10 [ j + 1 ] ;
				break ;
			}
		}
		if ( m != k )
		{
			x = strlen ( c10 ) ;
			m = k - m ;
			for ( i = 0 ; i < m ; i ++ )
			{
				c10 [ x ] = '0' ;
				x ++ ;
			}
			c10 [ x ] = '\0' ;
		}
		for ( i = 0 ; c20 [ i ] != '\0' ; i ++ )
		{
			if ( c20 [ i ] == '.' )
			{
				for ( j = i ; c20 [ j ] != '\0' ; j ++ )
				c20 [ j ] = c20 [ j + 1 ] ;
				break ;
			}
		}
		if ( n != k )
		{
			y = strlen ( c20 ) ;
			n = k - n ;
			for ( i = 0 ; i < n ; i ++ )
			{
				c20 [ y ] = '0' ;
				y ++ ;
			}
			c20 [ y ] = '\0' ;
		}
	}
	kk = 2*k ;
	c11 = c10 ;
	c22 = c20 ;
	c5 = c11 ;
	for ( i = 0 ; *c5 != '\0' ; c5 ++ , i ++ ) ;
	for ( ; i >= 0 ; c5 -- , i -- )
	* ( c5 + 1 ) = *c5 ;
	*c11 = '0' ;
	* ( c11 + strlen ( c10 ) + 1 ) = '\0' ;
	x = strlen ( c11 ) ;
	y = strlen( c22 ) ;
	for ( ; *c11 != '\0' ; c11 ++ ) ;
	for ( ; *c22 != '\0' ; c22 ++ ) ;
	c11 -- ;
	c22 -- ;
	c3 = c11 ;
	c [ x ] = '\0' ;
	l = 0 ;
	for ( i = y - 1 ; i >= 0 ; c22 -- , i -- )
	{
		c11 = c3 ;
		n = 0 ;
		for ( j = x - 1 ; j >= 0 ; c11 -- , j -- )
		{
			k = ( *c11 - '0')* ( *c22 -'0' ) ;
			k = k + n ;
			if ( k > 9 ) c [ j ] = k % 10 + '0' ;
			else c [ j ] = k + '0' ;
			n = k / 10 ;
		}
		if ( i == y - 1 )
		{
			strcpy ( c4 , c ) ;
		}
		else
		{
			l ++ ;
			for ( m = 0 ; m < l ; m ++ )
			c6 [ m ] = '0' ;
			c6 [ m ] = '\0' ;
			strcat ( c , c6 ) ;
			c7 = Add ( c , c4 ) ;
			strcpy ( c4 , c7 ) ;
		}
		for ( m = 0 ; m < 50 ; m ++ )
		c [ m ] = '\0' ;
	}
	while ( c4 [ 0 ] == '0' )
	{
		for ( i = 0 ; c4 [ i ] != '\0' ; i ++ )
			c4 [ i ] = c4 [ i + 1 ] ;
	}
	if ( kk != 0 ) //取乘后加入小数点
	{

		for ( y = 0 ; c4 [ y ] != '\0' ; y ++ ) ;
		if ( y <= kk )
		{
			y = kk - y + 1 ;
			x = strlen ( c4 ) ;
			for ( i = 0 ; i < y ; i ++ )
			{
				for ( j = x ; j >= 0 ; j -- )
				{
					c4 [ j + 1 ] = c4 [ j ] ;
				}
				x++ ;
				c4 [ 0 ] = '0' ;
			}
		}
		x = strlen ( c4 ) ;
		for ( i = x , j = 0 ; j <= kk ; j ++ , i -- )
		{
			c4 [ i + 1 ] = c4 [ i ] ;
		}
		c4 [ i + 1 ] = '.' ;
		x = strlen ( c4 ) ;
		x -- ;
		while ( c4 [ x ] == '0' )
		{
			c4 [ x ] = '\0' ;
			x -- ;
		}
	}
	if ( c4 [ 0 ] == '\0' )
	{
		c4 [ 0 ] = '0' ;
		c4 [ 1 ] = '\0' ;
	}
	return c4 ;

}
char * Jian ( char *c1 , char *c2 )
{
	int i , j , k , m , n , x , y , kk ;
	char c [ 50 ] , c10 [ 50 ] , c20 [ 50 ] , *c11 , *c22 , c5 [ 50 ] ;
	x = strlen ( c1 ) ;
	y = strlen ( c2 ) ;
	strcpy ( c5 , c2 ) ;
	strcpy ( c10 , c1 ) ;
	strcpy ( c20 , c2 ) ;
	j = m = 0 ;
	for ( i = 0 ; c10 [ i ] != '\0' ; i ++ ) // 取被减数的小数位数
	{
		if ( c10 [ i ] == '.' ) j = 1 ;
		else if ( j == 1 ) m ++ ;
	}
	j = n = 0 ;
	for ( i = 0 ; c20 [ i ] != '\0' ; i ++ )  //取减数的小数位数
	{
		if ( c20 [ i ] == '.' ) j = 1 ;
		else if ( j == 1 ) n ++ ;
	}
	k = 0 ;
	if ( m != 0 || n != 0 )  //取两者最大的小数位数并扩大到整数
	{
		 k = ( m - n ) > 0 ? m : n ;
		for ( i = 0 ; c10 [ i ] != '\0'; i ++ )
		{
			if ( c10 [ i ] == '.' )
			{
				for ( j = i ; c10 [ j ] != '\0' ; j ++ )
				c10 [ j ] = c10 [ j + 1 ] ;
				break ;
			}
		}
		if ( m != k )
		{
			x = strlen ( c10 ) ;
			m = k - m ;
			for ( i = 0 ; i < m ; i ++ )
			{
				c10 [ x ] = '0' ;
				x ++ ;
			}
			c10 [ x ] = '\0' ;
		}
		for ( i = 0 ; c20 [ i ] != '\0' ; i ++ )
		{
			if ( c20 [ i ] == '.' )
			{
				for ( j = i ; c20 [ j ] != '\0' ; j ++ )
				c20 [ j ] = c20 [ j + 1 ] ;
				break ;
			}
		}
		if ( n != k )
		{
			y = strlen ( c20 ) ;
			n = k - n ;
			for ( i = 0 ; i < n ; i ++ )
			{
				c20 [ y ] = '0' ;
				y ++ ;
			}
			c20 [ y ] = '\0' ;
		}
	}
	kk = k ;
	c11 = c10 ;
	c22 = c20 ;
	x = strlen ( c10 ) ;
	y = strlen ( c20 ) ;
	strcpy ( c5 , c20 ) ;
	k = x - y ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -