#include<stdio.h> #define MAXNUM 20 typedef struct node { int num; char name[20]; float score; }ElemType; //输入数据函数 void Create(ElemType stu[],int *n) { struct node *k; int i = 1; printf("Please input n="); scanf("%d",&*n); for (k = stu + 1; k <= stu + *n; k ++, i++) { printf("please input %d\tnum\tname\tscore\n", i); scanf("%d%s%f",&k->num, k->name, &k->score); } } //比较成绩高低函数 int Max(ElemType a[], int n) { float maxScore; int i,x; maxScore = a[1].score; for(i = 1; i <= n; i++) { if(a[i].score >= maxScore) { maxScore = a[i].score; x = i; } } return x; } int Min(ElemType a[], int n) { float minScore; int i,y; minScore = a[1].score; for(i = 1; i <= n; i++) { if(a[i].score <= minScore) { minScore = a[i].score; y = i; } } return y; } void main() { ElemType a[MAXNUM+1]; int i,n; int k,j;//标记最值的下标 Create(a,&n); printf("\nCreate is completed!\n----The data is----\n num\t name\t\t score\n"); for (i = 1;i <= n; i++) { printf("%d\t%s\t\t%f\n",a[i].num, a[i].name, a[i].score); } k = Max(a,n); j = Min(a,n); // printf("%d\n",k); // printf("%d\n",j); printf("---------------------------------------------\n"); printf("higher:%d\t%s\t\t%f\n",a[k].num, a[k].name, a[k].score); printf("lower:%d\t%s\t\t%f\n",a[j].num, a[j].name, a[j].score); }