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

C語言入門教程(二):變量、輸入輸出與第一個完整交互程序

     編輯:關於C語言

C語言入門教程(二):變量、輸入輸出與第一個完整交互程序

接續上節環境搭建,本節講解變量聲明、數據類型、scanf 輸入、printf 格式化輸出,構建第一個完整的用戶交互程序。

一、變量與數據類型基礎

常用類型對照表

變量聲明與初始化

int decks = 0;           // 聲明並初始化
int count;               // 聲明未初始化(值不確定)
count = 10;              // 賦值
int a = 1, b = 2, c = 3; // 同類型鏈式聲明

規範:變量名只能含字母、數字、下劃線,不能數字開頭,區分大小寫,避開關鍵字。

二、輸入輸出函數詳解

1. printf 格式化輸出

printf("格式字符串", 參數列表);

常用格式符:

  • %d / %i:有符號十進制整數
  • %u:無符號十進制整數
  • %f:浮點數(默認 6 位小數)
  • %.2f:保留 2 位小數
  • %c:單字符
  • %s:字符串
  • %%:輸出百分號本身
  • \n:換行,\t:製表符

2. scanf 格式化輸入

scanf("格式字符串", &變量1, &變量2, ...);

關鍵點:

  • **必須取地址**:&variable 傳遞變量地址,否則無法修改變量值
  • 返回值:成功匹配賦值的項目數,失敗返回 EOF
  • 空白字符(空格、換行、製表)默認作為分隔符跳過

三、完整交互程序:撲克牌張數計算器

需求

用戶輸入副數,程序計算並輸出總張數(1副=52張),包含輸入驗證。

代碼:cards.c

#include 

int main() {
    int decks;
    
    // 1. 提示輸入
    puts("請輸入撲克牌副數:");
    
    // 2. 讀取輸入
    if (scanf("%d", &decks) != 1) {
        printf("錯誤:請輸入有效整數\n");
        return 1;
    }
    
    // 3. 業務邏輯驗證
    if (decks < 1) {
        puts("無效的副數:至少需要 1 副");
        return 1;
    }
    
    // 4. 計算並輸出結果
    int total = decks * 52;
    printf("總共有 %d 張牌\n", total);
    
    return 0;
}

編譯運行演示

$ gcc cards.c -o cards
$ ./cards
請輸入撲克牌副數:
3
總共有 156 張牌

$ ./cards
請輸入撲克牌副數:
0
無效的副數:至少需要 1 副

$ ./cards
請輸入撲克牌副數:
abc
錯誤:請輸入有效整數

四、程序結構分析

int main() {
    // 1. 變量聲明
    int decks;
    
    // 2. 輸出提示
    puts("提示信息");
    
    // 3. 輸入讀取 + 格式驗證
    if (scanf("%d", &decks) != 1) { ... }
    
    // 4. 業務邏輯驗證
    if (decks < 1) { ... }
    
    // 5. 核心計算
    int total = decks * 52;
    
    // 6. 格式化輸出結果
    printf("結果: %d\n", total);
    
    // 7. 返回狀態碼
    return 0;  // 成功
    // return 1; // 失敗
}

五、進階:輸入緩衝區清理

scanf 留下換行符在緩衝區,後續 getchar/fgets 會誤讀。清理方法:

// 方法1:讀取並丟棄剩餘字符
int c;
while ((c = getchar()) != '\n' && c != EOF);

// 方法2:使用 scanf 格式字符串跳過空白(推薦)
scanf("%d", &decks);  // %d 自動跳過前導空白
// 但若輸入 "3 abc","abc" 仍殘留
// 完整清理:
scanf("%*[^\n]"); scanf("%*c");  // 丟棄到換行符含換行符

六、調試技巧:打印中間值

// 臨時調試打印
printf("[DEBUG] decks = %d\n", decks);
printf("[DEBUG] total = %d\n", total);
// 正式版本刪除或註釋

七、本節作業

  1. 修改程序:輸入長寬高,計算長方體體積與表面積
  2. 編寫程序:輸入華氏溫度,轉換輸出攝氏溫度(公式:C = (F-32)*5/9)
  3. 實驗:輸入 3.14 給 %d,觀察 scanf 行為與返回值
  4. 閱讀 man 3 scanf 了解 %[]、%n 等高級格式符

總結

掌握「聲明→提示→輸入驗證→邏輯驗證→計算→格式化輸出→返回碼」這一標準程序骨架,是編寫健壯 C 程序的基礎。下一節將進入指針世界,解鎖 C 語言最核心也最迷人的特性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
類型關鍵字大小(典型)格式符範圍示例
整數int4 字節%d / %i-21億 ~ +21億
短整數short2 字節%hd-32768 ~ 32767
長整數long4/8 字節%ld平台相關
無符號整數unsigned int4 字節%u0 ~ 42億
字符char1 字節%c-128~127 或 0~255
單精度浮點float4 字節%f~7 位有效數字
雙精度浮點double8 字節%lf~15 位有效數字