满分,但不理解为啥要加getchar

P4414 [COCI2006-2007#2] ABC

koishi0514 @ 2024-10-09 21:45:13

#include <stdio.h>
int main() {
    int a[3];
    scanf("%d %d %d", &a[0], &a[1], &a[2]);
    getchar();
    getchar();  
    char b[3];
    scanf("%c%c%c", &b[0],&b[1],&b[2]);

    for (int i = 0; i < 3; i++) {
        for (int j = i; j < 3; j++) {
            if (a[i] > a[j]) {
                int temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
    if (b[0] == 'A') {
        printf("%d ", a[0]);
    } else if (b[0] == 'B') {
        printf("%d ", a[1]);
    } else if (b[0] == 'C') {
        printf("%d ", a[2]);
    }
    if (b[1] == 'A') {
        printf("%d ", a[0]);
    } else if (b[1] == 'B') {
        printf("%d ", a[1]);
    } else if (b[1] == 'C') {
        printf("%d ", a[2]);
    }
    if (b[2] == 'A') {
        printf("%d", a[0]);
    } else if (b[2] == 'B') {
        printf("%d", a[1]);
    } else if (b[2] == 'C') {
        printf("%d", a[2]);
    }
    return 0;
}

by Gcc_Gdb_7_8_1 @ 2024-10-09 21:46:38

@koishi0514 getchar() 应该是拿来读换行 (\n) 的。


by koishi0514 @ 2024-10-09 21:52:35

@Gcc_Gdb_7_8_1 加两行是为啥呢,我加一行零分,加两行满分,但自己调试的时候加一行结果是对的,加两行第一个数字莫名消失


by LionBlaze @ 2024-10-09 21:55:46

@koishi0514 数据有问题(可能不能说是问题),换行符是 \r\n 两个字符。


by Gcc_Gdb_7_8_1 @ 2024-10-09 21:56:53

@koishi0514 可能是 Linux 环境和 Windows 环境的差别吧...洛谷评测机是 Linux 环境,你家电脑应该是 Windows。


by Gcc_Gdb_7_8_1 @ 2024-10-09 21:57:45

球关


by Gcc_Gdb_7_8_1 @ 2024-10-09 21:59:34

@koishi0514 建议以后读连续几个字符且之间没有空格是使用 scanf("%s", ...) (即读字符串)


by koishi0514 @ 2024-10-09 22:01:22

@Gcc_Gdb_7_8_1 Linux和windows的换行符不一样啊,而且洛谷居然是Linux环境,这下大彻大悟了,感谢大佬


by forzhoufanting @ 2024-10-15 20:38:18

无敌了,他数据输入最后一个是有空格的


|