题目描述:
syd觉得只让你们算A+B实在太easy了。
于是她决定让你们算稍微麻烦一点的A+B:
给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。 计算他们的和,并以正常形式输出。
输入:
输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。
输出:
请计算A+B的结果,并以正常形式输出,每组数据占一行。
示例输入:
-234,567,890 123,456,789
1,234 2,345,678
示例输出:
-111111101
2346912
题解:
代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
char jud;//输入第一个字符,并用于判断输入是否结束
while(scanf("%c",&jud)!=EOF)//当字符不等于EOF时继续。注:需要用scanf函数实现。
{
char a[20]={0};//输入第一串字符,并将其转化为加数,且每一次运算后进行初始化为0
char b[20]={0};//同上
int i=1;//用于每一个字符的输入
double fir=0,sec=0;//两个加数
a[0]=jud;//将输入的第一个字符放入数组中第一个位置
while(1)//输入第一串字符,当输入为空格时终止
{
jud=getchar();
if(jud==' ')
break;
a[i]=jud;
i++;
}
gets(b);//输入第二串字符
if(a[0]=='-')//将负数的情况进行处理
{
for(int i=1;i<strlen(a);i++)//从第二个字符开始
{
if(a[i]<='9'&&a[i]>='0')//如果是数字,用于删除字符数组中的‘ , ’
{
int temp=a[i];
fir=fir*10+temp-48;//0的ascii码为48,将字符转化为数字,并从前往后将其储存在第一个加数中
}
}
fir=-fir;//取相反数
}
else//如果不是负数
{
for(int i=0;i<strlen(a);i++)//从第一个字符开始
{
if(a[i]<='9'&&a[i]>='0')
{
int temp=a[i];
fir=fir*10+temp-48;
}
}
}
if(b[0]=='-')//同上
{
for(int i=1;i<strlen(b);i++)
{
if(b[i]<='9'&&b[i]>='0')
{
int temp=b[i];
sec=sec*10+temp-48;
}
}
sec=-sec;
}
else
{
for(int i=0;i<strlen(b);i++)
{
if(b[i]<='9'&&b[i]>='0')
{
int temp=b[i];
sec=sec*10+temp-48;
}
}
}
printf("%.0f\n",fir+sec);//输出两数之和
}
}