杭电2672 我的代码错在哪里啊 一直WA 可是例子都正确啊·····
#include"stdio.h"#include"string.h"intmain(){intk1,k2,k3,i;chara[20000];while((gets(a...
#include"stdio.h"
#include"string.h"
int main()
{
int k1,k2,k3,i;
char a[20000];
while((gets(a))!=NULL)
{
k1=1;k2=1;
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='A'&& a[i]<='Z')
{
k3=k1+k2;
if(k3>=26)
{
k3=k3%26;
}
if(i<=1)
{
a[i]=a[i]+k1;
}
else
{
a[i]=a[i]+k3;
k1=k2;k2=k3;
}
if(a[i]>'Z')
{
a[i]=a[i]-26;
}
}
}
printf("%s\n",a);
}
return 0;
} 展开
#include"string.h"
int main()
{
int k1,k2,k3,i;
char a[20000];
while((gets(a))!=NULL)
{
k1=1;k2=1;
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='A'&& a[i]<='Z')
{
k3=k1+k2;
if(k3>=26)
{
k3=k3%26;
}
if(i<=1)
{
a[i]=a[i]+k1;
}
else
{
a[i]=a[i]+k3;
k1=k2;k2=k3;
}
if(a[i]>'Z')
{
a[i]=a[i]-26;
}
}
}
printf("%s\n",a);
}
return 0;
} 展开
4个回答
展开全部
#include"stdio.h"
#include"string.h"
int main()
{
int k1,k2,k3,i;
char a[20000];
while((gets(a))!=NULL)
{
k1=1;k2=0;
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='A'&& a[i]<='Z')
{
k3=k1+k2;
if(k3>=26)
{
k3=k3%26;
}
a[i]=a[i]+k3;
k1=k2;k2=k3;
if(a[i]>'Z')
{
a[i]=a[i]-26;
}
}
}
printf("%s\n",a);
}
return 0;
}
#include"string.h"
int main()
{
int k1,k2,k3,i;
char a[20000];
while((gets(a))!=NULL)
{
k1=1;k2=0;
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='A'&& a[i]<='Z')
{
k3=k1+k2;
if(k3>=26)
{
k3=k3%26;
}
a[i]=a[i]+k3;
k1=k2;k2=k3;
if(a[i]>'Z')
{
a[i]=a[i]-26;
}
}
}
printf("%s\n",a);
}
return 0;
}
展开全部
你说的WA是什么意思?
是等待的意思吗?程序就是等待输入的啊。
还是警告的意思?gets这个函数是有安全性问题的。建议使用fgets函数。
查到了,WA是Wrong answer的意思。那就要看你希望实现什么算法了。
是等待的意思吗?程序就是等待输入的啊。
还是警告的意思?gets这个函数是有安全性问题的。建议使用fgets函数。
查到了,WA是Wrong answer的意思。那就要看你希望实现什么算法了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
EOF没处理
if(a[i]>'Z')
{
a[i]=a[i]-26;
}
这段有什么用?
if(a[i]>'Z')
{
a[i]=a[i]-26;
}
这段有什么用?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-07-27
展开全部
你的cin.getline(data,5015,'D'); 和 cin.getline(input,5015,'D'); 用的是有问题的,虽然你本意是想让程序读到“END”中的‘D’时停止,但由于在“START”和“END”中的数据部分也可能出现'D'(例子中没有但例子只是一部分的数据,一个正确的程序要考虑所有可能),这种情况下你的程序不能读入所有的数据部分,肯定就错了。一种解决办法是用getline(cin, data)逐行读,再利用字符串加法得到完整的数据部分。
我帮你修改后的程序如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
int t,i;
string s1,s2;
string data,input;
scanf("%d",&t);
getchar(); //过滤掉数字后的回车字符,防止后面多读一行
while(t--)
{
data = input = "";
while(getline(cin,s1) && s1!="END")
{
if (s1=="") //处理空行,下同
data+='\n';
data+=s1;
}
while(getline(cin,s2) && s2!="END")
{
if (s2=="")
input+='\n';
input+=s2;
}
if(data==input)
{
printf("Accepted\n");continue;
}
s1=s2="";
for(i=5;i<data.length();i++)
if(data[i]!='\t'&&data[i]!='\n'&&data[i]!=' ')
s1+=data[i];
for(i=5;i<input.length();i++)
if(input[i]!='\t'&&input[i]!='\n'&&input[i]!=' ')
s2+=input[i];
if(s1!=s2)printf("Wrong Answer\n");
else printf("Presentation Error\n");
}
return 0;
}
另外,站长团上有产品团购,便宜有保证
我帮你修改后的程序如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
int t,i;
string s1,s2;
string data,input;
scanf("%d",&t);
getchar(); //过滤掉数字后的回车字符,防止后面多读一行
while(t--)
{
data = input = "";
while(getline(cin,s1) && s1!="END")
{
if (s1=="") //处理空行,下同
data+='\n';
data+=s1;
}
while(getline(cin,s2) && s2!="END")
{
if (s2=="")
input+='\n';
input+=s2;
}
if(data==input)
{
printf("Accepted\n");continue;
}
s1=s2="";
for(i=5;i<data.length();i++)
if(data[i]!='\t'&&data[i]!='\n'&&data[i]!=' ')
s1+=data[i];
for(i=5;i<input.length();i++)
if(input[i]!='\t'&&input[i]!='\n'&&input[i]!=' ')
s2+=input[i];
if(s1!=s2)printf("Wrong Answer\n");
else printf("Presentation Error\n");
}
return 0;
}
另外,站长团上有产品团购,便宜有保证
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询