首先建立字符串录入大数字,然后反转字符串,然后利用 字符串中的元素-‘0‘ 后相加得到数组
再将数组中大于等于10的数字向前进位,最后得到结果字符串
</pre><pre name="code" class="cpp">
</pre><pre name="code" class="cpp">
</pre><pre name="code" class="cpp">
#include<stdio.h>
#include<string.h>
int main(){
struct longNum{
char num[1001];
int len;
};
int c;
scanf("%d",&c);
longNum theNum[c][2];
for(int i=0;i<c;i++){
scanf("%s %s",&theNum[i][0].num,&theNum[i][1].num);
}
for(int i=0;i<c;i++){
for(int j=0;j<2;j++){
theNum[i][j].len=strlen(theNum[i][j].num);
}
}
char temp;
for(int i=0;i<c;i++){
for(int j=0;j<2;j++){
for(int z=0;z<theNum[i][j].len/2;z++){
temp=theNum[i][j].num[z];
theNum[i][j].num[z]=theNum[i][j].num[theNum[i][j].len-1-z];
theNum[i][j].num[theNum[i][j].len-1-z]=temp;
}
}
}
int result[c][1001];
memset(result,0,sizeof(result));
for(int i=0;i<c;i++){
int count=0;
while(theNum[i][0].len>0&&theNum[i][1].len>0){
result[i][count]+=theNum[i][0].num[count]-'0'+theNum[i][1].num[count]-'0';
count++;
theNum[i][0].len--;
theNum[i][1].len--;
}
if(theNum[i][0].len>0){
while(theNum[i][0].len>0){
result[i][count]+=theNum[i][0].num[count]-'0';
count++;
theNum[i][0].len--;
}
}
if(theNum[i][1].len>0){
while(theNum[i][1].len>0){
result[i][count]+=theNum[i][1].num[count]-'0';
count++;
theNum[i][1].len--;
}
}
for(int j=0;j<1002;j++){
if(result[i][j]>=10){
result[i][j]-=10;
result[i][j+1]++;
}
}
for(int j=0;j<2;j++){
theNum[i][j].len=strlen(theNum[i][j].num);
}
for(int j=0;j<2;j++){
for(int z=0;z<theNum[i][j].len/2;z++){
temp=theNum[i][j].num[z];
theNum[i][j].num[z]=theNum[i][j].num[theNum[i][j].len-1-z];
theNum[i][j].num[theNum[i][j].len-1-z]=temp;
}
}
printf("Case %d:\n%s + %s = ",i+1,theNum[i][0].num,theNum[i][1].num);
int t=1001;
while(t--,result[i][t]==0);
for(;t>=0;t--){
printf("%d",result[i][t]);
}
if(i!=c-1)
printf("\n\n");
else
printf("\n");
}
}