大数四则运算(C语言)

时间:2021-10-26 20:40:44

完全按照自己的想法做的,所以不太成熟,希望有兴趣的朋友提出意见!

 

 

大数四则运算(C语言)# include<stdio.h>
大数四则运算(C语言)#
include<string.h>
大数四则运算(C语言)
大数四则运算(C语言)//最大数长度

大数四则运算(C语言)#
define MAX 200
大数四则运算(C语言)
大数四则运算(C语言)//读入输入的大整数,a[0]存储大整数的长度

大数四则运算(C语言)
void read(int  * a)
大数四则运算(C语言){
大数四则运算(C语言)    unsigned int i
, len;
大数四则运算(C语言)    char s[
MAX ];
大数四则运算(C语言)    scanf(
" %s " ,& s);
大数四则运算(C语言)    a[
0 =   strlen (s);
大数四则运算(C语言)    
大数四则运算(C语言)    
for (i = 0 ; i < a[ 0 ]; i ++ )
大数四则运算(C语言)    {
大数四则运算(C语言)        
if (s[i] >= ' 0 '   &&  s[i] <= ' 9 ' )
大数四则运算(C语言)            a[a[
0 ] - i]  =  s[i] - ' 0 ' ;
大数四则运算(C语言)        
else
大数四则运算(C语言)        {
大数四则运算(C语言)            
printf ( " 输入出错! " );
大数四则运算(C语言)            
exit ( 0 );
大数四则运算(C语言)        }
大数四则运算(C语言)    }
大数四则运算(C语言)}
大数四则运算(C语言)
大数四则运算(C语言)
// 加法
大数四则运算(C语言)
void add(int  * a ,  int  * b ,  int  * c)
大数四则运算(C语言) {
大数四则运算(C语言)    int k 
=   0 ,  i ,  max_len;
大数四则运算(C语言)    max_len 
=  a[ 0 ];
大数四则运算(C语言)    
if (b[ 0 >  max_len)
大数四则运算(C语言)        max_len 
=  b[ 0 ];
大数四则运算(C语言)    
for (i = 0 ; i < max_len; i ++ )
大数四则运算(C语言)    {
大数四则运算(C语言)        k 
=  k  +  a[i + 1 +  b[i + 1 ];
大数四则运算(C语言)        c[i
+ 1 =  k % 10 ;
大数四则运算(C语言)        k 
=  k / 10 ;
大数四则运算(C语言)    }
大数四则运算(C语言)    
if (k  !=   0 )
大数四则运算(C语言)    {
大数四则运算(C语言)        c[i
+ 1 =  k;
大数四则运算(C语言)        c[
0 =  i + 1 ;
大数四则运算(C语言)        
for (; i < MAX - 2 ; i ++ )
大数四则运算(C语言)            c[i
+ 2 =   0 ;
大数四则运算(C语言)    }
大数四则运算(C语言)    
else
大数四则运算(C语言)    {
大数四则运算(C语言)        c[
0 =  i;
大数四则运算(C语言)        
for (; i < MAX - 1 ; i ++ )
大数四则运算(C语言)            c[i
+ 1 =   0 ;
大数四则运算(C语言)    }
大数四则运算(C语言)}
大数四则运算(C语言)
大数四则运算(C语言)
// 比较两个数组表示的整数的大小,a>b返回1,否则返回0
大数四则运算(C语言)
int compare(int  * a ,  int  * b)
大数四则运算(C语言){
大数四则运算(C语言)    int i;
大数四则运算(C语言)    
if (a[ 0 >  b[ 0 ])
大数四则运算(C语言)        
return   1 ;
大数四则运算(C语言)    
else   if (a[ 0 ==  b[ 0 ])
大数四则运算(C语言)    {
大数四则运算(C语言)        
for (i = 0 ; i < a[ 0 ]; i ++ )
大数四则运算(C语言)        {
大数四则运算(C语言)            
if (a[a[ 0 ] - i]  >  b[b[ 0 ] - i])
大数四则运算(C语言)                
return   1 ;
大数四则运算(C语言)        }
大数四则运算(C语言)        
return   2 ;
大数四则运算(C语言)    }
大数四则运算(C语言)    
else  
大数四则运算(C语言)        
return   0 ;
大数四则运算(C语言)}
大数四则运算(C语言)
大数四则运算(C语言)
// 减法
大数四则运算(C语言)
void subABigerB(int  * a ,  int  * b ,  int  * c)
大数四则运算(C语言){
大数四则运算(C语言)    int i;
大数四则运算(C语言)    
for (i = 1 ; i < a[ 0 ] + 1 ; i ++ )
大数四则运算(C语言)    {
大数四则运算(C语言)        
if (a[i]  >=  b[i])
大数四则运算(C语言)        {
大数四则运算(C语言)            
// k = 0;
大数四则运算(C语言)
            c[i]  =  a[i]  -  b[i];
大数四则运算(C语言)        }
大数四则运算(C语言)        
else
大数四则运算(C语言)        {
大数四则运算(C语言)            
// k = 1;
大数四则运算(C语言)
             while (a[i + 1 ==   0 )
大数四则运算(C语言)                i
++ ;
大数四则运算(C语言)            
大数四则运算(C语言)            a[i
+ 1 ] -- ;
大数四则运算(C语言)            c[i] 
=  a[i]  +   10   -  b[i];
大数四则运算(C语言)        }
大数四则运算(C语言)    }
大数四则运算(C语言)    c[
0 =  a[ 0 ];
大数四则运算(C语言)}
大数四则运算(C语言)
大数四则运算(C语言)
大数四则运算(C语言)
// 减法
大数四则运算(C语言)
void sub(int  * a ,  int  * b ,  int  * c)
大数四则运算(C语言){
大数四则运算(C语言)    int i;
大数四则运算(C语言)    
for (i = 0 ; i < MAX ; i ++ )
大数四则运算(C语言)    {
大数四则运算(C语言)        c[i] 
=   0 ;
大数四则运算(C语言)    }
大数四则运算(C语言)    
if (compare(a ,  b)  ==   1 )
大数四则运算(C语言)    {
大数四则运算(C语言)        subABigerB(a
,  b ,  c);
大数四则运算(C语言)        
大数四则运算(C语言)        
// 打印
大数四则运算(C语言)
         printf ( " Difference:  " );
大数四则运算(C语言)        i 
=  c[ 0 ];
大数四则运算(C语言)        
while (c[i]  ==   0 )
大数四则运算(C语言)            i
-- ;
大数四则运算(C语言)        
for (; i > 0 ; i -- )
大数四则运算(C语言)        {
大数四则运算(C语言)            
printf ( " %d " , c[i]);
大数四则运算(C语言)        }
大数四则运算(C语言)        
printf ( " " );
大数四则运算(C语言)    }
大数四则运算(C语言)    
else   if (compare(a ,  b)  ==   0 )
大数四则运算(C语言)    {
大数四则运算(C语言)        subABigerB(b
,  a ,  c);
大数四则运算(C语言)        
大数四则运算(C语言)        
// 打印
大数四则运算(C语言)
         printf ( " Difference:  " );
大数四则运算(C语言)        i 
=  c[ 0 ];
大数四则运算(C语言)        
while (c[i]  ==   0 )
大数四则运算(C语言)            i
-- ;
大数四则运算(C语言)        
printf ( " - " );
大数四则运算(C语言)        
for (; i > 0 ; i -- )
大数四则运算(C语言)        {
大数四则运算(C语言)            
printf ( " %d " , c[i]);
大数四则运算(C语言)        }
大数四则运算(C语言)        
printf ( " " );
大数四则运算(C语言)    }
大数四则运算(C语言)    
else
大数四则运算(C语言)        
// 打印
大数四则运算(C语言)
         printf ( " Difference: 0 " );
大数四则运算(C语言)}
大数四则运算(C语言)
大数四则运算(C语言)
// 数组与单个整数的乘法
大数四则运算(C语言)
void singleMul(int  * a ,  int m ,  int  * c)
大数四则运算(C语言){
大数四则运算(C语言)    int k 
=   0 ,  i;
大数四则运算(C语言)    
大数四则运算(C语言)    
for (i = 0 ; i < a[ 0 ]; i ++ )
大数四则运算(C语言)    {
大数四则运算(C语言)        k 
=  k  +  a[i + 1 *  m;
大数四则运算(C语言)        c[i
+ 1 =  k % 10 ;
大数四则运算(C语言)        k 
=  k / 10
大数四则运算(C语言)    }
大数四则运算(C语言)    
大数四则运算(C语言)    
if (k  !=   0 )
大数四则运算(C语言)    {
大数四则运算(C语言)        c[i
+ 1 =  k;
大数四则运算(C语言)        c[
0 =  i + 1 ;
大数四则运算(C语言)    }
大数四则运算(C语言)    
else
大数四则运算(C语言)        c[
0 =  i;
大数四则运算(C语言)}
大数四则运算(C语言)
大数四则运算(C语言)
// 整数数组之间的乘法
大数四则运算(C语言)
void mul(int  * a ,  int  * b)
大数四则运算(C语言){
大数四则运算(C语言)    int k 
=   0 ,  i ,  c[ MAX ] ,  d[ MAX ] ,  e[ MAX ] ,  max_len;
大数四则运算(C语言)    int f 
=   0 ,  j;
大数四则运算(C语言)    
大数四则运算(C语言)    memset(c
, 0 , sizeof (c));
大数四则运算(C语言)    memset(d
, 0 , sizeof (d));
大数四则运算(C语言)    memset(e
, 0 , sizeof (e));
大数四则运算(C语言)    max_len 
=  a[ 0 ];
大数四则运算(C语言)    
if (b[ 0 >  max_len)
大数四则运算(C语言)        max_len 
=  b[ 0 ];
大数四则运算(C语言)    
大数四则运算(C语言)    
// d = singleMul(a, b[1]);
大数四则运算(C语言)
     for (i = 0 ; i < b[ 0 ]; i ++ )
大数四则运算(C语言)    {
大数四则运算(C语言)        singleMul(a
,  b[i + 1 ] ,  c);
大数四则运算(C语言)        
if (i - 1 >= 0 )
大数四则运算(C语言)            d[
0 =  d[ 0 ] - 1 ;
大数四则运算(C语言)            d[
1 =  d[ 0 ];
大数四则运算(C语言)        add(
& d[ 1 ] ,  c ,  d);
大数四则运算(C语言)        e[i
+ 1 =  d[ 1 ];
大数四则运算(C语言)    }
大数四则运算(C语言)    
大数四则运算(C语言)    
大数四则运算(C语言)    
for (j = 0 ; j < d[ 0 ] - 1 ; i ++, j ++ )
大数四则运算(C语言)    {
大数四则运算(C语言)        e[i
+ 1 =  d[ 2 + j];
大数四则运算(C语言)    }
大数四则运算(C语言)    
大数四则运算(C语言)    e[
0 =  i;
大数四则运算(C语言)    
大数四则运算(C语言)    
// 打印
大数四则运算(C语言)
     for (i = e[ 0 ]; i > 0 ; i -- )
大数四则运算(C语言)    {
大数四则运算(C语言)        
printf ( " %d " , e[i]);
大数四则运算(C语言)    }
大数四则运算(C语言)    
printf ( " " );
大数四则运算(C语言)}
大数四则运算(C语言)
大数四则运算(C语言)
大数四则运算(C语言)int main()
大数四则运算(C语言){
大数四则运算(C语言)    int a[
MAX ] , b[ MAX ] , c[ MAX ] , a_len , b_len , max_len;
大数四则运算(C语言)    int i;
大数四则运算(C语言)    
// 清零
大数四则运算(C语言)
    memset(a , 0 , sizeof (a));
大数四则运算(C语言)    memset(b
, 0 , sizeof (b));
大数四则运算(C语言)    memset(c
, 0 , sizeof (c));
大数四则运算(C语言)    read(a);
大数四则运算(C语言)    read(b);
大数四则运算(C语言)    
大数四则运算(C语言)    
// 加法
大数四则运算(C语言)
    add(a ,  b ,  c);
大数四则运算(C语言)    
大数四则运算(C语言)    
printf ( " Sum:  " );
大数四则运算(C语言)    
// 打印
大数四则运算(C语言)
     for (i = c[ 0 ]; i > 0 ; i -- )
大数四则运算(C语言)    {
大数四则运算(C语言)        
printf ( " %d " , c[i]);
大数四则运算(C语言)    }
大数四则运算(C语言)    
printf ( " " );
大数四则运算(C语言)    
大数四则运算(C语言)    
// printf("%d",compare(a, b));
大数四则运算(C语言)    
大数四则运算(C语言)    //减法

大数四则运算(C语言)
    sub(a ,  b ,  c);
大数四则运算(C语言)    
大数四则运算(C语言)    
// 乘法
大数四则运算(C语言)
     printf ( " Product:  " );
大数四则运算(C语言)    mul(a
,  b);
大数四则运算(C语言)    
// system("pause"); 
大数四则运算(C语言)
}