/* Ch 11 demo: array of records */ #include #include #define kNameLength 20 typedef struct { char name[kNameLength]; /* student name */ int id; /* 5 digit ID */ double gpa; /* grade pt avg */ char level; /* F, S, J, or C: class standing */ } student_t; /* Find the highest of two students based on gpa */ student_t compare_students(const student_t student1, const student_t student2) { if (student1.gpa > student2.gpa) { return student1; } else { return student2; } } int main(void) { student_t course[35]; /* list of students in a course */ student_t highest; /* higher of two students */ int count = 1; /* number of students */ int one, two; /* two specific students */ double diff; /* difference in gpa's */ int student; /* array index */ scanf("%s", course[1].name); /* read student data until sentinel encountered */ while (strcmp(course[count].name, "quit") != 0) { scanf("%d %lf %c\n", &course[count].id, &course[count].gpa, &course[count].level); count++; scanf("%s", course[count].name); } count--; /* display the list of students */ for (student = 1; student <= count; student += 1) { printf("%d %s %d %4.2f %c\n",student, course[student].name, course[student].id, course[student].gpa, course[student].level); } printf("Enter two student numbers: "); scanf("%d%d", &one, &two); diff = course[one].gpa - course[two].gpa; printf("\nThe difference betwwen %s and %s is %4.2f.\n", course[one].name, course[two].name, diff); highest = compare_students(course[one],course[two]); printf("%s is highest.\n", highest.name); return 0; }