请问如何实现这个代码的多组输入输出?

给定 2 个正整数 a, b ,a 和 b 最多可能有 40 位,求出 a +b 的和。

输入描述
两个正整数 a, b,a 和 b 最多可能有 40 位。一行表示一个数。

输出描述
a + b 的和。

样例输入
111111111111111111111111111111111111111
222222222222222222222222222222222222222
样例输出
333333333333333333333333333333333333333

#include<iostream>
#include<cstring>
using namespace std;
int main(){
    char s1[200],s2[200];
    int a[200]={0},b[200]={0},l1,l2,c,k,i;
gets(s1);
    gets(s2);
    l1=strlen(s1);
    l2=strlen(s2);
    if(l1<l2) k=l2;
    else k=l1;c=k;
    for(i=0;i<l1;k--,i++)
    a[k]=s1[l1-1-i]-'0';
    for(k=c,i=0;i<l2;k--,i++)
    b[k]=s2[l2-1-i]-'0';
    for(i=c;i>=0;i--){
        a[i]+=b[i];
        if(a[i]>=10){
            a[i]=10;
            a[i-1]++;
        }
    }
    if(a[0]!=0){
        for(i=0;i<=c;i++)
        cout<<a[i];
    }else{
        for(i=1;i<=c;i++)
        cout<<a[i];
    }
}

#include<iostream>
#include<cstring>
using namespace std;
int main(){
    while (1)
    {
        char s1[200],s2[200];
        int a[200]={0},b[200]={0},l1,l2,c,k,i;
        gets(s1);
        l1=strlen(s1);
        if (l1 == 0) break;
        gets(s2);
        l2=strlen(s2);
        if(l1<l2) k=l2;
        else k=l1;c=k;
        for(i=0;i<l1;k--,i++)
            a[k]=s1[l1-1-i]-'0';
        for(k=c,i=0;i<l2;k--,i++)
            b[k]=s2[l2-1-i]-'0';
        for(i=c;i>=0;i--){
            a[i]+=b[i];
            if(a[i]>=10){
                a[i]=10;
                a[i-1]++;
            }
        }
        if(a[0]!=0){
            for(i=0;i<=c;i++)
                cout<<a[i];
        }else{
            for(i=1;i<=c;i++)
                cout<<a[i];
        }
        cout << endl;
    }
}

按回车退出。

多组输入,加循环就行
具体把你的实现功能的代码放到循环里就行
你可以限制输入的次数,用for,while都行