首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言 Switch 無法執行:變數 run 未宣告與 getchar 緩衝區問題

     編輯:程式設計疑難解答

編譯錯誤

run = getchar();  // 錯誤:run 未宣告
switch(run) { ... }

修正步驟

  1. 宣告變數:char run; 或 int run;(getchar 回傳 int)。
  2. 處理緩衝區殘留換行符:scanf("%d%d", &a, &b) 後緩衝區留有 '\n',getchar() 會直接讀到它。解法:
    • 在 getchar() 前加一個 getchar() 吃掉 '\n'
    • 或用 scanf(" %c", &run)(格式字串前加空白跳過空白字元)

完整修正代碼

#include 

void action1(int x, int y) { printf("x+y=%d\n", x+y); }
void action2(int x, int y) { printf("x-y=%d\n", x-y); }
void action3(int x, int y) { printf("x*y=%d\n", x*y); }
void action4(int x, int y) { printf("x/y=%d\n", x/y); }

int main() {
    int a, b;
    printf("請輸入a與b的值:\na:\nb:\n");
    scanf("%d%d", &a, &b);
    
    char run;
    printf("A加法 B減法 C乘法 D除法\n");
    scanf(" %c", &run);  // 關鍵:%c 前加空白跳過換行符
    
    switch(run) {
        case 'A': action1(a,b); break;
        case 'B': action2(a,b); break;
        case 'C': action3(a,b); break;
        case 'D': action4(a,b); break;
        default: putchar('\a'); break;
    }
    return 0;
}

其他問題

  • viod action2 拼寫錯誤 → void action2。
  • #include 缺少標頭檔名 → #include 。

修正變數宣告、輸入緩衝區處理與拼寫錯誤後,switch 即可正常分派四則運算功能。

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