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

下面这个程序是一个大数相加的程序,我在本机上运行完全正常,也考虑了很多特殊情况,为什么我一提交到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
看了下面这个程序是一个大数相加的程...的网友还看了以下:

到底是用力还是做功会让人觉得累?骑自行车上同一个斜坡,第一次,在上坡前的一段平路上就加速;第二次,  2020-04-25 …

关于离子方程式书写问题离子方程式有没有可能一边是H+,一边是OH-?也就是配电荷守恒时为什么一边加  2020-05-13 …

++i理解不到我就只知道i++是先计算后再加1,++i是先自加1后再计算.上面这句话到底上面意思,  2020-05-14 …

4.给电池充电的过程,实际上就是把能转化为能的过程,若不考虑其他损失,在这个过程中消耗了5000焦  2020-05-22 …

生活中处处有物理,我们可以利用矿泉水瓶做一些小实验来说明一些物理知识:(1)双手挤压空矿泉水瓶可使  2020-06-27 …

生活中处处有物理.楚明利用矿泉水做了几个有趣的实验:(1)双手挤压空矿泉水瓶可以使瓶子变形,如果施  2020-07-22 …

从数学上看,叠加定理就是线性方程的叠加性对还是错原话是从数学上看,叠加定理就是线性方程的可加性  2020-08-02 …

我们可以利用矿泉水瓶做小实验来说明一些物理知识.(1)双手挤压空矿泉水瓶可以使瓶子变形,如果施加的力  2020-11-03 …

生活中处处有物理.我们可以利用矿泉水瓶做一些小实验来说明一些物理知识:(1)双手挤压空矿泉水瓶可使瓶  2020-11-29 …

如图所示为汽油机工作过程中某一冲程的示意图,此图是冲程,有一种单缸汽油机在原有四冲程的基础上增加两个  2020-12-05 …