求结构体的最值

学生类型ST的定义如下:

typedef struct student{
char name[10],id[10];
int gender;
int age;
double scored;
} ST;

编写函数,返回指定学生数组中的男生或女生的最高分的地址(约定:整数0和1分别代表男和女)。

总体来说,这道题目的解题思路是通过遍历学生数组,利用条件判断找出指定性别学生中的最高分者,并将其信息输出。

首先,定义一个ST类,其中包含了学生的姓名、学号、性别、年龄和成绩等属性。

class ST {
    String name;
    String id;
    int gender;
    int age;
    double scored;
}

接着定义一个maxST方法用于在给定的学生数组中找出指定性别的学生中成绩最高的学生,并返回该学生的信息。

  public static ST[] initData(int n) {
        Scanner scanner = new Scanner(System.in);
        ST[] students = new ST[n];
        for (int i = 0; i < n; i++) {
            students[i] = new ST();
            students[i].name = scanner.next();
            students[i].id = scanner.next();
            students[i].gender = scanner.nextInt();
            students[i].age = scanner.nextInt();
            students[i].scored = scanner.nextDouble();
        }
        return students;
    }

总体代码如下:

import java.util.Scanner;

class ST {
    String name;
    String id;
    int gender;
    int age;
    double scored;
}

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        ST[] students = initData(n);
        output(maxST(students, n, 0));
        output(maxST(students, n, 1));
    }

    public static ST[] initData(int n) {
        Scanner scanner = new Scanner(System.in);
        ST[] students = new ST[n];
        for (int i = 0; i < n; i++) {
            students[i] = new ST();
            students[i].name = scanner.next();
            students[i].id = scanner.next();
            students[i].gender = scanner.nextInt();
            students[i].age = scanner.nextInt();
            students[i].scored = scanner.nextDouble();
        }
        return students;
    }

    public static ST maxST(ST[] d, int n, int k) {
        ST maxStudent = null;
        double maxScore = Double.MIN_VALUE;
        
        for (int i = 0; i < n; i++) {
            if (d[i].gender == k && d[i].scored > maxScore) {
                maxScore = d[i].scored;
                maxStudent = d[i];
            }
        }
        
        return maxStudent;
    }

    public static void output(ST student) {
        if (student == null) {
            System.out.println("null");
        } else {
            System.out.printf("%s,%s,%d,%d,%4.2f\n", student.name, student.id, student.gender, student.age, student.scored);
        }
    }
}

总结大概如下

定义了一个ST类,其中包含了学生的姓名、学号、性别、年龄和成绩等属性。

initData方法用于从输入设备上输入相关数据并返回学生数组。

maxST方法接收学生数组、数组长度和性别作为参数,然后遍历数组中指定性别的学生,找出最高分者并返回其信息。

output方法用于输出学生信息,如果学生为空则输出"null"。

main方法中,首先通过输入获取学生的数量n,然后调用initData方法初始化学生数据,接着通过调用maxST方法找出男生和女生中的最高分者,并通过output方法输出其信息。

这段代码实现了对学生信息的处理,并根据指定性别找出最高分者的功能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值