1)使用结构体创建学生的信息结构,每个学生包括学号,姓名,C语言成绩。
2)输出如下菜单,实现下面所示所有功能:
2022年计算机学院学生C语言成绩
请输入1-8选择下面的操作:
1.学生信息录入
2.学生信息输出
3.根据学号查询成绩
4.C语言成绩由高到底排序(输出学生姓名)
5.成绩统计(C语言成绩的最高分,最低分,平均分)
6.查看C语言成绩最高分和最低分的学生的姓名
7.查询高于平均分的学生的学号和成绩
8.退出系统
详细代码实现如下,望采纳
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
typedef struct Student {
int id;
char name[100];
int c_grade;
} Student;
Student students[MAX_STUDENTS];
int num_students = 0;
void input_student_info()
{
if (num_students == MAX_STUDENTS) {
printf("Error: Cannot add more students.\n");
return;
}
printf("Enter student id: ");
scanf("%d", &students[num_students].id);
printf("Enter student name: ");
scanf("%s", students[num_students].name);
printf("Enter student C grade: ");
scanf("%d", &students[num_students].c_grade);
num_students++;
}
void output_student_info()
{
for (int i = 0; i < num_students; i++) {
printf("Student %d:\n", i + 1);
printf("Id: %d\n", students[i].id);
printf("Name: %s\n", students[i].name);
printf("C grade: %d\n", students[i].c_grade);
}
}
void search_student_by_id()
{
int id;
printf("Enter student id to search for: ");
scanf("%d", &id);
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
printf("Student found!\n");
printf("Id: %d\n", students[i].id);
printf("Name: %s\n", students[i].name);
printf("C grade: %d\n", students[i].c_grade);
return;
}
}
printf("Student with id %d not found.\n", id);
}
int compare_students(const void* a, const void* b)
{
Student* s1 = (Student*)a;
Student* s2 = (Student*)b;
return s2->c_grade - s1->c_grade;
}
void sort_students_by_c_grade()
{
qsort(students, num_students, sizeof(Student), compare_students);
printf("Sorted students by C grade (highest to lowest):\n");
for (int i = 0; i < num_students; i++) {
printf("%s\n", students[i].name);
}
}
void compute_grade_stats()
{
int min_grade = 100;
int max_grade = 0;
int total_grade = 0;
for (int i = 0; i < num_students; i++) {
if (students[i].c_grade < min_grade) {
min_grade = students[i].c_grade;
}
if (students[i].c_grade > max_grade) {
max_grade = students[i].c_grade;
}
total_grade += students[i].c_grade;
}
printf("Grade statistics:\n");
printf("Highest grade: %d\n", max_grade);
printf("Lowest grade: %d\n", min_grade);
printf("Average grade: %f\n", (float)total_grade / num_students);
}
void find_max_min_grade_students()
{
int min_grade = 100;
int max_grade = 0;
for (int i = 0; i < num_students; i++) {
if (students[i].c_grade < min_grade) {
min_grade = students[i].c_grade;
}
if (students[i].c_grade > max_grade) {
max_grade = students[i].c_grade;
}
}
printf("Students with highest C grade:\n");
for (int i = 0; i < num_students; i++) {
if (students[i].c_grade == max_grade) {
printf("%s\n", students[i].name);
}
}
printf("Students with lowest C grade:\n");
for (int i = 0; i < num_students; i++) {
if (students[i].c_grade == min_grade) {
printf("%s\n", students[i].name);
}
}
}
void find_students_above_average()
{
int total_grade = 0;
for (int i = 0; i < num_students; i++) {
total_grade += students[i].c_grade;
}
float average_grade = (float)total_grade / num_students;
printf("Students with grades above average:\n");
for (int i = 0; i < num_students; i++) {
if (students[i].c_grade > average_grade) {
printf("Id: %d, C grade: %d\n", students[i].id, students[i].c_grade);
}
}
}
int main(void)
{
while (1) {
printf("Please enter 1-8 to select one of the following options:\n");
printf("1. Input student information\n");
printf("2. Output student information\n");
printf("3. Search for student by id\n");
printf("4. Sort students by C grade (highest to lowest)\n");
printf("5. Compute grade statistics (highest, lowest, average)\n");
printf("6. Find students with highest and lowest C grade\n");
printf("7. Find students with grades above average\n");
printf("8. Quit\n");
int selection;
scanf("%d", &selection);
switch (selection) {
case 1:
input_student_info();
break;
case 2:
output_student_info();
break;
case 3:
search_student_by_id();
break;
case 4:
sort_students_by_c_grade();
break;
case 5:
compute_grade_stats();
break;
case 6:
find_max_min_grade_students();
break;
case 7:
find_students_above_average();
break;
case 8:
exit(0);
default:
printf("Invalid option. Please try again.\n");
break;
}
}
}
看来现在的chatgpt很火呀
一些问题基本上都不用人工写了