大数减法模板只支持正数的大数减法并且被减数大于减数
#include <iostream> #include <cstdlib> #include <cstring> #include <string> using namespace std; #define MAXN 100 char* Subtraction(string A,string B); int main() { string num1,num2; cin>>num1>>num2; Subtraction(num1,num2); return 0; } char* Subtraction(string A,string B) { int i,k; int len1,len2; int up; int length; len1 = A.length(); len2 = B.length(); int a[MAXN+4] ={0}; int b[MAXN+4] ={0}; int c[MAXN+4] ={0}; for(k=0,i=len1-1; i>=0; i--) a[k++] = A[i]-'0'; for(k=0,i=len2-1; i>=0; i--) b[k++] = B[i]-'0'; for(i=0,up=0; i<MAXN; i++) { c[i] = a[i]-b[i]-up; if(c[i]<0) { c[i] += 10; up=1; } else up = 0; } for(i=MAXN; i>=0; i--) if(c[i]) break; length = i+1; cout<<length<<endl; char* result = (char *)malloc((sizeof(char)*length)); for(i=length-1,k=0; i>=0; i--) result[k++] = c[i]+ '0'; //测试输出 cout<<A<<" - "<<B<<" = "; for(i=0; i<length; i++) cout<<result[i]; cout<<endl; return result; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。