二级C语言 程序设计题

按题目要求编写完整功能代码,参考答案点击按钮展开

75程序设计题:结构体数组找最高分学生

N 名学生数据存于结构体数组,编写函数 fun 返回最高分学生的下标。结构体含学号 num、姓名 name、成绩 score。

#include <stdio.h>
#define N 5
struct STU
{
    char num[10];
    char name[20];
    int score;
};
/* 函数功能:在结构体数组 std 中(N 个元素)找最高分学生,
   返回其下标。请在下方编写 fun 函数体。 */
int fun(struct STU std[], int n)
{
    /* 请在这里编写代码 */

}

int main()
{
    struct STU s[N] = {
        {"101","张三",78}, {"102","李四",92},
        {"103","王五",85}, {"104","赵六",92},
        {"105","钱七",66}
    };
    int idx = fun(s, N);
    printf("最高分学生: %s %s %d\n", s[idx].num, s[idx].name, s[idx].score);
    return 0;
}
参考答案
int fun(struct STU std[], int n)
{
int i, max_idx = 0;
for(i=1; i<n; i++)
{
if(std[i].score > std[max_idx].score)
max_idx = i;
}
return max_idx;
}
解析

考点:结构体数组 + 打擂台算法。用 max_idx 记录当前最高分下标(不用记录分数值,直接比下标对应的 score)。注意初值 max_idx=0,循环从 i=1 开始。用 > 而不是 >=,保证多个同分时返回第一个(若题目要最后一个则用 >=)。