杭电acm1002,一直都是Wrong Answer,求解

测试多次,改正了一些错误,但始终都是不能AC,求高手!#include<iostream>#include<string>usingnamespacestd;intmai... 测试多次,改正了一些错误,但始终都是不能AC,求高手!
#include<iostream>
#include<string>

using namespace std;

int main(){
int num_case=0; //加法案例个数
string data1_str="",data2_str="";
int data1_size=0,data2_size=0;//数据长度
int mark=0;//进位标识
int index=0;
int sum_rs[1001]={0},data1[1001]={0},data2[1001]={0};
string a[20]={""},b[20]={""};
cin>>num_case;

for (int i = 0; i < num_case; i++)
{
cin>>a[i];
cin>>b[i];
}

for (int i = 0; i < num_case; i++)
{
//清空数据
memset(data1,0,sizeof(data1));
memset(data2,0,sizeof(data2));
index=0;
data1_str=a[i];
data2_str=b[i];
data1_size=data1_str.length();
data2_size=data2_str.length();

for(int j=0;j<data1_size;j++){
char tmp=data1_str[data1_size-j-1];
data1[j]=atoi(&tmp);
}

for(int j=0;j<data2_size;j++){
char tmp=data2_str[data2_size-j-1];
data2[j]=atoi(&tmp);
}

for (int j = 0; j < 1001; j++)
{
sum_rs[j]=data1[j]+data2[j]+mark;
if (sum_rs[j]>=10)
{
sum_rs[j]%=10;
mark=1;
}else
{
mark=0;
}
}

for (int j =0; j < 1001; j++)
{
if (sum_rs[j]!=0)
{
index=j;//找到最高位的位置
}
}
cout<<"Case "<<i+1<<":"<<endl;
cout<<data1_str<<" + "<<data2_str<<" = ";

for (int j =index; j >=0; j--)
{
cout<<sum_rs[j];
}
cout<<endl;
if(i!=num_case-1) cout<<endl;//最后一个不用空行
}
return 0;
}
展开
 我来答
liruih8121099
游戏玩家

2015-08-05 · 游戏我都懂点儿,问我就对了
知道小有建树答主
回答量:561
采纳率:75%
帮助的人:168万
展开全部
data1[j]=atoi(&tmp);
data2[j]=atoi(&tmp);
这两个分别改成
data1[j]=tmp - '0';
data1j]=tmp - '0';
atoi()是把字符数组变成整数,如果&tmp之后的字符不是'\0'反而是数字,那么就会错误的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式