社区讨论

萌新提问,VS2019和洛谷在线IDE结果不一致

P4414[COCI 2006/2007 #2] ABC参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo87afls
此快照首次捕获于
2023/10/27 13:56
2 年前
此快照最后确认于
2023/10/27 13:56
2 年前
查看原帖
CPP
#include <algorithm>
#include <cstdio>
using namespace std;
int main()
{
    int num[3];
    char word[3];
    scanf("%d %d %d", &num[0], &num[1], &num[2]);
    getchar();
    scanf("%c%c%c",&word[0], &word[1], &word[2]);
    sort(num, num + 3);
    printf("%d %d %d", num[word[0] - 'A'], num[word[1] - 'A'], num[word[2] - 'A']);
    return 0;
}
这是我本地VS2019可以AC的代码,但是在洛谷IDE却WA 。
经过调试,洛谷AC的代码是这样:
CPP
#include <algorithm>
#include <cstdio>
using namespace std;
int main()
{
    int num[3];
    char word[4];
    scanf("%d %d %d", &num[0], &num[1], &num[2]);
    getchar();
    scanf("%c%c%c%c",&word[0],&word[1], &word[2], &word[3]);
    sort(num, num + 3);
    printf("%d %d %d", num[word[1] - 'A'], num[word[2] - 'A'], num[word[3] - 'A']);
    return 0;
}
输入:6 4 2
CAB
输出:6 2 4
但是本地VS2019的输出是:4 6 1380392
我想问题大概是输入数据第一行末尾的换行符?
getchar()函数,在本地VS2019似乎是把换行符从输入缓冲区里给去掉了,但是洛谷IDE似乎还保留,所以word数组第一个字符是'\n'

回复

2 条回复,欢迎继续交流。

正在加载回复...