首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

OJ題解:ASCII碼排序 - 三字元由小到大

     編輯:關於C語言

題目要求

每行輸入三個字元(無空格),按ASCII碼升序輸出,字元間以單一空格分隔。多組測試資料直到EOF。

演算法:三元素排序網路

固定三元素,兩兩比較交換即可完成排序(冒泡/選擇排序簡化版):

if (a > b) swap(a,b);
if (a > c) swap(a,c);
if (b > c) swap(b,c);

完整原始碼

#include <stdio.h>

int main() {
    char a, b, c, t;
    while (scanf("%c %c %c", &a, &b, &c) != EOF) {
        getchar();  // 吸收換行符
        if (a > b) { t=a; a=b; b=t; }
        if (a > c) { t=a; a=c; c=t; }
        if (b > c) { t=b; b=c; c=t; }
        printf("%c %c %c\n", a, b, c);
    }
    return 0;
}

輸入處理細節

  • scanf("%c %c %c", ...) 格式字串中的空格會跳過空白字元(含換行)
  • 但若輸入為連續字元如 qwe,需用 %c%c%c 且配合 getchar() 吃掉換行
  • 原代碼格式字串含空格,適用 q w e 格式;若實測為 qwe 應移除空格

範例

輸入: qwe
ASCII: q=113, w=119, e=101
排序: e(101) q(113) w(119)
輸出: e q w ✓
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved