#include <iostream>
#include <stdlib.h>
#include<stdio.h>
#define LEN 100
using namespace std;
int main(int argc, char *argv[])
{
char a[LEN],b[LEN],c[LEN];
int i,j,k,n,m,flag,p;
cin>>n;
for(p=1;p<=n;p++)
{
cin>>a;
cin>>b;
i=strlen(a)-1;
j=strlen(b)-1;
k=0;
flag=0; 用于判断进位标志
while(i>=0&&j>=0)
{
m=a[i]+b[j]-96;
if(m>=10)
{
c[k]=m%10+48;
if(flag==1) c[k]+=1;
flag=1;
}
else
{
c[k]=m+48;
if(flag==1) c[k]+=1;
#include <stdlib.h>
#include<stdio.h>
#define LEN 100
using namespace std;
int main(int argc, char *argv[])
{
char a[LEN],b[LEN],c[LEN];
int i,j,k,n,m,flag,p;
cin>>n;
for(p=1;p<=n;p++)
{
cin>>a;
cin>>b;
i=strlen(a)-1;
j=strlen(b)-1;
k=0;
flag=0; 用于判断进位标志
while(i>=0&&j>=0)
{
m=a[i]+b[j]-96;
if(m>=10)
{
c[k]=m%10+48;
if(flag==1) c[k]+=1;
flag=1;
}
else
{
c[k]=m+48;
if(flag==1) c[k]+=1;
if(c[k]==58) {c[k]='0'; flag=1;} 用于间加上进位后得到10时再进位计算
else flag=0;
}
k++;
i--;
j--;
}
if(i==0&&j==0&&flag==1) c[k]=1; ///记得加上最前的进位
/*对于长度不同的两数相加,利用直接截取*/
while(i>=0)
c[k++]=a[i--];
while(j>=0)
c[k++]=b[j--];
cout<<"case "<<p<<":"<<endl;
cout<<a<<" + "<<b<<" = ";
if(flag==1) cout<<"1"; 最前的进位记得输出!?
for(i=k-1;i>=0;i--)
cout<<c[i];
cout<<endl;
}
system("PAUSE");
return 0;
}
else flag=0;
}
k++;
i--;
j--;
}
if(i==0&&j==0&&flag==1) c[k]=1; ///记得加上最前的进位
/*对于长度不同的两数相加,利用直接截取*/
while(i>=0)
c[k++]=a[i--];
while(j>=0)
c[k++]=b[j--];
cout<<"case "<<p<<":"<<endl;
cout<<a<<" + "<<b<<" = ";
if(flag==1) cout<<"1"; 最前的进位记得输出!?
for(i=k-1;i>=0;i--)
cout<<c[i];
cout<<endl;
}
system("PAUSE");
return 0;
}
忙了近小时,结果还白忙了,不符题,得用整数呢?
不过也算心血一桩,纪念下咯。/