题目描述
解题思路
自定义结构体类型,成员包括姓名,学号,成绩。
对于姓名和学号是字符串,注意有\0,数组大小最小为11
我们分别用a,b表示最低成绩的下标,最高成绩的下标。用min,max分别表示最小成绩和最大成绩。
循环进行比较找出最低成绩的下标与最高成绩的下标。最后输出即可。
具体实现看下面的代码:
代码实现
#include <stdio.h> #include <stdlib.h> typedef struct studet { char name[11]; char id[11]; int grade; }stu; int main() { int n; scanf("%d", &n); stu* people = (stu*)malloc(n * sizeof(stu)); int i = 0; int a = 0, b = 0, min = 0, max = 0; for (i = 0; i < n; i++) { scanf("%s%s%d", (people+i)->name, (people + i)->id, &(people + i)->grade); if (i == 0)//预设第一个人的成绩既是最大也是最小的 { min = (people + i)->grade; max = (people + i)->grade; } //进行比较,找出最低成绩的下标与最高成绩的下标 if ((people + i)->grade < min) { min = (people + i)->grade; a = i; } if ((people + i)->grade > max) { max = (people + i)->grade; b = i; } } //输出 printf("%s %s\n", (people + b)->name, (people + b)->id); printf("%s %s\n", (people + a)->name, (people + a)->id); return 0; }