阅读背景:

C/C++程序算法小练习--大整数减法

来源:互联网 

//大整数减法:#include <iostream>#include <cstring>using namespace std;void reverse_str(char *a,int size){for(int i=0;i<size/2;++i){char t=a[i];a[i]=a[size-i-1];a[size-i-1]=t;}}void large_num_sub(){char a[1000]={0};char b[1000]={0};char c[1001]={0};cin>>a;cin>>b;int a_len=strlen(a);int b_len=strlen(b);reverse_str(a,a_len);reverse_str(b,b_len);int max_len=a_len>b_len?a_len:b_len;//下面的判断确保大的数减小的数,并根据情况加上"-"if(a_len>b_len){for(int i=0;i<a_len||i<b_len;++i){c[i]+=a[i]-b[i];if(i>=a_len||i>=b_len){c[i]-='0';//字符串数字转化为实际的数字}if(c[i]<0){c[i]+=10;c[i+1]-=1;}}}else if(a_len<b_len){cout<<"-";for(int i=0;i<a_len||i<b_len;++i){c[i]+=b[i]-a[i];if(i>=a_len||i>=b_len){c[i]-='0';}if(c[i]<0){c[i]+=10;c[i+1]-=1;}}}else{if(strcmp(a,b)>=0){for(int i=0;i<a_len||i<b_len;++i){c[i]+=a[i]-b[i];if(i>=a_len||i>=b_len){c[i]-='0';}if(c[i]<0){c[i]+=10;c[i+1]-=1;}}}else{cout<<"-";for(int i=0;i<a_len||i<b_len;++i){c[i]+=b[i]-a[i];if(i>=a_len||i>=b_len){c[i]-='0';}if(c[i]<0){c[i]+=10;c[i+1]-=1;}}}}int j;for(j=max_len;j>0;--j){//去除多余的前导0if(c[j]!=0){break;}}for(int i=j;i>=0;--i){cout<<(int)c[i];}cout<<endl;}int main(){large_num_sub();return 0;}//大整数减法:#include <iostream>#include <cstr



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: