六:大数运算-减法运算

Posted 玉汝于成

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了六:大数运算-减法运算相关的知识,希望对你有一定的参考价值。

问题:大数-减法运算
题目描述

请计算两个整数相减(数的范围:0 <= num < 10^100)
输入
两行
第一行为整数n1
第二行为整数n2(本题中保证n1>=n2)
输出
一个整数
样例输入
20000000
10000000
样例输出
10000000

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define M 100000
 4 int Inter_Sum[M];
 5 void fun(char str1[],char str2[]){
 6     int t,m=0,i=strlen(str1);
 7     int k=0,p=strlen(str2)-1,j;
 8     while(i--){
 9             if(p>=0)
10          t=(str1[i]-48)-(str2[p]-48);
11          else t=(str1[i]-48);
12         if(t>=0){
13             Inter_Sum[k]=t;
14             m=0;
15         }else{
16         if((str1[i-1]-48)!=0&&i-1>=0){
17             str1[i-1]=str1[i-1]-1;
18             t=10+(str1[i]-48);
19         }
20         else if((str1[i-1]-48)==0&&i-1>=0){
21             int y=i;
22             while((str1[y-1]-48)==0&&y-1>=0){
23             str1[y-1]=str1[y-1]+9;
24             y--;
25             }
26         str1[y-1]=str1[y-1]-1;
27         }
28         t=10+(str1[i]-48);
29             Inter_Sum[k]=t-(str2[p]-48);
30         }    
31         k++;
32         p--;
33     }
34     t=0;
35     for(j=k-1;j>=0;j--){
36     
37         if(!t){
38             if(Inter_Sum[j]!=0)t++;
39         }
40         //printf("%d %d\n",j,t);
41         if(t)
42         printf("%d",Inter_Sum[j]);
43         
44     }
45     if(t==0) printf("%d",Inter_Sum[j]);
46     
47 }
48 int main(){
49     char str1[M];
50     char str2[M];
51     scanf("%s %s",str1,str2);
52     str1[strlen(str1)]=\0;
53     str2[strlen(str2)]=\0;
54     fun(str1,str2);
55     return 0;
56 }

 

以上是关于六:大数运算-减法运算的主要内容,如果未能解决你的问题,请参考以下文章

大数运算(加减乘除)

大数加减法 - java实现

大数四则运算

高精度运算(除法待完善)

高精度运算(除法待完善)

减法和除法运算的十六进制计算器问题