描述
输入两个用字符串 str 表示的整数,求它们所表示的数之和。
数据范围:1≤len(str)≤10000
输入描述:
输入两个字符串。保证字符串只含有'0'~'9'字符
输出描述:
输出求和后的结果
示例1
输入:
9876543210 1234567890
输出:
11111111100
#include <stdio.h>
#include<string.h>
int main() {
char str1[10000];
char str2[10000];
// 1.输入
gets(str1);
gets(str2);
// 2.char数组 ==> int数组
int num1[10000];
int num2[10000];
int L1=0,L2=0;
for(int i=strlen(str1)-1;i>=0;i--)
{
num1[L1++]=str1[i]-'0';
}
for(int i=strlen(str2)-1;i>=0;i--)
{
num2[L2++]=str2[i]-'0';
}
// 3.计算
int res[10000]={0};
int L3=0;
int L= (L1>=L2?L1:L2);
int cin=0;//进位
for(int i=0 ; i < L ; i++)
{
//当两个数长度不同时
if(L1<=i) //如果L1是短的
{
num1[i]=0;
}
if(L2<=i) //如果L2是短的
{
num2[i]=0;
}
int t=num1[i]+num2[i]+cin;
if(t>9) //相加结果大于10
{
res[L3++]=t%10;
cin=t/10;
}
else { //相加结果小于10
res[L3++]=t;
cin=0;
}
//当两个数长度相等,且最高位相加大于10时
if(i == L-1 && t>9)
{
L3=L;
res[L3]=t/10;
}
}
// 4.输出结果
for(int i=L3;i>=0;i--)
{
//从L3开始,则最高位为0时不输出
if(i==L3 && res[i]==0)
continue;
printf("%d",res[i]);
}
return 0;
}