用C语言输入四个同学成绩,输出其中最大值
时间: 2024-10-26 18:03:13 浏览: 30
在C语言中,我们可以使用数组和循环结构来输入四个同学的成绩,并通过比较找出最大的那个。这里是一个简单的示例:
```c
#include <stdio.h>
int main() {
// 定义一个包含4个元素的整数数组来存储成绩
int scores[4];
// 输入四个成绩
for (int i = 0; i < 4; i++) {
printf("请输入第 %d 位同学的成绩:", i + 1);
scanf("%d", &scores[i]);
}
// 初始化一个变量max_score为数组的第一个元素,假设它是最大值
int max_score = scores[0];
// 遍历数组,如果找到比当前max_score更大的值,则更新max_score
for (int i = 1; i < 4; i++) {
if (scores[i] > max_score) {
max_score = scores[i];
}
}
// 输出最大值
printf("这四个人中成绩最大的是:%d\n", max_score);
return 0;
}
```
相关问题
用c语言写一个学生成绩管理系统 该系统用于管理学生的课程成绩,要求实现以下功能: 1、计算每位同学的平均分,对所有同学的成绩按平均分排序,给出名次; 2、计算各课程分数段(90-100、80-89、60-79、60以下)的人数。 数据至少有10个学生的原始数据。原始数据如下: 学号 姓名 C程序设计 高等数学 英语 线性代数 3. 用户输入学生学号可直接查找到其各科分数以及名次
以下是一个简单的学生成绩管理系统的示例代码,包括上述功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 10
#define MAX_NAME_LEN 20
typedef struct {
int id;
char name[MAX_NAME_LEN];
float scores[4];
float avg;
int rank;
} Student;
void read_scores(Student students[], int n_students);
void calculate_avg(Student students[], int n_students);
void calculate_rank(Student students[], int n_students);
void print_scores(Student students[], int n_students);
void print_rankings(Student students[], int n_students);
void print_score_segments(Student students[], int n_students);
void get_student_info(Student students[], int n_students, int id);
int main() {
Student students[MAX_STUDENTS];
int n_students = 0;
int choice;
while (1) {
printf("请选择操作:\n");
printf("1. 输入学生成绩\n");
printf("2. 计算平均分和名次\n");
printf("3. 按平均分排序并输出\n");
printf("4. 输出各科分数段的人数\n");
printf("5. 查找学生信息\n");
printf("0. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
read_scores(students, n_students);
n_students++;
break;
case 2:
calculate_avg(students, n_students);
calculate_rank(students, n_students);
printf("计算完成!\n");
break;
case 3:
qsort(students, n_students, sizeof(Student),
[](const void* a, const void* b) -> int {
const Student* s1 = (const Student*) a;
const Student* s2 = (const Student*) b;
return s2->avg - s1->avg;
});
print_scores(students, n_students);
break;
case 4:
print_score_segments(students, n_students);
break;
case 5:
printf("请输入要查找的学生学号:\n");
int id;
scanf("%d", &id);
get_student_info(students, n_students, id);
break;
case 0:
exit(0);
break;
default:
printf("无效的选择!\n");
}
}
return 0;
}
void read_scores(Student students[], int n_students) {
if (n_students >= MAX_STUDENTS) {
printf("学生数已达到最大值!\n");
return;
}
printf("请输入学号、姓名、C程序设计、高等数学、英语、线性代数的成绩:\n");
Student* s = &students[n_students];
scanf("%d %s %f %f %f %f", &s->id, s->name, &s->scores[0], &s->scores[1],
&s->scores[2], &s->scores[3]);
}
void calculate_avg(Student students[], int n_students) {
for (int i = 0; i < n_students; i++) {
float sum = 0;
for (int j = 0; j < 4; j++) {
sum += students[i].scores[j];
}
students[i].avg = sum / 4;
}
}
void calculate_rank(Student students[], int n_students) {
qsort(students, n_students, sizeof(Student),
[](const void* a, const void* b) -> int {
const Student* s1 = (const Student*) a;
const Student* s2 = (const Student*) b;
return s2->avg - s1->avg;
});
for (int i = 0; i < n_students; i++) {
if (i == 0 || students[i].avg < students[i - 1].avg) {
students[i].rank = i + 1;
} else {
students[i].rank = students[i - 1].rank;
}
}
}
void print_scores(Student students[], int n_students) {
printf("学号\t姓名\tC程序设计\t高等数学\t英语\t线性代数\t平均分\t名次\n");
for (int i = 0; i < n_students; i++) {
printf("%d\t%s\t%.1f\t\t%.1f\t\t%.1f\t%.1f\t\t%.1f\t%d\n",
students[i].id, students[i].name, students[i].scores[0],
students[i].scores[1], students[i].scores[2], students[i].scores[3],
students[i].avg, students[i].rank);
}
}
void print_rankings(Student students[], int n_students) {
printf("名次\t学号\t姓名\t平均分\n");
for (int i = 0; i < n_students; i++) {
printf("%d\t%d\t%s\t%.1f\n", students[i].rank, students[i].id,
students[i].name, students[i].avg);
}
}
void print_score_segments(Student students[], int n_students) {
int count[4] = {0, 0, 0, 0};
for (int i = 0; i < n_students; i++) {
float avg = students[i].avg;
if (avg >= 90) {
count[0]++;
} else if (avg >= 80) {
count[1]++;
} else if (avg >= 60) {
count[2]++;
} else {
count[3]++;
}
}
printf("90-100分段: %d\n", count[0]);
printf("80-89分段: %d\n", count[1]);
printf("60-79分段: %d\n", count[2]);
printf("60分以下: %d\n", count[3]);
}
void get_student_info(Student students[], int n_students, int id) {
for (int i = 0; i < n_students; i++) {
if (students[i].id == id) {
printf("学号\t姓名\tC程序设计\t高等数学\t英语\t线性代数\t平均分\t名次\n");
printf("%d\t%s\t%.1f\t\t%.1f\t\t%.1f\t%.1f\t\t%.1f\t%d\n",
students[i].id, students[i].name, students[i].scores[0],
students[i].scores[1], students[i].scores[2], students[i].scores[3],
students[i].avg, students[i].rank);
return;
}
}
printf("未找到该学生!\n");
}
```
在这个示例代码中,我们使用了一个 `Student` 结构体来表示学生信息,包括学号、姓名、四门课程的分数、平均分和名次。主函数中使用一个无限循环,让用户选择不同的操作。其中,`read_scores` 函数用于输入学生成绩,`calculate_avg` 函数用于计算平均分,`calculate_rank` 函数用于计算名次,`print_scores` 函数用于按平均分排序并输出学生信息,`print_rankings` 函数用于输出名次排序,`print_score_segments` 函数用于输出各科分数段的人数,`get_student_info` 函数用于根据学号查找学生信息。注意,为了方便排序,我们使用了 C++11 中的 Lambda 表达式来定义排序函数。
你可以根据自己的需求修改代码,并添加输入校验等功能,使其更加完善。
c语言 •设班里有n位同学,每位同学的数据包括以下内容:学号(长整型)、姓名(字符串)、数学成绩(整型)、程序设计(课程名称为:程序设计,整型)。设计程序完成以如下功能 •1) 成绩录入; •2) 显示学生成绩 •3) 按照总分排名(从高到低) •4)输入一个学生的学号能查找到学生的成绩。 注:输入数据时,要求学号不能相同,姓名可以相同。建议采用结构体数组。 •具体要求如下 程序运行时,首先显示主菜单如下 1)学生成绩录入 2)总分排序 3)查询 4)数据显示。 学号查询:输入学号后,若该学号存在则显示与其相关的所有信息,否则显示找不到的提示信息; (提示:查询到满足条件的结果后,查询即可结束)
以下是参考代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT_NUM 100
// 学生信息结构体
typedef struct {
long long id; // 学号
char name[20]; // 姓名
int math_score; // 数学成绩
int prog_score; // 程序设计成绩
int total_score; // 总成绩
} Student;
// 全局变量:学生信息数组,学生数量
Student students[MAX_STUDENT_NUM];
int student_num = 0;
// 函数声明
void show_menu();
void input_scores();
void sort_by_total_score();
void search_by_id();
void show_all_scores();
int main() {
// 显示主菜单
show_menu();
return 0;
}
// 显示主菜单
void show_menu() {
int choice;
do {
printf("=== 学生成绩管理系统 ===\n");
printf("1)学生成绩录入\n");
printf("2)总分排序\n");
printf("3)查询\n");
printf("4)数据显示\n");
printf("0)退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
input_scores();
break;
case 2:
sort_by_total_score();
break;
case 3:
search_by_id();
break;
case 4:
show_all_scores();
break;
case 0:
printf("Goodbye!\n");
break;
default:
printf("无效的选择,请重新输入!\n");
}
} while (choice != 0);
}
// 录入学生成绩
void input_scores() {
if (student_num >= MAX_STUDENT_NUM) {
printf("学生数量已达最大值,无法继续添加!\n");
return;
}
Student new_student;
printf("请输入学生信息:\n");
printf("学号:");
scanf("%lld", &new_student.id);
for (int i = 0; i < student_num; i++) {
if (new_student.id == students[i].id) {
printf("该学号已存在,请重新输入!\n");
return;
}
}
printf("姓名:");
scanf("%s", new_student.name);
printf("数学成绩:");
scanf("%d", &new_student.math_score);
printf("程序设计成绩:");
scanf("%d", &new_student.prog_score);
new_student.total_score = new_student.math_score + new_student.prog_score;
students[student_num] = new_student;
student_num++;
printf("学生成绩录入成功!\n");
}
// 按总分排序
void sort_by_total_score() {
if (student_num == 0) {
printf("学生数量为0,无法排序!\n");
return;
}
// 使用冒泡排序
for (int i = 0; i < student_num - 1; i++) {
for (int j = 0; j < student_num - i - 1; j++) {
if (students[j].total_score < students[j+1].total_score) {
Student temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
printf("总分排序成功!\n");
}
// 学号查询
void search_by_id() {
if (student_num == 0) {
printf("学生数量为0,无法查询!\n");
return;
}
long long id;
printf("请输入学号:");
scanf("%lld", &id);
for (int i = 0; i < student_num; i++) {
if (students[i].id == id) {
printf("学号:%lld\n", students[i].id);
printf("姓名:%s\n", students[i].name);
printf("数学成绩:%d\n", students[i].math_score);
printf("程序设计成绩:%d\n", students[i].prog_score);
printf("总成绩:%d\n", students[i].total_score);
return;
}
}
printf("找不到该学号对应的学生!\n");
}
// 显示所有学生成绩
void show_all_scores() {
if (student_num == 0) {
printf("学生数量为0,无法显示!\n");
return;
}
printf("学号\t姓名\t数学成绩\t程序设计成绩\t总成绩\n");
for (int i = 0; i < student_num; i++) {
printf("%lld\t%s\t%d\t%d\t%d\n", students[i].id, students[i].name, students[i].math_score, students[i].prog_score, students[i].total_score);
}
}
```
这个程序使用了结构体数组来存储学生信息,菜单上提供了四个选项,分别对应录入学生成绩、按总分排序、学号查询和显示所有学生成绩。其中,录入学生成绩时会检查学号是否已经存在,如果已经存在则要求重新输入;按总分排序使用了冒泡排序算法;学号查询会根据输入的学号查找学生信息并输出,如果找不到则输出提示信息;显示所有学生成绩则会输出表格形式的所有学生信息。
阅读全文