在线判断的不同输出

Different output on online judge

本文关键字:输出 判断 在线      更新时间:2023-10-16

我在hackerrank(在线法官)中尝试了一个问题。任务是获取一个输入字符串,然后首先打印偶数索引的字符,然后打印一个空格,然后打印给定数量的测试用例"n"奇数索引中的字符。我能够解决它。但是,我在编译器上得到不同的输出,在在线法官中得到不同的输出。我在计算机上获得的输出是正确的,但我在在线评判中没有得到相同的输出。这是我的代码:-

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

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

你写的是<=而不是<.

在这里,当单词长度为偶数时(如"Hacker"),您也会意外打印终止 NULL。

其结果取决于您的执行环境。显然您的终端只是忽略了它,而您所说的这个"在线判断"并没有,而是将其用作程序输出的 NULL 终止符!!(如果你问我,这是糟糕的编码)

:注:您不会从编译器获取程序输出。你通过执行程序来获得它,编译器无法控制它。

另外,为了克苏鲁的热爱,请缩进您的代码并使用有意义的变量名称?