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

C 語言互動式猜測星期幾:鍵盤輸入首字母判斷邏輯完整實作

     編輯:關於C

程式功能

使用者輸入星期英文首字母,程式判斷對應星期。若首字母重複 (T/Tu/Th, S/Sa/Su),再要求輸入第二字母判斷。支援大小寫不敏感,輸入 Q/q 結束。

完整原始碼


#include <stdio.h>
#include <conio.h>  // Windows 專用 _getch()

int main() {
    char letter;
    printf("Please input the first letter (Q to quit):\n");
    
    while ((letter = _getch()) != 'Q' && letter != 'q') {
        printf("%c:\n", letter);
        
        if (letter == '\n' || letter == '\r') {
            printf("\n");
            continue;
        }
        
        switch (letter) {
            case 'M': case 'm':
                printf("Monday\n\n");
                break;
                
            case 'T': case 't':
                printf("Please input next letter: ");
                letter = _getch();
                if (letter == 'U' || letter == 'u')
                    printf("Tuesday\n\n");
                else if (letter == 'H' || letter == 'h')
                    printf("Thursday\n\n");
                else
                    printf("Not a weekday!\n\n");
                break;
                
            case 'W': case 'w':
                printf("Wednesday\n\n");
                break;
                
            case 'F': case 'f':
                printf("Friday\n\n");
                break;
                
            case 'S': case 's':
                printf("Please input next letter: ");
                letter = _getch();
                if (letter == 'A' || letter == 'a')
                    printf("Saturday\n\n");
                else if (letter == 'U' || letter == 'u')
                    printf("Sunday\n\n");
                else
                    printf("Not a weekday!\n\n");
                break;
                
            default:
                printf("^v^ Not defined yet ^v^\n\n");
                break;
        }
    }
    return 0;
}

關鍵技術點解析

技術點說明
_getch() / getch()無緩衝、無回顯讀取單一字元,Windows conio.h 提供。Linux 用 termios 設定原始模式。
switch-case 處理字元字元提升為 int 比較,支援多標籤 case 'M': case 'm': 簡化大小寫判斷。
巢狀輸入首字母歧義時,立即呼叫第二次 _getch() 讀取次字母。
迴圈結構while((letter=_getch())!='Q'...) 將讀取與判斷合併,簡潔高效。

跨平台移植建議 (Linux/macOS)


// Linux 版 getch 實作
#include <termios.h>
#include <unistd.h>

int getch(void) {
    struct termios oldt, newt;
    int ch;
    tcgetattr(STDIN_FILENO, &oldt);
    newt = oldt;
    newt.c_lflag &= ~(ICANON | ECHO);
    tcsetattr(STDIN_FILENO, TCSANOW, &newt);
    ch = getchar();
    tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
    return ch;
}

執行範例


Please input the first letter (Q to quit):
T:
Please input next letter: u
Tuesday

S:
Please input next letter: a
Saturday

Q

擴充想法

  • 支援完整單字輸入 (掃描 scanf("%s") 比對前綴)。
  • 加入中文星期顯示 (需 setlocale 與寬字元支援)。
  • 整合至選單系統作為快捷鍵導航。

教學價值:此程式展示 switch-case 多層決策、字元無緩衝輸入、大小寫處理、迴圈控制等 C 語言控制台互動核心技巧,適合初學者練習。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved