字符串处理大数据问题,自己测试没什么问题,提交不过,不知道错哪了

fendouqingchun123 2014-05-24 09:09:13
#include<stdio.h>
#include<string.h>
void largeadd(char *as,char *bs,char *cs);
main()
{
char as[20][1010],bs[20][1010],cs[20][1010];
int t,i;

scanf("%d",&t);
for(i=0;i<t;i++)
scanf("%s%s",as[i],bs[i]);
for(i=0;i<t;i++)
{
largeadd(as[i],bs[i],cs[i]);
}

for(i=0;i<t;i++)
{
printf("Case %d:\n",i+1);
printf("%s+%s=%s\n",as[i],bs[i],cs[i]);
}
}
void largeadd(char *as,char *bs,char *cs)
{
char a[1010],b[1010],c[1010];
int ml,i,la,lb;
la=strlen(as);
lb=strlen(bs);
ml=(la>=lb)?la:lb;
memset(a,'\0',1010);
memset(b,'\0',1010);
memset(c,'\0',1010);
for(i=0;i<la;i++)
a[i]=as[la-1-i]-'0';
for(i=0;i<lb;i++)
b[i]=bs[lb-1-i]-'0';

for(i=0;i<ml;i++)
{
c[i]=a[i]+b[i];
if(c[i]>=10)
{
c[i]=c[i]-10;
a[i+1]++;
}
}
if(a[ml]>0)
{
ml++;
c[ml-1]=a[ml-1];
}
for(i=0;i<ml;i++)
{
cs[i]=c[ml-1-i]+'0';
}
cs[ml]='\0';
}
...全文
208 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
logiciel 2014-05-25
  • 打赏
  • 举报
回复
请贴题目. 建议检查输出格式是否符合要求.
Symfund 2014-05-24
  • 打赏
  • 举报
回复

scanf("%1009s%1009s",as[i],bs[i]);
防止越界。
Symfund 2014-05-24
  • 打赏
  • 举报
回复
引用 7 楼 fendouqingchun123 的回复:
谢谢,不过我刚试了,答案还是错误
编译器,版本号?
fendouqingchun123 2014-05-24
  • 打赏
  • 举报
回复
谢谢,不过我刚试了,答案还是错误
Symfund 2014-05-24
  • 打赏
  • 举报
回复
引用 5 楼 fendouqingchun123 的回复:
是要加句 if(1<=t<=20) 吗?
嗯,是的,也可以

t = t % 20 + 1;
fendouqingchun123 2014-05-24
  • 打赏
  • 举报
回复
是要加句 if(1<=t<=20) 吗?
linxi_sl 2014-05-24
  • 打赏
  • 举报
回复
是不是输入没有取地址符
Symfund 2014-05-24
  • 打赏
  • 举报
回复
引用 2 楼 fendouqingchun123 的回复:
最多有20组数据,每次只计算其中一组a+b之和,所以定义为二维数组,但每次调用只用其中一行数据

scanf("%d",&t);
t的合法边界没有检测。
fendouqingchun123 2014-05-24
  • 打赏
  • 举报
回复
最多有20组数据,每次只计算其中一组a+b之和,所以定义为二维数组,但每次调用只用其中一行数据
Symfund 2014-05-24
  • 打赏
  • 举报
回复

char as[20][1010],bs[20][1010],cs[20][1010];
二维数组到后面怎么又变成一维了?

70,017

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧