两个15位的正整数相加?

两个15位的正整数相加
【问题描述】能使用数组的方式对两个15位的正整数相加,并将结果显示出来。
提示:请将每一位数存放在一个数组元素中,然后逐位相加。
【输入形式】
输入两个15位的正整数,每个整数占一行。
【输出形式】
结果显示在下一行
【样例输入】
123456789012345
234567890123456
【样例输出】
358024679135801

如果问题得到解决,请点下采纳

#include <stdio.h>
#include <string.h>

inline int addchar(char c1,char c2,int f,char &s){//1位加法,f表示进位
    int t=c1+c2+f;
    if(t<106){
        s=(char)(t-48);
        return 0;
    }else{
        s=(char)(t-58);
        return 1;
    }
}
void bignumadd(const char* num1,const char* num2,char* sum){//大数相加
    size_t len1=strlen(num1),len2=strlen(num2),i=0;//得到输入字符串长度
    int f=0;//用于保存进位
    if(len1>len2){//如果第一个字符串长
        for(;i<len2;++i){//len2比较小,先遍历完
            f=addchar(num1[len1-i-1],num2[len2-i-1],f,sum[i]);
        }
        for(;i<len1;++i){//剩下部分
            f=addchar(num1[len1-i-1],'0',f,sum[i]);//第一个字符串多出来的直接和0加
        }
    }else{//如果第二个字符串长
        for(;i<len1;++i){//len1比较小,先遍历完
            f=addchar(num1[len1-i-1],num2[len2-i-1],f,sum[i]);
        }
        for(;i<len2;++i){//剩下部分
            f=addchar('0',num2[len2-i-1],f,sum[i]);//第二个字符串多出来的直接和0加
        }
    }
    //别忘记最高位还可能会进位
    for(;f>0;++i){
        f=addchar('0','0',f,sum[i]);
    }
}
void showsum(const char* s){//显示计算结果
    size_t len=strlen(s);
    for(int i=len-1;i>-1;--i){//从最后一位开始逆序输出
        putchar(s[i]);
    }
}
int main() {
    const char* num1="123456789012345";
    const char* num2="234567890123456";
    char s[100]={0};//分配100字节的栈空间存放结果
    //printf(" %s+%s\n=",num1,num2);
    bignumadd(num1,num2,s);
    showsum(s);
    //getchar();
    return 0;
}


100位以内相加都可以

#include<iostream>
using namespace std;
void fun1(char a1[],int a2[]);
void fun2(char b1 [],int b2[]);
void jinweiqiuhe(int a2[],int b2[],int c[],char a1[],char b1[]);
void fuzhi(int c[],int d[]);
int main()
{
    
    char a1[101],b1[101];
    int a2[101]={0}, b2[101]={0}, c[101]={0},d[101];
    int i;
    for(i = 0; i < 101; i++)
    {
        a1[i] = '*';
        b1[i] = '*';

    }
    cin >> a1 >> b1;
    fun1(a1,a2);
    fun2(b1,b2);
    jinweiqiuhe( a2, b2, c,a1,b1);
    fuzhi( c, d);
    for(int i = 0;d[i]!=10;i++ )
        cout<<d[i];
    
}
void fun1(char a1[],int a2[])
{
    
    int i,j;
    for( i = 0; a1[i] != '*'; i++)
    {
        for( j = 0; j <= i; j++)
        {
            a2[101-i+j] = a1[j]-'0';
        }
    }
   
}
void fun2(char b1 [],int b2[])
{
     
    int i, j;
    for( i = 0; b1[i] != '*'; i++)
    {
        for( j = 0; j <= i; j++)
        {
            b2[101-i+j] = b1[j]-'0';
        }
    }
   
}
void jinweiqiuhe(int a2[],int b2[],int c[],char a1[],char b1[])
{
     
    int k,j=0;
     for(int i=100; a1[j]!='*'||b1[j]!='*'; i--)
     {
         c[i] += a2[i] + b2[i];
         k = c[i];
         if(c[i]>9)
         {
             c[i] = k % 10;
             c[i - 1] = k / 10;
         }
         j++;
     }
     
   
}
void fuzhi(int c[],int d[])
{
     
    int i, j=0;
    for(i = 0; c[i]==0;i++);
    for(;i<= 100;i++)
    {
        d[j]=c[i];
        j++;
    }
    d[j]=10;

    
}


}