3-5 学生成绩统计

3-5 学生成绩统计

Time Limit: 1000MS Memory Limit: 65536KB

Problem Description

通过本题目练习可以掌握对象数组的用法,主要是对象数组中数据的输入输出操作。

设计一个学生类Student 它具有私有的数据成员:学号、姓名、数学成绩、英语成绩、计算机成绩;具有公有的成员函数:求三门课总成绩的函数int sum(); 求三门课平均成绩的函数 double average(); 输出学生基本信息、总成绩和平均成绩的函数 void print() 设置学生数据信息的函数void set_stu_info(int n,char *p,int m,int e,int c)

请编写主函数,建立学生对象数组,从键盘输入一组学生数据,输出学生的成绩统计表:

stuID 姓名 数学 英语 计算机 总成绩 平均成绩

001 xxx 90 85 95 270 90.0

 

002 yyy 95 98 92 285 95.0

Input

输入数据有5行,代表5个学生的信息。

每行有5个数据,数据间用一个空格分隔,分别代表学生的学号、姓名、数学成绩、英语成绩和计算机成绩。除了姓名是符号串外,其他均为整型数据,数据在int类型范围内。

Output

输出数据一共有7行。

第一行输出提示信息“Input the messages of five students(StudentID Name Math English Computer )

第二行输出一个空行,进行输入输出间的间隔

第三行输出表头“StuID Name Math Eng Com Total Average ,这一行有7个数据,数据间用制表符\t’分隔,分别代表学生的学号、姓名、数学成绩、英语成绩、计算机成绩、总成绩和平均成绩。其中平均成绩为实型数据,保留1位小数。

4-8行分别输出5个学生的相关数据。每个数据占一个制表符的空间。格式同上。

Example Input

1001 Andy 89 90 93
1002 Mary 93 95 98
1003 Luis 90 85 98
1004 Sam 91 95 98
1005 Lily 87 98 99

Example Output

Input the messages of five students(StudentID Name Math English Computer )

StuID	Name	Math	Eng	Com	Total	Average
1001	Andy	89	90	93	272	90.7
1002	Mary	93	95	98	286	95.3
1003	Luis	90	85	98	273	91.0
1004	Sam	91	95	98	284	94.7
1005	Lily	87	98	99	284	94.7

Hint

代码如下:

#include<iostream>
#include<stdio.h>

using namespace std;

class student
{
private:
    char name[5];
    int id;
    int math;
    int eng;
    int com;
public:
    int sum();
    double average();
    void print();
    void setstu();
};

int student::sum()
{
    return (math+eng+com);
}

double student ::average()
{
    return ((math+eng+com)/3.0);
}

void student ::print()
{
    cout<<id<<"\t"<<name<<"\t"<<math<<"\t"<<eng<<"\t"<<com<<"\t"<<sum()<<"\t";
    printf("%.1lf\n",average());
}

void student::setstu()
{
    cin>>id>>name>>math>>eng>>com;
}

int main()
{
    int i;
    student stu[5];
    for(i=0; i<5; i++)
        stu[i].setstu();
    cout<<"Input the messages of five students(StudentID Name Math English Computer )"<<endl;
    cout<<endl;
    cout<<"StuID	Name	Math	Eng	Com	Total	Average"<<endl;
    for(i=0; i<5; i++)
        stu[i].print();
    return 0;
}



      
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的学生信息管理系统的C语言代码,包括1-学生信息录入、2-学生信息浏览、3-学生成绩排名、4-学生信息查询、5-学生信息修改、6-学生信息统计和7-学生投票功能。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STUDENT_NUM 100 // 最大学生数量 #define MAX_NAME_LEN 20 // 最大姓名长度 #define MAX_SUBJECT_NUM 5 // 最大科目数量 // 学生结构体 struct student { char name[MAX_NAME_LEN]; // 姓名 int id; // 学号 int score[MAX_SUBJECT_NUM]; // 科目成绩 int total_score; // 总成绩 float average_score; // 平均成绩 }; struct student students[MAX_STUDENT_NUM]; // 学生数组 int student_num = 0; // 学生数量 // 函数声明 void input_student_info(); void browse_student_info(); void rank_student_score(); void search_student_info(); void modify_student_info(); void statistics_student_info(); void vote_student(); int main() { int choice; while (1) { printf("|*菜单*|\n"); printf("1-录入/插入学生信息\n"); printf("2-浏览学生信息\n"); printf("3-查询学生信息\n"); printf("4-删除学生信息\n"); printf("5-修改学生信息\n"); printf("6-学生信息统计\n"); printf("7-学生投票功能\n"); printf("0-退出系统\n"); printf("请输入您的选择:"); scanf("%d", &choice); switch (choice) { case 1: input_student_info(); break; case 2: browse_student_info(); break; case 3: search_student_info(); break; case 4: // TODO: 删除学生信息 break; case 5: modify_student_info(); break; case 6: statistics_student_info(); break; case 7: vote_student(); break; case 0: printf("谢谢使用,再见!\n"); exit(0); default: printf("输入有误,请重新输入!\n"); break; } } return 0; } // 录入学生信息 void input_student_info() { if (student_num >= MAX_STUDENT_NUM) { printf("学生数量已达到上限,无法继续录入!\n"); return; } printf("请输入学生姓名:"); scanf("%s", students[student_num].name); printf("请输入学生学号:"); scanf("%d", &students[student_num].id); printf("请输入学生各科成绩:\n"); for (int i = 0; i < MAX_SUBJECT_NUM; i++) { printf("请输入第%d科成绩:", i + 1); scanf("%d", &students[student_num].score[i]); students[student_num].total_score += students[student_num].score[i]; } students[student_num].average_score = (float)students[student_num].total_score / MAX_SUBJECT_NUM; student_num++; printf("学生信息录入成功!\n"); } // 浏览学生信息 void browse_student_info() { if (student_num == 0) { printf("暂无学生信息!\n"); return; } printf("学生姓名\t学号\t科目1\t科目2\t科目3\t科目4\t科目5\t总成绩\t平均成绩\n"); for (int i = 0; i < student_num; i++) { printf("%s\t\t%d\t", students[i].name, students[i].id); for (int j = 0; j < MAX_SUBJECT_NUM; j++) { printf("%d\t", students[i].score[j]); } printf("%d\t%.2f\n", students[i].total_score, students[i].average_score); } } // 学生成绩排名 void rank_student_score() { // TODO: 学生成绩排名 } // 学生信息查询 void search_student_info() { if (student_num == 0) { printf("暂无学生信息!\n"); return; } int choice; printf("请选择查询方式:\n"); printf("1-按姓名查询\n"); printf("2-按学号查询\n"); printf("请输入您的选择:"); scanf("%d", &choice); switch (choice) { case 1: { char name[MAX_NAME_LEN]; printf("请输入要查询的学生姓名:"); scanf("%s", name); int found = 0; for (int i = 0; i < student_num; i++) { if (strcmp(students[i].name, name) == 0) { printf("学生姓名\t学号\t科目1\t科目2\t科目3\t科目4\t科目5\t总成绩\t平均成绩\n"); printf("%s\t\t%d\t", students[i].name, students[i].id); for (int j = 0; j < MAX_SUBJECT_NUM; j++) { printf("%d\t", students[i].score[j]); } printf("%d\t%.2f\n", students[i].total_score, students[i].average_score); found = 1; break; } } if (!found) { printf("未找到该学生信息!\n"); } break; } case 2: { int id; printf("请输入要查询的学生学号:"); scanf("%d", &id); int found = 0; for (int i = 0; i < student_num; i++) { if (students[i].id == id) { printf("学生姓名\t学号\t科目1\t科目2\t科目3\t科目4\t科目5\t总成绩\t平均成绩\n"); printf("%s\t\t%d\t", students[i].name, students[i].id); for (int j = 0; j < MAX_SUBJECT_NUM; j++) { printf("%d\t", students[i].score[j]); } printf("%d\t%.2f\n", students[i].total_score, students[i].average_score); found = 1; break; } } if (!found) { printf("未找到该学生信息!\n"); } break; } default: printf("输入有误,请重新输入!\n"); break; } } // 学生信息修改 void modify_student_info() { if (student_num == 0) { printf("暂无学生信息!\n"); return; } int id; printf("请输入要修改的学生学号:"); scanf("%d", &id); int found = 0; for (int i = 0; i < student_num; i++) { if (students[i].id == id) { printf("请输入学生姓名:"); scanf("%s", students[i].name); printf("请输入学生各科成绩:\n"); for (int j = 0; j < MAX_SUBJECT_NUM; j++) { printf("请输入第%d科成绩:", j + 1); scanf("%d", &students[i].score[j]); students[i].total_score += students[i].score[j]; } students[i].average_score = (float)students[i].total_score / MAX_SUBJECT_NUM; printf("学生信息修改成功!\n"); found = 1; break; } } if (!found) { printf("未找到该学生信息!\n"); } } // 学生信息统计 void statistics_student_info() { if (student_num == 0) { printf("暂无学生信息!\n"); return; } int choice; printf("请选择统计方式:\n"); printf("1-按总成绩排序\n"); printf("2-按平均成绩排序\n"); printf("请输入您的选择:"); scanf("%d", &choice); switch (choice) { case 1: { // 按总成绩排序 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) { struct student temp = students[j]; students[j] = students[j + 1]; students[j + 1] = temp; } } } printf("学生姓名\t学号\t科目1\t科目2\t科目3\t科目4\t科目5\t总成绩\t平均成绩\n"); for (int i = 0; i < student_num; i++) { printf("%s\t\t%d\t", students[i].name, students[i].id); for (int j = 0; j < MAX_SUBJECT_NUM; j++) { printf("%d\t", students[i].score[j]); } printf("%d\t%.2f\n", students[i].total_score, students[i].average_score); } break; } case 2: { // 按平均成绩排序 for (int i = 0; i < student_num - 1; i++) { for (int j = 0; j < student_num - i - 1; j++) { if (students[j].average_score < students[j + 1].average_score) { struct student temp = students[j]; students[j] = students[j + 1]; students[j + 1] = temp; } } } printf("学生姓名\t学号\t科目1\t科目2\t科目3\t科目4\t科目5\t总成绩\t平均成绩\n"); for (int i = 0; i < student_num; i++) { printf("%s\t\t%d\t", students[i].name, students[i].id); for (int j = 0; j < MAX_SUBJECT_NUM; j++) { printf("%d\t", students[i].score[j]); } printf("%d\t%.2f\n", students[i].total_score, students[i].average_score); } break; } default: printf("输入有误,请重新输入!\n"); break; } } // 学生投票 void vote_student() { if (student_num == 0) { printf("暂无学生信息!\n"); return; } int id; printf("请输入要投票的学生学号:"); scanf("%d", &id); int found = 0; for (int i = 0; i < student_num; i++) { if (students[i].id == id) { printf("您已成功为%s投票!\n", students[i].name); found = 1; break; } } if (!found) { printf("未找到该学生信息!\n"); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值