int maxscore(node* L, int mode) {//查找各科最高分 int max = 0; node* p = L->next; if (mode == 1) {//高数最高分 while (p != NULL) { if (p->math > max) { max = p->math; } p = p->next; } return max; } else if (mode == 2) {//英语最高分 while (p != NULL) { if (p->english > max) { max = p->english; } p = p->next; } return max; } else if (mode == 3) {//数据结构最高分 while (p != NULL) { if (p->shujujiegou > max) { max = p->shujujiegou; } p = p->next; } return max; } else if (mode == 4) {//web最高分 while (p != NULL) { if (p->web > max) { max = p->web; } p = p->next; } return max; } else if (mode == 5) {//数据库最高分 while (p != NULL) { if (p->shujuku > max) { max = p->shujuku; } p = p->next; } return max; } else if (mode == 6) {//总分最高分 while (p != NULL) { if (p->sum > max) { max = p->sum; } p = p->next; } return max; } }
时间: 2024-03-28 12:39:21 浏览: 18
这段代码中的函数 maxscore 接受两个参数,一个是链表的头节点 L,另一个是 mode,表示要查找哪一科目或者总分的最高分。函数中使用一个变量 max 来保存最高分,并且使用指针 p 来遍历整个链表。根据 mode 的不同,分别在遍历链表的过程中找到对应科目的最高分或者总分的最高分,并将其保存在 max 变量中,最后返回 max 变量。
需要指出的是,这段代码中的 if-else 分支比较多,可读性不太好。可以考虑使用一个 switch-case 语句来代替这些 if-else 分支,代码会更加简洁易懂。
相关问题
//从键盘读入学生成绩,找出最高分,并输出学生成绩等级。 //等级>=最高分-10,等级为‘A’ //等级>=最高分-20,等级为‘B’ //等级>=最高分-30,等级为‘C’ //其余,等级为‘D’用java语言实现
好的,我可以帮你写出Java代码实现这个功能。以下是代码:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); // 学生人数
int[] scores = new int[n]; // 存储学生成绩
// 读入学生成绩
for (int i = 0; i < n; i++) {
scores[i] = scanner.nextInt();
}
// 找出最高分
int maxScore = scores[0];
for (int i = 1; i < n; i++) {
if (scores[i] > maxScore) {
maxScore = scores[i];
}
}
// 输出学生成绩等级
for (int i = 0; i < n; i++) {
int score = scores[i];
char grade;
if (score >= maxScore - 10) {
grade = 'A';
} else if (score >= maxScore - 20) {
grade = 'B';
} else if (score >= maxScore - 30) {
grade = 'C';
} else {
grade = 'D';
}
System.out.println("Student " + (i + 1) + " score is " + score + " and grade is " + grade);
}
}
}
```
你可以将上面的代码复制到你的Java环境中运行,输入学生人数和学生成绩,程序会输出每个学生的成绩和等级。
利用数据结构c语言单链表编写一个void MaxMin(LinkList L)//显示最高分和最低分的学生信息
好的,下面是用C语言单链表实现显示最高分和最低分的学生信息的代码:
```c
#include <stdio.h>
#include <stdlib.h>
//定义链表节点结构体
typedef struct Node{
int score;
char name[20];
struct Node *next;
}Node, *LinkList;
//创建链表
void CreateList(LinkList *L){
*L = (LinkList)malloc(sizeof(Node));
(*L)->next = NULL;
}
//插入链表节点
void InsertNode(LinkList L, char name[], int score){
Node *p = (Node*)malloc(sizeof(Node));
p->score = score;
strcpy(p->name, name);
p->next = L->next;
L->next = p;
}
//查找链表最高分和最低分学生信息
void MaxMin(LinkList L){
int maxScore = 0, minScore = 100;
char maxName[20], minName[20];
Node *p = L->next;
while(p){
if(p->score > maxScore){
maxScore = p->score;
strcpy(maxName, p->name);
}
if(p->score < minScore){
minScore = p->score;
strcpy(minName, p->name);
}
p = p->next;
}
printf("最高分学生:%s,分数:%d\n", maxName, maxScore);
printf("最低分学生:%s,分数:%d\n", minName, minScore);
}
//主函数
int main(){
LinkList L;
CreateList(&L);
InsertNode(L, "小明", 90);
InsertNode(L, "小红", 85);
InsertNode(L, "小刚", 95);
InsertNode(L, "小李", 80);
MaxMin(L);
return 0;
}
```
在这个代码中,我们通过定义链表节点结构体和创建链表函数来实现创建单链表。然后,我们通过插入链表节点函数来逐个添加学生信息(姓名和分数)。最后,我们通过查找最高分和最低分学生信息的函数来获得链表中的最高分和最低分学生信息,然后输出它们的姓名和分数。