最小年龄的3个职工
題目截圖:
?
思路:
關鍵字順序:年齡>工號>姓名,從小到大自定義 cmp?函數,然后使用內置的 qsort?函數即可。qsort?的用法詳見另一篇博客。
?
代碼如下:
1 /* 2 最小年齡的3個職工 3 */ 4 5 #include <stdio.h> 6 #include <string.h> 7 #include <math.h> 8 #include <stdlib.h> 9 #include <time.h> 10 #include <stdbool.h> 11 12 // 員工結構體定義 13 typedef struct { 14 int id; // 職工號 15 char name[11]; // 姓名 16 int age; // 年齡 17 } staff; 18 staff staffs[31]; // 存儲所有員工數據 19 20 // 自定義排序 21 // 關鍵字順序:年齡>工號>姓名,從小到大。 22 int cmp(const void* a, const void* b) { 23 staff* c = (staff*)a; 24 staff* d = (staff*)b; 25 if(c->age == d->age) { 26 if(c->id == d->id) { 27 return strcmp(c->name, d->name); 28 } else { 29 return c->id - d->id; 30 } 31 } else { 32 return c->age - d->age; 33 } 34 } 35 36 int main() { 37 int n, i; 38 while(scanf("%d", &n) != EOF) { 39 for(i=0; i<n; ++i) { // 輸入員工信息 40 staff s; 41 scanf("%d %s %d", &s.id, s.name, &s.age); 42 staffs[i] = s; 43 } 44 // 按要求排序 45 qsort(staffs, n, sizeof(staffs[0]), cmp); 46 // 輸出結果行數為N和3的較小值 47 int min = (n<3 ? n : 3); 48 for(i=0; i<min; ++i) { // 按要求輸出 49 staff s = staffs[i]; 50 printf("%d %s %d\n", s.id, s.name, s.age); 51 } 52 } 53 54 return 0; 55 }?
轉載于:https://www.cnblogs.com/coderJiebao/p/HustTest16.html
總結
- 上一篇: Android基础教程pdf
- 下一篇: 在Spring Boot项目中使用Spo