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

PAT 甲/乙級查找元素專題習題集精解:排名、人口普查、挖掘機技術

     編輯:關於C語言

B1004 成績排名

題意:讀入 n 學生 (姓名、學號、分數),輸出最高分與最低分學生的姓名與學號。分數唯一,無並列。

核心邏輯:單次掃描維護 max/min 結構體。

struct Student { char name[15], id[15]; int score; };
// 初始化 max.score=-1, min.score=101
// 掃描更新,最後輸出

B1028 人口普查

題意:給定 N 人姓名與生日 (yyyy/mm/dd),過濾非法日期 (早於 1814/09/06 或晚於 2014/09/06),輸出合法人數、最年長者、最年輕者姓名。

關鍵技巧:日期字串直接 strcmp 比較 (格式固定、零補齊),或解析 yyyy,mm,dd 整數比較。

// 字串比較法 (最簡潔)
char floor[] = "1814/09/06", upper[] = "2014/09/06";
if (strcmp(date, floor) < 0 || strcmp(date, upper) > 0) continue; // 非法
// 更新最早/最晚

B1032 挖掘機技術哪家強

題意:N 筆記錄 (學校編號、分數),累加各校總分,輸出最高總分學校編號與總分。學校編號 1~N 連續。

解法:陣列 school[100010] 直接索引累加,最後線性掃描找最大值。

int school[100010] = {0};
for (i=0; i max) { max=school[i]; ans=i; }

A1011 World Cup Betting

題意:3 場比賽,各給 W/T/L 賠率。每場選最高賠率選項,最終獲利 = (∏max_odds * 0.65 - 1) * 2,輸出三選項代碼與獲利 (保留 2 位小數)。

核心:三輪各找最大值與索引,映射 {W,T,L} 輸出。

共同考點總結

題目核心資料結構關鍵演算法陷阱
B1004結構體單掃描極值分數唯一無並列
B1028字串/結構體日期範圍過濾+極值日期字串直接比較/解析整數均可
B1032陣列直接定址累加學校編號連續 1~N,陣列大小 N+1
A1011陣列/字元映射三輪找最大浮點數精度、輸出格式 %.2f

總結

此組題目均屬「單次掃描、直接定址/極值維護」的基礎查找類問題,核心考察:**結構體使用、字串/日期比較、陣列直接定址累加、浮點數格式化輸出**。屬 PAT 入門必刷題組。

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