学生类型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
方法输出其信息。
这段代码实现了对学生信息的处理,并根据指定性别找出最高分者的功能。