UVA424

题目链接:UVA424

大数相加问题,模拟手算即可,具体看代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char number[255]={'0'};
int answer[260]={0};
void reverse(char* pointer);
int main()
{
    int maxIndex=0;
    while(scanf("%s",number)&&strcmp(number, "0"))
    {
        int length=strlen(number);
        reverse(number);
        int index;
        int carryBit=0;
        for(index=0;index<length;index++)
        {
            carryBit=answer[index]+(number[index]-'0')+carryBit;
            answer[index]=carryBit%10;
            carryBit=carryBit/10;
        }
        while(carryBit)
        {
            carryBit=answer[index]+carryBit;
            answer[index++]=carryBit%10;
            carryBit=carryBit/10;
        }
        if(index>maxIndex)
            maxIndex=index;
    }
    int flag=1;
    for(int i=maxIndex;i>0;i--)
    {
        if(flag)
        {
            if(answer[i])
            {
                cout<<answer[i];
                flag=0;
            }
        }
        else
            cout<<answer[i];
    }
    cout<<answer[0]<<endl;
    memset(number,'0',255);
    return 0;
}
void reverse(char* pointer)
{
    int length=strlen(pointer);
    char temp;
    for(int i=0,j=length-1;i<j;i++,j--)
    {
        temp=pointer[i];
        pointer[i]=pointer[j];
        pointer[j]=temp;
    }
}


原文地址:https://www.cnblogs.com/bbsno1/p/3263218.html