c语言--基于结构体的学生成绩管理系统
1. 用结构体存放所有数据。2. 每个功能都用函数实现。3. 输入10个学生的学号和三门课程的成绩。4. 计算每个学生的总分。5. 按总分从高到低排序。6. 加上名次一列。7. 输出最后的二维表格样式的成绩,含学号、三门课成绩、总分、名次。
·
2.1输入学生信息
2.2函数:计算学生的总分
2.3按总成绩从高到低进行排序
2.4对排好名次后的每个学生赋予名次
2.5将所有数据输出
1.创建结构体,对象为学生,结构体信息有学号,分数,总分,排名
typedef struct{
int ID;
float score[3];
float total ;
int rank;
}STU;
2.使用函数实现不同的功能
2.1.输入学生的信息:
void input_data(STU s[])
{
int i = 0;
for (i = 0; i < 10; i++)//这里假设有十个学生
{
scanf("%d", &s[i].ID);//输入每个学生的ID
for (int j = 0; j < 3; j++)
{
scanf("%f", &s[i].score[j]); //输入每个学生的语文,数学,英语三门科目的分数
}
}
}
2.2.函数:计算学生的总分
void calculate(STU s[])
{
for(int i=0;i<10;i++)
{
s[i].total =0; //在这里将总成绩初始化为0,也可以在创建结构体时
将总成绩初始化为0
}
for(int i=0;i<10;i++)
{
for(int j=0;j<3;j++)
{
s[i].total += s[i].score[j];//求和
}
}
}
将学生的各科成绩求和 如上:
2.3. 按总成绩从高到低进行排序
使用冒泡排序
void sort_total(STU s[])
{
STU tmp;//结构体变量,需要什么类型的临时存储值,就创建什么类型的临时变量
int i=0;
int j=0;
for(i=0;i<10;i++)
{
for(j=0;j<10-i-1;j++)
{
if(s[j].total<s[j+1].total)
{
tmp =s[j];
s[j] = s[j+1];
s[j+1] = tmp;
}
}
}
}
2.4.对排好名次后的每个学生赋予名次
void add_rank(STU s[])
{
for(int i=0;i<10;i++)
{
s[i].rank =i+1; //i+1 是由于数组从0开始,而常见的排名是从第一名到第n名
}
}
2.5 将所有数据输出
void print_data(STU s[])
{
/********** Begin **********/
int i=0;
int j =0;
printf("学号: 语文: 数学: 英语: 总分: 名次:\n");
for(i=0;i<10;i++)
{
printf("%-15d",s[i].xuehao);
for(j=0;j<3;j++)
{
printf("%-15.1f",s[i].score[j]);
}
printf("%-15.1f%d",s[i].total,s[i].rank);
printf("\n");
}
主函数如下:
int main()
{
STU s[10];
input_data(s);
calculate(s);
sort_total(s);
add_rank(s);
print_data(s);
return 0;
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)