早教吧 育儿知识 作业答案 考试题库 百科 知识分享

下面这个程序是一个大数相加的程序,我在本机上运行完全正常,也考虑了很多特殊情况,为什么我一提交到AC上面就报结果错误呢?#include#includeusingnamespacestd;constintnumlen=1000;structbN{charnum1[nu

题目详情
下面这个程序是一个大数相加的程序,我在本机上运行完全正常,也考虑了很多特殊情况,为什么我一提交到AC上面就报结果错误呢?
#include
#include
using namespace std;
const int numlen=1000;
struct bN
{
char num1[numlen];
char num2[numlen];
char result[numlen];
};
struct bN bigNum[20]={0};
void main()
{
int T=0,n1_len=0,n2_len=0,loop_len=0;
int carry=0;
char num_a[numlen]={0},num_b[numlen]={0};
char cr[numlen]={0};
cin>>T;
if(T20) exit(0);
for(int i=0;i>bigNum[i].num1>>bigNum[i].num2;
for(int j=0;j n2_len n1_len :n2_len;
for(int k=0 ; k < loop_len ; k++)
{
if(loop_len==n1_len && k>=n2_len)
{
bigNum[j].result[k] = (int)num_a[k] + carry;
}
else if(loop_len==n2_len && k>=n1_len)
{
bigNum[j].result[k] = (int)num_b[k] + carry;
}
else
{
bigNum[j].result[k] = (int)num_a[k] + (int)num_b[k] + carry - '0';
}
if(bigNum[j].result[k] > '9')
{
carry = (bigNum[j].result[k]-'0')/10;
bigNum[j].result[k] -= 10;
if(k==loop_len-1 && carry!=0)
{
bigNum[j].result[k+1]=carry+'0';
carry=0;
}
}
else
{
carry=0;
}
}
memset(num_a,0,sizeof(num_a));
memset(num_b,0,sizeof(num_b));
}
for(int p=0 ; p
▼优质解答
答案和解析
#include "iostream.h"
#include "string.h"
#include "process.h"
//using namespace std;
const int numlen=1000;
struct bN
{
char num1[numlen];
char num2[numlen];
char result[numlen];
};
struct bN bigNum[20]={0};
void main()
{
int T=0,n1_len=0,n2_len=0,loop_len=0;
int carry=0;
char num_a[numlen]={0},num_b[numlen]={0};
char cr[numlen]={0};
cin>>T;
if(T20) system("exit(0)");
for(int i=0;i>bigNum[i].num1>>bigNum[i].num2;
for(int j=0;j n2_len n1_len :n2_len;
for(int k=0 ; k < loop_len ; k++)
{
if(loop_len==n1_len && k>=n2_len)
{
bigNum[j].result[k] = (int)num_a[k] + carry;
}
else if(loop_len==n2_len && k>=n1_len)
{
bigNum[j].result[k] = (int)num_b[k] + carry;
}
else
{
bigNum[j].result[k] = (int)num_a[k] + (int)num_b[k] + carry - '0';
}
if(bigNum[j].result[k] > '9')
{
carry = (bigNum[j].result[k]-'0')/10;
bigNum[j].result[k] -= 10;
if(k==loop_len-1 && carry!=0)
{
bigNum[j].result[k+1]=carry+'0';
carry=0;
}
}
else
{
carry=0;
}
}
memset(num_a,0,sizeof(num_a));
memset(num_b,0,sizeof(num_b));
}
for(int p=0 ; p