一道简单的ACM竞赛题。在VC6.0上通过,在OJ上却是wrong answer,不知道为什么?请高手指点。
不需要提供另外的代码,希望能指出我的错误。谢谢。以下是原题地址。http://acm.bnu.edu.cn/contest/problem_show.php?pid=41...
不需要提供另外的代码,希望能指出我的错误。谢谢。以下是原题地址。
http://acm.bnu.edu.cn/contest/problem_show.php?pid=4142
用户名:oneman
密码:zhimakaimen
这是我的代码。
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,k,m;
char str[100][3][200];
for(k=0;k<100;k++)
{
for(i=0;i<3;i++)
{
gets(str[k][i]);
if(strcmp(str[k][i],"ENDOFINPUT")==0) break;
}
if(i!=3) break;
}
for(m=0;m<k;m++)
{
for(j=0;str[m][1][j]!=0;j++)
{
if(str[m][1][j]>='A'&&str[m][1][j]<='Z')
str[m][1][j]='Z'-('Z'-str[m][1][j]+5)%26;
}
printf("%s\n",str[m][1]);
}
return 0;
} 展开
http://acm.bnu.edu.cn/contest/problem_show.php?pid=4142
用户名:oneman
密码:zhimakaimen
这是我的代码。
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,k,m;
char str[100][3][200];
for(k=0;k<100;k++)
{
for(i=0;i<3;i++)
{
gets(str[k][i]);
if(strcmp(str[k][i],"ENDOFINPUT")==0) break;
}
if(i!=3) break;
}
for(m=0;m<k;m++)
{
for(j=0;str[m][1][j]!=0;j++)
{
if(str[m][1][j]>='A'&&str[m][1][j]<='Z')
str[m][1][j]='Z'-('Z'-str[m][1][j]+5)%26;
}
printf("%s\n",str[m][1]);
}
return 0;
} 展开
2个回答
展开全部
/*根椐你的代码去试了一下找不出什么,后来看了题目,发现你把题目意思搞错了。原题应该是一个
START
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
END
这个的组合输出一个字符串,而不是你理解的把全部的字符串输入后才一起输出,不是那样的。我把我刚才重新写的c++代码给你看下,如果还有什么不理解的可以hi我。*/
#include<iostream>
#include<string>
using namespace std;
int main()
{
string start,end,str;
while(1)
{
getline(cin,start);
if(start=="ENDOFINPUT")break;
getline(cin,str);
getline(cin,end);
int i;
for(i=0;i<str.length();i++)
{
if(str[i]>='A'&&str[i]<='Z')str[i]='Z'-('Z'-str[i]+5)%26;
}
cout<<str<<endl;
}
return 0;
}
/*
对应的测试数据输入输出如下
START
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
END
IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES
START
N BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ
END
I WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROME
START
IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ
END
DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE
ENDOFINPUT
*/
START
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
END
这个的组合输出一个字符串,而不是你理解的把全部的字符串输入后才一起输出,不是那样的。我把我刚才重新写的c++代码给你看下,如果还有什么不理解的可以hi我。*/
#include<iostream>
#include<string>
using namespace std;
int main()
{
string start,end,str;
while(1)
{
getline(cin,start);
if(start=="ENDOFINPUT")break;
getline(cin,str);
getline(cin,end);
int i;
for(i=0;i<str.length();i++)
{
if(str[i]>='A'&&str[i]<='Z')str[i]='Z'-('Z'-str[i]+5)%26;
}
cout<<str<<endl;
}
return 0;
}
/*
对应的测试数据输入输出如下
START
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
END
IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES
START
N BTZQI WFYMJW GJ KNWXY NS F QNYYQJ NGJWNFS ANQQFLJ YMFS XJHTSI NS WTRJ
END
I WOULD RATHER BE FIRST IN A LITTLE IBERIAN VILLAGE THAN SECOND IN ROME
START
IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ
END
DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE
ENDOFINPUT
*/
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询