多个大数相加问题

来源:互联网 发布:海量数据股票目标价 编辑:程序博客网 时间:2024/05/22 04:39
#include <iostream>#include<string.h>using namespace std;#define MAXSIZE 104void Add(char *str1, char *str2, char *str3){    int i,j,i1,i2,tmp,carry;    int len1 = strlen(str1), len2 = strlen(str2);    char ch;    i1 = len1-1; i2 = len2-1;    j = carry = 0;    for(; i1>=0&& i2>=0; j++, i1--, i2--)    {        tmp = str1[i1] -'0' + str2[i2] -'0' + carry;        carry = tmp/10;        str3[j] = tmp%10 + '0';    }    while(i1>=0)    {        tmp = str1[i1--] - '0' + carry;        carry = tmp/10; ///        str3[j++] = tmp%10 +'0';    }    while(i2>=0)    {        tmp = str2[i2--] - '0' + carry;        carry = tmp/10;        str3[j++] = tmp%10 +'0';    }    if(carry)        str3[j++] = carry + '0';    str3[j] = '\0';    for(i = 0, j--;i<j; i++, j--)    {        ch = str3[i];        str3[i] = str3[j];        str3[j] = ch;    }}int main(){    int c;    cin>>c;    char str1[MAXSIZE], str2[MAXSIZE],str3[MAXSIZE];    while(c >0)    {        str1[0] = '0'; str1[1] = '\0';        while(cin>>str2 && strcmp("0",str2) != 0)        {            memset(str3,'0',sizeof(str3));            Add(str1, str2,str3);            strcpy(str1,str3);        }        cout<<str1<<endl;        c--;        if(c>0)            cout<<endl;    }  return 0;}

原创粉丝点击