对于超过int和ll的范围整数进行运算,想到用字符串来转换;
注意点:
1:转换时的顺序和输出的顺序;
2:进位的标记;
3:从字符转为数字,0的ASCII值为48;所以要减去48;
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
char a[1000],b[1000];//存储数字的字符串
int main()
{
int n,x,s,y,i,j,k,e;
k=1;
scanf("%d",&n);
while(n--)
{
int c[1000]={0},d[1000]={0};
scanf("%s%s",a,b);
x=strlen(a);
y=strlen(b);
for(i=0;i<x;i++)
c[i]=a[x-i-1]-48;//转换时小位在字符串的末尾
for(i=0;i<y;i++)
d[i]=b[y-i-1]-48;
e=0; //e来标记进位
for(i=0;i<1000;i++)
{
s=c[i]+d[i]+e;
c[i]=s%10;
e=s/10;
}
printf("Case %d:\n%s + %s = ",k++,a,b);
for( i=1000-1;i>=0;i--){
if(c[i]) break;
}
for(j=i;j>=0;j--){
printf("%d",c[j]);//输出是要先输出大的,所以从末尾遍历
}
printf("\n");
if(n!=0) printf("\n");
}
return 0;
}