做杭电OJ1002的过程中遇到了亿些问题
自己在编译器上运行正常,但在OJ平台上就wrong answer了
希望帮忙看下问题在哪 T-T
#include <iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<minmax.h>
using namespace std;
char s1[1005],s2[1005];
int a[1005]={0},b[1005]={0},c[1005]={0};
int main()
{
int n=1;
int lena,lenb,lenc,T;
while(scanf("%d",&T) != EOF){
while(T--){
scanf("%s%s",&s1,&s2);
lena = strlen(s1);
lenb = strlen(s2);
for(int i=0; i<lena; i++)
a[lena-i] = s1[i] - '0';
for(int i=0; i<lenb; i++)
b[lenb-i] = s2[i] - '0';
lenc = max(lena,lenb) + 1;
for(int i=1; i<=lenc; i++){
c[i] += a[i] + b[i];
c[i+1] = c[i]/10;
c[i] = c[i]%10;
}
for(int i=1; i<=lenc; i++){
if(c[lenc] == 0 && lenc > 0)
{
lenc--;
if(lenc==1)
break;
}
}
printf("Case %d:\n",n++);
printf("%s + %s = ",s1,s2);
for(int i=lenc; i>0; i--){
printf("%d",c[i]);
c[i] = 0;
}
printf("\n");
if(T != 0)
printf("\n");
}
}
return 0;
}

1、示例:
#include <stdio.h>
#include <math.h>
int main()
{
long a,b,sum;
scanf("%ld%ld\n",&a,&b);
sum = a + b;
printf("%ld\n",sum);
return 0;
}
2、示例:超长(超100位)加法运算
#include <stdio.h>
#include <string.h>
#define N 10000
int main()
{
char num1[N] = {0},num2[N] = {0},result[N]={0};
long len_1,len_2,len;
int i;
scanf("%s %s",num1,num2);
len_1 = strlen(num1);
len_2 = strlen(num2);
len = (len_1>len_2) ? len_1:len_2;
len++;
for(i = 0 ;i<len_1&&i<len_2; i++)
{
result[len-1-i] = (num1[len_1-1-i] - '0') + (num2[len_2-1-i] - '0');
}
if(len_1 >len_2)
{
for(;i<len_1;i++)
{
result[len-1-i] = num1[len_1-1-i] - '0';
}
}
else
{
for(;i<len_2;i++)
{
result[len-1-i] = num2[len_2-1-i] - '0';
}
}
for(i = len - 1;i>0;i--)
{
if(result[i]>=10)
{
result[i] = result[i]%10;
result[i-1]++;
}
}
//判断是后位数多出一位 9+8=17变成2位数,如果没有则全部前移。并变回数字的ASC2码
if(result[0]!= 0)
{
for(i = 0;i<len;i++)
{
result[i] += '0';
}
result[len] = '\0';
}
else
{
for(i=1;i<len;i++)
{
result[i-1] = result[i] + '0';
}
result[len-1] = '\0';
}
printf("两个数相加的结果是:\n");
puts(result);
return 0;
}
3、OJ通过的答案
#include <stdio.h>
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)==2)
{
printf("%d\n",a+b);
}
return 0;
}