一个班有30个学生,每个学生有一门课程,用c语言编写三个函数实现如下功能:课程成绩录入;依据成绩,进行升序排序;给出前10位同学的成绩
时间: 2024-05-30 16:12:52 浏览: 92
这个问题可以回答。以下是三个函数的伪代码:
1. void input_scores(int scores[], int n)
// 参数:scores - 存放成绩的数组,n - 学生数目
// 每个学生依次输入成绩,存放到scores数组中
2. void sort_scores(int scores[], int n)
// 参数:scores - 存放成绩的数组,n - 学生数目
// 使用冒泡排序将成绩升序排列
3. void print_top_10_scores(int scores[], int n)
// 参数:scores - 存放成绩的数组,n - 学生数目
// 输出前10个最高成绩
注意,以上只是伪代码,需要具体的实现细节来完成。
相关问题
一个班有30个学生,每个学生有一门课程,用c语言编写三个函数实现如下功能 课程成绩录入;依据成绩,进行升序排序;给出前10位同学的成绩
以下是使用 C 语言编写的三个函数实现指定功能:
1. 课程成绩录入函数:
void input_scores(float scores[], int n) {
int i;
printf("请输入%d名同学的成绩:\n", n);
for (i = 0; i < n; i++) {
scanf("%f", &scores[i]);
}
}
2. 成绩升序排序函数:
void sort_scores(float scores[], int n) {
int i, j;
float temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (scores[i] > scores[j]) {
temp = scores[i];
scores[i] = scores[j];
scores[j] = temp;
}
}
}
}
3. 输出前 10 位同学成绩函数:
void output_top10(float scores[]) {
int i;
printf("前10名同学的成绩为:\n");
for (i = 0; i < 10; i++) {
printf("%.2f\n", scores[i]);
}
}
使用这三个函数的主程序如下:
int main() {
float scores[30];
int n = 30;
input_scores(scores, n);
sort_scores(scores, n);
output_top10(scores);
return 0;
}
希望以上程序满足你的需求!
主要内容:该系统实现对学生成绩的批量录入、修改、查询、浏览等功能。具体要求如下: 学生信息包括:学号、姓名、入学年月、4门课的成绩等8个成员,试设计学生成绩管理系统,使之能提供以下功能: 1、信息录入:录入每一位学生信息(包括学号、姓名、入学年月和4门课的成绩); 2、信息浏览:输出系统内所有学生的信息; 3、成绩修改:输入学号,修改该生某一门课的成绩; 4、分类查询:按学号或姓名查找学生,输出学生的成绩单; 5、统计学生总成绩:计算每个学生的总分及平均分,并根据学生的平均成绩进行排序;6、统计每门课程的成绩:计算每一门课程学生的及格率、优秀率等。 的c语言代码
以下是一个简单的学生成绩管理系统的C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
#define MAX_NAME_LEN 20
typedef struct {
char id[10];
char name[MAX_NAME_LEN];
char start_date[10];
int scores[4];
int total_score;
float ave_score;
} Student;
typedef struct {
Student students[MAX_STUDENTS];
int count;
} StudentManager;
void init(StudentManager *manager) {
manager->count = 0;
}
void add(StudentManager *manager, Student student) {
manager->students[manager->count++] = student;
}
void print_header() {
printf("%5s %-10s %-10s %4s %4s %4s %4s %6s %6s\n", "No.", "ID", "Name", "Course1", "Course2", "Course3", "Course4", "Total", "Average");
}
void print_student(Student student, int index) {
printf("%5d %-10s %-10s %4d %4d %4d %4d %6d %6.2f\n", index, student.id, student.name, student.scores[0], student.scores[1], student.scores[2], student.scores[3], student.total_score, student.ave_score);
}
void print(StudentManager manager) {
print_header();
for (int i = 0; i < manager.count; i++) {
print_student(manager.students[i], i+1);
}
}
int find(StudentManager manager, char *key) {
for (int i = 0; i < manager.count; i++) {
if (strcmp(manager.students[i].id, key) == 0 || strcmp(manager.students[i].name, key) == 0) {
return i;
}
}
return -1;
}
void update(StudentManager *manager, char *id, int course, int score) {
int index = find(*manager, id);
if (index == -1) {
printf("Student not found.\n");
} else {
manager->students[index].scores[course-1] = score;
int total_score = 0;
for (int i = 0; i < 4; i++) {
total_score += manager->students[index].scores[i];
}
manager->students[index].total_score = total_score;
manager->students[index].ave_score = total_score / 4.0;
printf("Score updated.\n");
}
}
void sort(StudentManager *manager) {
for (int i = 0; i < manager->count-1; i++) {
for (int j = 0; j < manager->count-1-i; j++) {
if (manager->students[j].ave_score < manager->students[j+1].ave_score) {
Student temp = manager->students[j];
manager->students[j] = manager->students[j+1];
manager->students[j+1] = temp;
}
}
}
}
void print_course_stats(StudentManager manager, int course) {
int pass_count = 0, excellent_count = 0;
for (int i = 0; i < manager.count; i++) {
if (manager.students[i].scores[course-1] >= 60) {
pass_count++;
}
if (manager.students[i].scores[course-1] >= 90) {
excellent_count++;
}
}
printf("Course %d statistics: pass rate=%.2f%%, excellent rate=%.2f%%\n", course, pass_count*100.0/manager.count, excellent_count*100.0/manager.count);
}
int main() {
StudentManager manager;
init(&manager);
while (1) {
printf("\nStudent Score Management System\n");
printf("1. Add Student\n");
printf("2. View Students\n");
printf("3. Update Score\n");
printf("4. Find Student\n");
printf("5. Sort Students\n");
printf("6. Course Statistics\n");
printf("0. Exit\n");
printf("Enter your choice: ");
int choice;
scanf("%d", &choice);
switch (choice) {
case 0:
printf("Goodbye!\n");
exit(0);
case 1:
printf("Enter student ID: ");
char id[10];
scanf("%s", id);
printf("Enter student name: ");
char name[MAX_NAME_LEN];
scanf("%s", name);
printf("Enter start date (YYYY-MM-DD): ");
char start_date[10];
scanf("%s", start_date);
printf("Enter scores for 4 courses: ");
int scores[4];
for (int i = 0; i < 4; i++) {
scanf("%d", &scores[i]);
}
Student student = {0};
strcpy(student.id, id);
strcpy(student.name, name);
strcpy(student.start_date, start_date);
for (int i = 0; i < 4; i++) {
student.scores[i] = scores[i];
student.total_score += scores[i];
}
student.ave_score = student.total_score / 4.0;
add(&manager, student);
printf("Student added.\n");
break;
case 2:
print(manager);
break;
case 3:
printf("Enter student ID: ");
scanf("%s", id);
printf("Enter course number (1-4): ");
int course;
scanf("%d", &course);
printf("Enter new score: ");
int score;
scanf("%d", &score);
update(&manager, id, course, score);
break;
case 4:
printf("Enter student ID or name: ");
char key[20];
scanf("%s", key);
int index = find(manager, key);
if (index == -1) {
printf("Student not found.\n");
} else {
print_header();
print_student(manager.students[index], 1);
}
break;
case 5:
sort(&manager);
printf("Students sorted by average score.\n");
print(manager);
break;
case 6:
printf("Enter course number (1-4): ");
scanf("%d", &course);
print_course_stats(manager, course);
break;
default:
printf("Invalid choice.\n");
break;
}
}
return 0;
}
```
以上代码实现了一个简单的学生成绩管理系统,包括信息录入、信息浏览、成绩修改、分类查询、统计学生总成绩和每门课程的成绩等功能。其中采用了结构体存储学生信息,采用函数实现各种操作,以及采用排序算法对学生进行排序等。
阅读全文