根据ASCII优先级比较字符

时间:2018-10-15 02:50:31

标签: c character scanf

我编写了一个代码,将三个字符进行比较,并根据ASCII编号从最高到最低优先级对其进行排序。首先输入要解决的许多情况,然后输入三个字符进行排序。例如,如果我们输入& ^ %,我们期望的输出是Case #1: % & ^

#include <stdio.h>

int main(){
    int cases, counter = 1;
    char ch1, ch2, ch3, storage;
    scanf("%d", &cases);
    getchar();

    while(counter <= cases){
        scanf("%c %c %c", &ch1, &ch2, &ch3);

        //process

        while(ch1 < ch2 < ch3){
            if(ch1 < ch2){
                storage = ch1;
                ch1 = ch2;
                ch2 = storage;
            }
            if(ch2 < ch3){
                storage = ch2;
                ch2 = ch3;
                ch3 = storage;
            }
        }

        //end process

        printf("case #%d: %c %c %c\n", counter, ch1, ch2, ch3);
        counter++;
    }

    return 0;
}

但是在我输入三个字符后卡住了,它不会显示输出,并且我不能为下一种情况输入任何字符。

1 个答案:

答案 0 :(得分:0)

您陷入了while循环中,请尝试重新格式化比较。

while((ch1 < ch2) || (ch2 < ch3))