杭电ACM3787 A+B 求解我的代码哪里错了?

Problem Description
给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
现在请计算A+B的结果,并以正常形式输出。

Input
输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。

Output
请计算A+B的结果,并以正常形式输出,每组数据占一行。

Sample Input
-234,567,890 123,456,789
1,234 2,345,678

Sample Output
-111111101
2346912

#include<stdio.h>
#include<string.h>
int main()
{
char a[1000],b[1000];
__int64 suma,sumb;int t;
while(scanf("%s %s",a,b)!=EOF)
{
suma=sumb=0;
int lena=strlen(a);
int lenb=strlen(b);
for(int i=lena-1;i>=0;i--)
{
if(a[i]>='0'&&a[i]<='9')
{
t=a[i]-'0';
suma=suma*10+t;
}
}
for(int j=lenb-1;j>=0;j--)
{
if(b[j]>='0'&&b[j]<='9')
{
t=b[j]-'0';
sumb=sumb*10+t;
}

}
if(a[0]=='-') suma=-suma;
if(b[0]=='-') sumb=-sumb;
printf("%I64d\n",suma+sumb);
}
return 0;
}

#include<stdio.h>
#include<string.h> 
int main()
{
char a[1000],b[1000];
__int64 suma,sumb;int t;
while(scanf("%s %s",a,b)!=EOF)
{
suma=sumb=0;
int lena=strlen(a);
int lenb=strlen(b);
for(int i=0;i<lena;i++)//<===========
{
if(a[i]>='0'&&a[i]<='9')
{
t=a[i]-'0';
suma=suma*10+t;
}
}
for(int j=0;j<lenb;j++)//<===========
{
if(b[j]>='0'&&b[j]<='9')
{
t=b[j]-'0';
sumb=sumb*10+t;
}

}
if(a[0]=='-') suma=-suma;
if(b[0]=='-') sumb=-sumb;
printf("%I64d\n",suma+sumb);
}
return 0;
}

追问

不是这里有问题吧,lena是算的a数组的长度,然后数组是从0开始,所以只需要用<就好

追答

仔细看看我贴的代码和你的区别

追问

哦哦哦,不好意思,大佬,我没注意

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-03-25
这个问题不明白

杭电ACM3787 A+B 求解我的代码哪里错了?
include<stdio.h>#include<string.h> int main(){char a[1000],b[1000];__int64 suma,sumb;int t;while(scanf("%s %s",a,b)!=EOF){suma=sumb=0;int lena=strlen(a);int lenb=strlen(b);for(int i=0;i<lena;i++)\/\/<==={if(a[i]>='0'&&a[i]<='9'){t=a[i]-'0...

杭电ACM 这个代码哪里错了
include<stdio.h>int main(){int i,z;while(scanf("%d",&i)!=EOF)if(i>100 || i<0)\/\/这里还有i<0的情况,注意哈printf("Score is error!\\n");\/\/这里要输出回车else{z=i\/10;switch(z){case 10:case 9:printf("A\\n");break;case 8:printf("B\\n");break;case 7:printf("C...

杭电ACM2024题,我的代码错在哪里了?为什么运行时,一旦遇到空格,或者...
(a[i]='_') 改成 (a[i]=='_') 就OK了

杭电ACM 2025问下 我写的哪里错了,老是wronganswer
这个题也比较简单,我只是给你测试了一下,当测例是abckdljgla时你的答案是abckdl(max)jgl(max)aA,显然错了,我也没有继续找错。其实改一下方法更好,你应该也会认同这一点的,是吧,呵呵呵。写程序必然会有这个阶段,有错误的时候最好是自己找出来纠正,这样对自己的提升最大。有错误的时候继...

请教杭电ACM 1002 A+B 下面程序提交出,请帮忙改正另外提交时出现Wrong...
又一个不处理前导0的程序 00000002 + 54 = 00000056 应该是 00000002 + 54 = 56

郁闷啊,杭电的acm网站,刚刚还登陆正常的,现在就说我密码错了!!!请问...
修改密码的话 在 Control Panel ->Update Your Information 里面。。如果忘记密码的话,就用你的注册邮箱给acm@hdu.edu.cn 发邮件,就说你忘记密码了。。(必须是注册邮箱~)

杭电ACM2057 A + B Again 就是求两个十六进制数的和,两个数长度不超过1...
,b;while(scanf("%I64x%I64x",&a,&b)!=EOF){ if(a+b<0){ \/ I64X :输出【无符号】十六进制数,用大写字母 也就是说 I64X 的格式【无法输出负数的】,但运算结果是有负数的。一种简单的方法就是,把负数取绝对值,然后手工添加一个负号,如下:\/ printf("-%I64X\\n",-(a+b));...

杭电acm2027提交时出现Output Limit Exceeded,不知道哪里出错了
printf("u:%c",&e);输出的是变量e在内存单元的中地址,而不是变量e的值。

杭电acm2024,帮忙看看那里出错了,拜托各位大哥了。
我没有看题目,但是估计你这行代码肯定有错 (a[i]>=97&a[i]<=122||a[i]>=65&&a[i]<=90)一个是第一个&少了个&,第二是估计你没有加括号 ((a[i]>=97&a[i]<=122)||(a[i]>=65&&a[i]<=90))最好以后多用括号,这样能够减少错误以及让代码更清晰 比如你的for循环if等后面...

杭电ACM 2096 小明A+B,代码调试运行也没问题,各种情况下也合理,就是...
有大于100的就取余,算完再取余,应该就行了吧 if(a>=100||b>=100){ } else if(a>=100&&b>=100){ \/\/ 这一块是不会运行到的,因为这包含在上一种情况中 }

相似回答