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

给定 2 个正整数 a, b ,a 和 b 最多可能有 40 位,求出 a +b 的和。
输入描述
两个正整数 a, b,a 和 b 最多可能有 40 位。一行表示一个数。
输出描述
a + b 的和。

#include <iostream>
#include <stdlib.h> 
#include <string.h>
using namespace std;
char * addChar(char *add1,char *add2,char *sum,int * carry);
int main()
{    
    char num[40] = {} ; 
    char num2[40] = {} ;     
    char sum[40] = {} ; 
    while( cin >> num )
    while(cin >> num2 ){
     if(strlen(num) == strlen(num2))
     {
        int carry = 0;
        addChar(num,num2,num,&carry);
        cout << num;
        return 0;
     }
     if(strlen(num) > strlen(num2)) 
     {
        int sub = strlen(num)-strlen(num2);
        int carry = 0;
        char *p = num + sub;
        addChar(num2,p,p,&carry);
        cout << num << endl;

     }
     else
     {
        int sub = strlen(num2)-strlen(num);
        int carry = 0;
        char *p = num2 + sub;
        addChar(num,p,p,&carry);
        cout << num2 << endl;
} 
}
char * addChar(char *add1,char *add2,char *sum,int * carry)
{
    if(strlen(add1) == strlen(add2))
    {
        for(int i = strlen(add1) - 1;i>=0;i--)
        {
            sum[i] = add1[i] + add2[i] - 48 + *carry;
            if(sum[i] > 57)
            {
                sum[i] -= 10;
                *carry = 1;
            }
            else
            {
                *carry = 0;
            }
        }
        return sum;
    } 
}
#include <iostream>
#include <stdlib.h> 
#include <string.h>
using namespace std;
char * addChar(char *add1,char *add2,char *sum,int * carry);
int main()
{    
    char num[40] = {} ; 
    char num2[40] = {} ;     
    char sum[40] = {} ; 
    while (1) {
        cout << "please enter the two numbers, press 'q' to exit:" << endl;
        cin >> num;
        if (strcmp(num, "q") == 0) break;
        cin >> num2;
        if(strlen(num) == strlen(num2))
        {
            int carry = 0;
            addChar(num,num2,num,&carry);
            cout << num << endl;
        }
        else if(strlen(num) > strlen(num2)) 
        {
            int sub = strlen(num)-strlen(num2);
            int carry = 0;
            char *p = num + sub;
            addChar(num2,p,p,&carry);
            cout << num << endl;
        }
        else
        {
            int sub = strlen(num2)-strlen(num);
            int carry = 0;
            char *p = num2 + sub;
            addChar(num,p,p,&carry);
            cout << num2 << endl;
        } 
    }
    return 0;
}
char * addChar(char *add1,char *add2,char *sum,int * carry)
{
    if(strlen(add1) == strlen(add2))
    {
        for(int i = strlen(add1) - 1;i>=0;i--)
        {
            sum[i] = add1[i] + add2[i] - 48 + *carry;
            if(sum[i] > 57)
            {
                sum[i] -= 10;
                *carry = 1;
            }
            else
            {
                *carry = 0;
            }
        }
        return sum;
    } 
}

please enter the two numbers, press 'q' to exit:
123
2345
2468
please enter the two numbers, press 'q' to exit:
1022
20111111
20112133
please enter the two numbers, press 'q' to exit:
1
7
8
please enter the two numbers, press 'q' to exit:
q
Press any key to continue . . .