# 问题 Z: A+B without carry

## 题目描述

Xiao Ming always tends to ignore the carry when he does decimal addition with paper and pencil.For example,15+17,Xiao Ming will answer 22,because he ignores the carry from the single digits.5+7=12,and the digit 1 is the carry.

## 输入

The input will consist of a series of pairs of integers a and b(both less than 1000000000),separated by a space, one pair of integers per line.

## 输出

For each pair of input integers a and b you should output the correct answer of the sum of a and b,a space character and Xiao Ming’s answer of the sum of a and b in one line,and with one line of output for each line in input.If Xiao Ming’s answer begins with zero,don’t output unnecessary zero.

15 16
1 999
31 71

31 21
1000 990
102 2

## 代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int a,b,len1,len2,index,i,j;
char str1[11],str2[11],c[11];

while(scanf("%s %s",str1,str2)!=EOF){
len1 = strlen(str1);
len2 = strlen(str2);
index = 0;
//计算过程
for(i = len1-1,j = len2-1;i >= 0 && j >= 0;i--,j--){
int sum = str1[i] - '0' + str2[j] - '0';
//忽略进位
if(sum > 9){
sum -= 10;
}
c[index++] = sum + '0';
}
while(i >= 0){
c[index++] = str1[i];
i--;
}
while(j >= 0){
c[index++] = str2[j];
j--;
}
//去掉前导0
index = index -1;
while(c[index] == '0' && index > 0){
index--;
}
//正确答案
printf("%d ",atoi(str1) + atoi(str2));
//答案
for(i = index;i >= 0;i--){
printf("%c",c[i]);
}
printf("\n");

}
return 0;
}

#include <stdio.h>
int a,b;
void run()
{
int c,k;
c=a+b;
printf("%d ",c);//这个程序是由正常的和来反求不进位的和（或者直接按位相加也是可以的 ）。
k=1;
while(k<=a||k<=b)
{
if(a/k%10+b/k%10>9)
c-=k*10;//在某一位上的进位被忽略，相当于总和减小了这一位权值的十倍，个位进位被忽略，总和就少了10。
k*=10;
}
printf("%d\n",c);
}
int main()
{
while(scanf("%d%d",&a,&b)!=EOF)
run();
return 0;
}


05-16 1026

03-25 1640
04-30 22
12-18 3502
05-17 5939
07-15 317
12-25 451
06-04 974
05-19 1336
06-29 11
03-08 1397
09-29 1万+