题目地址:http://acm.cs.ecnu.edu.cn/problem.php?problemid=1001
#include<stdio.h>
#include<string.h>
#define max 505
int aa[max];
int bb[max];
int lenaa;
int lenbb;
int t; //记录进位
int main()
{
void plus();
void print();
void change(char *a,char *b) ;
char a[max];
char b[max];
while(scanf("%s%s",a,b)!=EOF)
{
t=0;
if(strlen(a)>=strlen(b)) //若a的长度比b长,那么aa中放a,反之,放b
{
change(a,b);
}
else
{
change(b,a);
}
plus();
print();
}
return 0;
}
void change(char *a,char *b) //将char转换为int
{ //a的位数比b的大,aa中放的是位数比较大那个数据
int i;
lenaa=strlen(a);
lenbb=strlen(b);
for(i=0;i<strlen(a);i++)
{
aa[i]=a[i]-'0';
}
for(i=0;i<strlen(b);i++)
{
bb[i]=b[i]-'0';
}
}
void plus()
{
int i,j;
i=lenaa-1;
j=lenbb-1;
while(i>=0&&j>=0)
{
if(aa[i]+bb[j]+t>=10)
{
aa[i]=aa[i]+bb[j]+t-10;
t=1;
}
else
{
aa[i]=aa[i]+bb[j]+t;
t=0;
}
i--;
j--;
}
while(i>=0)
{
if(aa[i]+t>=10)
{
aa[i]=aa[i]+t-10;
t=1;
}
else
{
aa[i]=aa[i]+t;
t=0;
}
i--;
}
}
void print() //输出和
{
int i;
if(t==1)
{
printf("1");
}
for(i=0;i<lenaa;i++)
{
printf("%d",aa[i]);
}
printf("\n");
}