- /*****转帖请注明 原创于华南理工 吴泳添*****/
- #include <iostream>
- using namespace std;
- char * reverseOrderChar(char *a) //倒序输出字符串
- {
- int charLen = strlen(a);
- char *b = new char[charLen];
- for(int i = 0; i<charLen ; i++)
- {
- b[i] = a[charLen - i - 1];
- }
- b[charLen] = '/0';
- return b;
- }
- char * charNumPlus(char *a ,char *b ,int len,char *c)
- {
- a = reverseOrderChar(a); //先倒序,再相加
- b = reverseOrderChar(b);
- char *maxChar;
- int max,min;
- int wei, p=0;
- max = (strlen(a)/strlen(b)) ?strlen(a):strlen(b);
- min = (strlen(a)/strlen(b)) ?strlen(b):strlen(a);
- if (strlen(a)>=strlen(b)) //选出比较长的字符串
- maxChar = a;
- else
- maxChar = b;
- for (int i = 0 ; i < max ; i++)
- {
- if (i<min)
- {
- wei = (a[i]-'0') + (b[i]-'0')+ p;
- c[i] = wei%10 + '0' ;
- if (wei>=10)
- p = 1;
- else
- p = 0;
- }
- else
- {
- wei = (maxChar[i]-'0') + p;
- c[i] = ((maxChar[i]-'0') + p)%10+'0' ;
- if(wei >=10)
- p = 1;
- else
- p = 0;
- }
- }
- c[max] = p + '0' ;
- if (c[max]=='0')
- c[max] = '/0';
- else
- c[max+1] = '/0';
- c = reverseOrderChar(c);
- return c;
- }
- void main()
- {
- char *str1 = "9999999999999999999999999";
- char *str2 = "987422222222222222222";
- char *resultstr = new char[100];
- resultstr = charNumPlus(str1,str2,100,resultstr);
- cout<<resultstr<<endl;
- }
- /*****转帖请注明 原创于华南理工 吴泳添*****/