网上判断的输出不同

时间:2016-07-14 16:06:26

标签: c++ string compiler-errors

我在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 被视为偶数索引。

1 个答案:

答案 0 :(得分:2)

for(int j=0;j<=len;j++)
{
   if(j%2==0)
      cout<<s[j];
}

你写了<=而不是<

这里,当字长是偶数时(就像“黑客”一样),你也不小心打印了终止NULL。

结果取决于您的执行环境。显然你的终端只是忽略它,你说的这个“在线判断”不会,而是用它作为程序输出的NULL终止符!! (如果你问我,那编码很差)

N.B。您没有从编译器获得程序输出。你可以通过执行程序来获得它,而编译器无法控制它。

另外,为了爱Cthulhu,请缩进你的代码并使用有意义的变量名吗?