1、 编写程序实现多个学生的成绩统计:一个学生包括三门课程成绩,要求从键盘输入学生姓名及其三门成绩,统计并输出学生姓名及其平均成绩(用字典实现:姓名是key,三门成绩用列表表示作为value)。python
时间: 2024-05-07 15:23:10 浏览: 143
可以使用以下代码实现:
```python
students = {} # 创建一个空的字典用于存储学生信息
while True:
name = input("请输入学生姓名(输入exit结束):")
if name == "exit":
break # 如果输入exit则结束循环
scores = []
for i in range(3):
score = float(input(f"请输入{name}的第{i+1}门课成绩:"))
scores.append(score)
students[name] = scores # 将学生姓名及其三门成绩存入字典中
print("学生姓名 平均成绩")
for name, scores in students.items():
average = sum(scores) / len(scores) # 计算平均成绩
print(f"{name} {average:.2f}")
```
运行程序后,依次输入每个学生的姓名和三门课程成绩,输入exit结束输入。最后程序会输出每个学生的姓名及其平均成绩。
相关问题
运用c语言知识编辑一个应用程序,学习成绩管理系统 程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一个学生成绩管理系统,使之能提供以下功能: (1)主菜单 1.成绩录入 2.成绩查询· 3.成绩统计 4.退出 (2)各菜单项功能 ①成绩录入:输入学生的学号、姓名及三门课的成绩; ②成绩查询: *按学号查询学生成绩; ③成绩统计: *计算学生的平均分; *根据学生的平均分高低,对学生的数据进行排序后输出; ④退出系统:退出整个系统(即主菜单)。
以下是一个简单的学生成绩管理系统的代码,基于 C 语言:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
struct Student {
char id[20]; // 学号
char name[20]; // 姓名
double score1, score2, score3; // 三门课成绩
double avg_score; // 平均成绩
};
// 定义全局变量
struct Student students[100]; // 最多存储 100 个学生数据
int count = 0; // 学生数量
// 函数声明
void show_menu();
void input_scores();
void query_score();
void statistics_score();
void sort_students();
int main() {
int choice;
while (1) {
show_menu();
printf("请输入您的选择: ");
scanf("%d", &choice);
switch (choice) {
case 1: input_scores(); break;
case 2: query_score(); break;
case 3: statistics_score(); break;
case 4: exit(0);
default: printf("无效的选择,请重新输入!\n"); break;
}
}
return 0;
}
// 显示主菜单
void show_menu() {
printf("==================\n");
printf("学生成绩管理系统\n");
printf("==================\n");
printf("1.成绩录入\n");
printf("2.成绩查询\n");
printf("3.成绩统计\n");
printf("4.退出\n");
printf("==================\n");
}
// 录入学生成绩
void input_scores() {
char id[20], name[20];
double score1, score2, score3;
printf("请输入学生的学号、姓名及三门课的成绩:\n");
scanf("%s %s %lf %lf %lf", id, name, &score1, &score2, &score3);
// 判断学号是否重复
for (int i = 0; i < count; i++) {
if (strcmp(students[i].id, id) == 0) {
printf("学号 %s 已存在!\n", id);
return; // 返回主菜单
}
}
// 添加学生
strcpy(students[count].id, id);
strcpy(students[count].name, name);
students[count].score1 = score1;
students[count].score2 = score2;
students[count].score3 = score3;
students[count].avg_score = (score1 + score2 + score3) / 3;
count++;
printf("添加学生成功!\n");
}
// 查询学生成绩
void query_score() {
char id[20];
printf("请输入要查询的学生学号:\n");
scanf("%s", id);
for (int i = 0; i < count; i++) {
if (strcmp(students[i].id, id) == 0) {
printf("%s %s %.2f %.2f %.2f %.2f\n", students[i].id, students[i].name,
students[i].score1, students[i].score2, students[i].score3, students[i].avg_score);
return; // 返回主菜单
}
}
printf("无此学号的学生!\n");
}
// 统计学生成绩
void statistics_score() {
int choice;
while (1) {
printf("请选择要进行的操作:\n");
printf("1.计算学生的平均分\n");
printf("2.排序并输出学生数据\n");
printf("3.返回主菜单\n");
scanf("%d", &choice);
switch (choice) {
case 1:
for (int i = 0; i < count; i++) {
students[i].avg_score = (students[i].score1 + students[i].score2 + students[i].score3) / 3;
}
printf("计算完成!\n");
break;
case 2:
sort_students();
printf("学号\t姓名\t语文\t数学\t英语\t平均分\n");
for (int i = 0; i < count; i++) {
printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", students[i].id, students[i].name,
students[i].score1, students[i].score2, students[i].score3, students[i].avg_score);
}
break;
case 3: return; // 返回主菜单
default: printf("无效的选择,请重新输入!\n"); break;
}
}
}
// 对学生数据进行排序
void sort_students() {
for (int i = 0; i < count - 1; i++) {
for (int j = i + 1; j < count; j++) {
if (students[i].avg_score < students[j].avg_score) {
struct Student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
}
```
这个程序实现了主菜单和三个子菜单的功能,可以录入学生的成绩,查询学生的成绩,计算学生的平均成绩,以及根据平均成绩对学生数据进行排序输出。你可以根据需要进行修改和完善。
运用c语言知识写一个应用程序,学习成绩管理系统 程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一个学生成绩管理系统,使之能提供以下功能: (1)主菜单 1.成绩录入 2.成绩查询· 3.成绩统计 4.退出 (2)各菜单项功能 ①成绩录入:输入学生的学号、姓名及三门课的成绩; ②成绩查询: *按学号查询学生成绩; ③成绩统计: *计算学生的平均分; *根据学生的平均分高低,对学生的数据进行排序后输出; ④退出系统:退出整个系统(即主菜单)。
好的,下面是一个简单的学生成绩管理系统的 C 语言实现。希望能够帮到你。
```
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100 // 最多支持的学生数
// 学生结构体
struct student {
int id; // 学号
char name[20]; // 姓名
float score[3]; // 三门课成绩
float avg; // 平均成绩
};
struct student students[MAX_STUDENTS]; // 学生数组
int count = 0; // 学生数
// 成绩录入功能
void input_score() {
int id;
char name[20];
float score[3];
printf("请输入学生的学号、姓名及三门课的成绩:\n");
scanf("%d %s %f %f %f", &id, name, &score[0], &score[1], &score[2]);
// 判断学号是否已存在
for (int i = 0; i < count; i++) {
if (students[i].id == id) {
printf("学号已存在!\n");
return;
}
}
// 存储学生信息
students[count].id = id;
strcpy(students[count].name, name);
students[count].score[0] = score[0];
students[count].score[1] = score[1];
students[count].score[2] = score[2];
students[count].avg = (score[0] + score[1] + score[2]) / 3.0;
count++;
printf("录入成功!\n");
}
// 成绩查询功能
void query_score() {
int id;
printf("请输入要查询的学生学号:\n");
scanf("%d", &id);
// 查找学生信息
for (int i = 0; i < count; i++) {
if (students[i].id == id) {
printf("学号:%d,姓名:%s,三门课成绩:%.2f %.2f %.2f,平均成绩:%.2f\n",
students[i].id, students[i].name, students[i].score[0], students[i].score[1], students[i].score[2], students[i].avg);
return;
}
}
printf("学号不存在!\n");
}
// 成绩统计功能
void stat_score() {
// 计算平均成绩
for (int i = 0; i < count; i++) {
float sum = 0;
for (int j = 0; j < 3; j++) {
sum += students[i].score[j];
}
students[i].avg = sum / 3.0;
}
// 按平均成绩排序
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - i - 1; j++) {
if (students[j].avg < students[j+1].avg) {
struct student tmp = students[j];
students[j] = students[j+1];
students[j+1] = tmp;
}
}
}
// 输出排序后的学生信息
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
for (int i = 0; i < count; i++) {
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",
students[i].id, students[i].name, students[i].score[0], students[i].score[1], students[i].score[2], students[i].avg);
}
}
// 主菜单
void main_menu() {
printf("***** 学生成绩管理系统 *****\n");
printf("1. 成绩录入\n");
printf("2. 成绩查询\n");
printf("3. 成绩统计\n");
printf("4. 退出\n");
}
// 主函数
int main() {
int choice;
while (1) {
main_menu(); // 显示主菜单
printf("请输入您的选择:\n");
scanf("%d", &choice);
switch (choice) {
case 1:
input_score(); // 成绩录入
break;
case 2:
query_score(); // 成绩查询
break;
case 3:
stat_score(); // 成绩统计
break;
case 4:
return 0; // 退出
default:
printf("输入有误,请重新输入!\n");
break;
}
}
}
```
以上就是一个简单的学生成绩管理系统的 C 语言实现,你可以根据自己的需要进行修改和完善。
阅读全文
相关推荐















