我在hackerrank(在线评判)中尝试了一个问题。任务是采用输入字符串,然后首先打印偶数索引的字符,后跟空格,然后打印奇数索引中的字符对于给定数量的测试用例 ' 。我能够解决它。但是我在编译器上获得了不同的输出,在在线判断中获得了不同的输出。我在计算机上输出的输出是正确的,但我在网上判断中没有得到相同的结果。这是我的代码: -
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int main()
{
int n;
cin>>n;
getchar();
char s[1000];
for(int i=0;i<n;i++)
{
cin.getline(s,1000);
int len;
len=strlen(s);
for(int j=0;j<=len;j++)
{
if(j%2==0)
cout<<s[j];
}
cout<<" ";
for(int m=0;m<len;m++)
{
if(m%2!=0)
{
cout<<s[m];
}
}
cout<<endl;
}
return 0;
}
输入
1
哈克
使用g ++在我的计算机上运行时的输出
Hce akr
在在线评判中运行时的输出
HCE
请帮助。 注意: 0 被视为偶数索引。
答案 0 :(得分:2)
for(int j=0;j<=len;j++)
{
if(j%2==0)
cout<<s[j];
}
你写了<=
而不是<
。
这里,当字长是偶数时(就像“黑客”一样),你也不小心打印了终止NULL。
结果取决于您的执行环境。显然你的终端只是忽略它,你说的这个“在线判断”不会,而是用它作为程序输出的NULL终止符!! (如果你问我,那编码很差)
N.B。您没有从编译器获得程序输出。你可以通过执行程序来获得它,而编译器无法控制它。
另外,为了爱Cthulhu,请缩进你的代码并使用有意义的变量名吗?