c语言大数加法题..

描述
计算a+b,不用考虑负数.
格式
输入格式
分两行输入。0<a,b<10500 ,注意数据范围!!!
输出格式
输出只有一行,代表a+b的值
样例
样例输入 Copy
1001
9099样例输出 Copy
10100

高精度加法吗……

#include <bits/stdc++.h>
using namespace std;
int numa[260], numb[260], ans[260], l1, l2, l, cnt2;
char a[260], b[260];
int main(){
    scanf("%s", &a);
    scanf("%s", &b);
    l1=strlen(a);
    l2=strlen(b);
    for(int i=l1-1; i>=0; --i){
        numa[l1-i-1]=a[i]-'0';
    }
    for(int i=l2-1; i>=0; --i){
        numb[cnt2]=b[i]-'0';
        cnt2++;
    }
    l=max(l1, l2);
    for(int i=0; i<l; ++i){
        ans[i]+=numa[i]+numb[i];
        ans[i+1]=ans[i]/10;
        ans[i]%=10;
    }
    if(ans[l]){
        l++;
    }
    for(int i=l-1; i>=0; --i){
        printf("%d", ans[i]);
    }
    return 0;
}

这数也不大啊,正常加就行,int可以是10位数


#include<stdio.h>
#include<string.h>
char str1[1002]="",str2[1002]="";   //将两字符串置空(虽然意义不大) 
void reciprocal(char str[])     //将字符串颠倒。例:"12345"变为"54321" 
{
    int len=strlen(str);
    for(int i=0; i<(len+1)/2; i++){   
        char p=str[i];
        str[i]=str[len-i-1];
        str[len-i-1]=p;

    }
}
void add(char str1[], char str2[])
{
    int len1=strlen(str1);
    int len2=strlen(str2);
    int temp,one=0;
    if(strcmp(str1,str2)>=0){   //如果str1比str2大或相等 
        reciprocal(str1);
        reciprocal(str2);
        for(int i=0; i<len2; i++){  //因为str1比str2大,只进行len2位数的操作 
            temp=str1[i]-'0'+str2[i]-'0'+one;   //temp表示两数字在相同位数上的和再加上前一位的进位(one) 
            one=temp/10;
            temp%=10;
            str1[i]=char(temp+'0');     //此处较懒,直接用str1储存最终结果 
        } 
        while(one!=0) { //注意此处还要考虑str1之后位数的进位情况,如:99999 + 11 
            str1[len2]=char(str1[len2++]-'0'+one+'0');
            one=(str1[len2]-'0'+one)/10;
        }   
    }
    else {
        reciprocal(str1);
        reciprocal(str2);
        for(int i=0; i<len1; i++){  //同上 
            temp=str2[i]-'0'+str1[i]-'0'+one;
            one=temp/10;
            temp%=10;
            str1[i]=char(temp+'0');
        }
        for(int i=len1; i<len2; i++){   //与上面while语句功能相似 
            temp=str2[i]-'0'+one;
            one=temp/10;
            temp%=10;
            str1[i]=char(temp+'0');
        }
        if(one!=0) str1[len2]='1';      
    }
    reciprocal(str1);   //将数字换位正常顺序 
}
int main()
{
    scanf("%s",str1);
    scanf("%s",str2);
    add(str1,str2);
    printf("%s\n",str1);        
    return 0;

 }