标签:png for scanf eve spl bsp ccf 数组 hide
这道题就比较简单了,大概就考察了结构体的使用,也没有其他的了,连排序的必要的没有。让我们来看一下题目
同样,需求很明显,要输出最高分和最低分人的学号姓名。那这样子处理方案就很明显了,先把数据输进去再用qsort排个序,输出数组第一个和最后一个,完事。不过我们得知道 stdlib 里的 去sort如何使用给或者是自己写一个排序算法。排序算法和qsort我在博客其他文章里有介绍,在这里不做赘述。
代码如下:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #define MAX_SIZE 12 4 #define MAX_STD_SEIZE 150 5 6 typedef struct data 7 { 8 char name[MAX_SIZE]; 9 int ID[MAX_SIZE]; 10 int Mark; 11 } STD; 12 13 int cmp(const void *a, const void *b); 14 15 int main() 16 { 17 int n, i = 0; 18 int Min_Mark = 100, Max_Mark = 0; 19 int Min_Pos, Max_Pos; 20 scanf("%d", &n); 21 STD Student[MAX_STD_SEIZE]; 22 23 for (int i = 0; i < n; i++) 24 { 25 scanf("%s %s %d", Student[i].name, Student[i].ID, &Student[i].Mark); 26 getchar(); 27 } 28 qsort(Student, n, sizeof(Student[0]), cmp); 29 printf("%s %s\n", Student[0].name, Student[0].ID); 30 printf("%s %s\n", Student[n-1].name, Student[n-1].ID); 31 32 return 0; 33 } 34 35 int cmp(const void *a, const void *b) 36 { 37 return (* (STD *) a).Mark > (* (STD *) b).Mark ? -1 : 1; 38 }
其实这道题不一定要排序,我们可以在输入的时候定义四个变量分别存储最大值、最小值、最大值索引,最小值索引。输入完就选出了最高分最低分,时间复杂度为O(n),比O(nlogn)的快排更加省事。
代码如下
1 #include <stdio.h> 2 #include <stdlib.h> 3 #define MAX_SIZE 12 4 #define MAX_STD_SEIZE 150 5 6 typedef struct 7 { 8 char name[MAX_SIZE]; 9 int ID[MAX_SIZE]; 10 int Mark; 11 } STD; 12 13 int main() 14 { 15 int n, i = 0; 16 int Min_Mark = 100, Max_Mark = 0; 17 int Min_Pos, Max_Pos; 18 scanf("%d", &n); 19 STD Student[MAX_STD_SEIZE]; 20 21 while (n--) 22 { 23 24 scanf("%s %s %d", Student[i].name, Student[i].ID, &Student[i].Mark); 25 if (Min_Mark > Student[i].Mark) 26 { 27 Min_Pos = i; 28 Min_Mark = Student[i].Mark; 29 } 30 if (Max_Mark < Student[i].Mark) 31 { 32 Max_Pos = i; 33 Max_Mark = Student[i].Mark; 34 } 35 i++; 36 getchar(); 37 } 38 39 printf("%s %s\n", Student[Max_Pos].name, Student[Max_Pos].ID); 40 printf("%s %s\n", Student[Min_Pos].name, Student[Min_Pos].ID); 41 42 return 0; 43 }
好了,还是那句话
——前路多艰,诸君共勉!
标签:png for scanf eve spl bsp ccf 数组 hide
原文地址:https://www.cnblogs.com/daker-code/p/11618622.html