网址:http://zju.acmclub.com/index.php?app=problem_title&id=1&problem_id=2144
这个题不难,一定要注意一些特殊的数字,比如31 71 或 55 55 等;
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
char a[20],b[20],temp[20];
while(scanf("%s%s",a,b) != EOF)
{
printf("%ld ",(atoi)(a) + (atoi)(b));
int la =strlen(a),lb = strlen(b),ltemp;
int i,j;
//将位数长的付给a
if(la < lb)
{
strcpy(temp,a);
strcpy(a,b);
strcpy(b,temp);
ltemp = la;
la = lb;
lb = ltemp;
}
//将位数短的移位,并且在前面的空余位置给上字符'0'
for(i = la - 1, j = lb - 1; i >= la - lb; i--, j--)
b[i] = b[j];
for(i = 0; i < la - lb; i++)
b[i] = '0';
int result,flag = 0;//标记第一位是否为0
for(i = 0; i < la; i++)
{
result = (int)(a[i] - '0') + (int)(b[i] - '0');
if(result >= 10)
result = result - 10;
if(flag == 0 && result ==0)
continue;
else
flag = 1;
printf("%d",result);
}
if(flag == 0)
printf("0");
printf("\n");
}
return 0;
}
转载于:https://blog.51cto.com/20111564/1404988