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

全國計算機二級 C 語言上機考試輸入方式詳解:鍵盤輸入、文件重定向、標準輸入流

     編輯:C 語言問答

考試環境輸入機制

  • **上機題通常提供測試數據文件** (如 in.txt),考生程序從 **標準輸入 (stdin)** 讀取。
  • 考試系統通過 **輸入重定向** 運行:your_program.exe < in.txt。
  • **程式碼中只需用 scanf/getchar/fgets 讀取 stdin**,**無需** 也不應在代碼中 fopen("in.txt", "r")。

鍵盤輸入 vs 重定向輸入

模式適用場景程式碼差異
鍵盤交互輸入調試階段、填空題手動測試無差異,scanf 等待用戶敲鍵
文件重定向正式評測、批量測試無差異,scanf 從文件流讀取
管道輸入Linux 進程間通信無差異,scanf 從管道讀取

填空題特殊要求

  • **必須在給定框架內填寫關鍵行**,不可重寫 main、不可加 #include (除非指定)。
  • **輸出格式嚴格對齊**:空格、換行、寬度、精度,**多一字符扣分**。
  • **常用輸出模式**:printf("%d", x) 末尾無空格;printf("%d ", x) 有空格;printf("%d\n", x) 換行。

實戰模擬腳本 (Windows PowerShell)


# 編譯
gcc -std=c11 -Wall -Wextra -o main.exe main.c
# 執行測試
Get-Content in.txt | .\main.exe
# 或
.\main.exe < in.txt
# 對比輸出
Get-Content out.txt
.\main.exe < in.txt | diff - out.txt

常見輸入處理陷阱


// 1. scanf 留下換行符,後續 getchar/fgets 讀到空行
scanf("%d", &n);
getchar();  // 吞掉換行符
fgets(buf, sizeof(buf), stdin);

// 2. 多組測試數據,EOF 結束
while (scanf("%d", &x) == 1) { ... }

// 3. 讀取整行含空格
fgets(line, sizeof(line), stdin);
line[strcspn(line, "\n")] = '\0';  // 去除換行
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved