杭电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;
} 展开
#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;
} 展开
1个回答
展开全部
不需要循环输入n 题目中只是先输入总次数 然后执行若干次就可以
所以,while(scanf("%d",&n)!=EOF)这个循环没必要。直接scanf一次即可
格式上有些问题
玩acm要注意输出的格式 有没有空格什么的
多一个空格或者少一个空格 ,看起来输出正确,但会wa或者pe
你这里面我发现的格式问题有两处
一个是输出a+b=c这样的结果时,应该是有空格的 a + b = c 这个你到题目中确认一下
另一个是输出换行时用的puts(" ") 这样会多出空格来。 改用printf("\n");
更多追问追答
追问
题目好像要求要输出数据之间有一行空格了,而且照您说的改完以后还是错的,会不会因为别的原因额
追答
把你修改后的代码传上来 明天我再看一下
除了之前说的 算法上发现两个问题
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 广告
2024-08-05 广告
作为富港检测技术(东莞)有限公司的工作人员,关于ISTA 1A、2A及3A的区别及测试项目简述如下:ISTA 1A是非模拟集中性能试验,主要进行固定位移振动和冲击测试,针对不超过68kg的包装件。ISTA 2A则在此基础上增加了部分模拟性能...
点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询