杭电1002,wrong answer,为什么额

#include<stdio.h>#include<cstring>#include<algorithm>#defineMAXN1000+10usingnamespace... #include <stdio.h>
#include <cstring>
#include <algorithm>
#define MAXN 1000+10
using namespace std;
char a[MAXN],b[MAXN];
int aa[MAXN],bb[MAXN],c[MAXN];
int main(){
int n,i,j,k,jinwei,cas=0;
while(scanf("%d",&n)!=EOF){
memset(aa,0,sizeof(aa));
memset(bb,0,sizeof(bb));
while(n>0){
--n;
++cas;
scanf("%s%s",&a,&b);
printf("Case %d:\n",cas);
printf("%s+%s=",a,b);
int la=strlen(a),lb=strlen(b),lc=max(strlen(a),strlen(b));
for(i=0;i<la;i++){
aa[la-1-i]=a[i]-'0';}
for(j=0;j<lb;j++){
bb[lb-1-j]=b[j]-'0';}
jinwei=0;
for(k=0;k<lc;k++){
c[k]=(aa[k]+bb[k]+jinwei)%10;
jinwei=(aa[k]+bb[k])/10;}
if(jinwei!=0){
printf("%d",jinwei);}
for(k=0;k<=lc-1;k++){
printf("%d",c[lc-1-k]);
}
puts(" ");
if(n!=0){
puts(" ");}
}
}
return 0;
}
展开
 我来答
风若远去何人留
2013-11-06 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450107
专业C/C++软件开发

向TA提问 私信TA
展开全部
  1. 不需要循环输入n 题目中只是先输入总次数 然后执行若干次就可以

    所以,while(scanf("%d",&n)!=EOF)这个循环没必要。直接scanf一次即可

  2. 格式上有些问题

    玩acm要注意输出的格式 有没有空格什么的

    多一个空格或者少一个空格 ,看起来输出正确,但会wa或者pe

    你这里面我发现的格式问题有两处

    一个是输出a+b=c这样的结果时,应该是有空格的 a + b = c 这个你到题目中确认一下

    另一个是输出换行时用的puts(" ") 这样会多出空格来。 改用printf("\n");

更多追问追答
追问
题目好像要求要输出数据之间有一行空格了,而且照您说的改完以后还是错的,会不会因为别的原因额
追答

把你修改后的代码传上来 明天我再看一下

除了之前说的 算法上发现两个问题

  1. aa bb 只初始化一次,如果多次计算可能出错

反例

输入

2

12 345

32 1

输出

Case 1:

12 + 345 = 357


Case 2:

32 + 1 = 73

2. 进位判断有问题

jinwei=(aa[k]+bb[k])/10;

反例

输入

1

99 1


输出

Case 1:

99 + 1 = 00


如果你想自己调的话 那么下面的就先别看

在你基础上改的AC代码

#include <stdio.h>
#include <cstring>
#include <algorithm>
#define MAXN 1000+10
using namespace std;
char a[MAXN],b[MAXN];
int aa[MAXN],bb[MAXN],c[MAXN];
int main(){
int n,i,j,k,jinwei,cas=0;
scanf("%d",&n);

while(n>0){
memset(aa,0,sizeof(aa));
memset(bb,0,sizeof(bb));
--n;
++cas;
scanf("%s%s",a,b);
printf("Case %d:\n",cas);
printf("%s + %s = ",a,b);
int la=strlen(a),lb=strlen(b),lc=max(strlen(a),strlen(b));
for(i=0;i<la;i++){
aa[la-1-i]=a[i]-'0';}
for(j=0;j<lb;j++){
bb[lb-1-j]=b[j]-'0';}
    jinwei=0;
for(k=0;k<lc;k++){
c[k]=(aa[k]+bb[k]+jinwei)%10;
jinwei=(aa[k]+bb[k]+jinwei)/10;}
if(jinwei!=0){
printf("%d",jinwei);}
for(k=0;k<=lc-1;k++){
    printf("%d",c[lc-1-k]);
}
printf("\n");
if(n!=0){
printf("\n");}
}

return 0;
}
富港检测技术(东莞)有限公司_
2024-08-05 广告
作为富港检测技术(东莞)有限公司的工作人员,关于ISTA 1A、2A及3A的区别及测试项目简述如下:ISTA 1A是非模拟集中性能试验,主要进行固定位移振动和冲击测试,针对不超过68kg的包装件。ISTA 2A则在此基础上增加了部分模拟性能... 点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式