学生成绩信息管理系统列表:1. 用结构体存放所有数据。 2.使用函数实现不同功能 2.1输入学生信息2.2函数:计算学生的总分2.3按总成绩从高到低进行排序2.4对排好名次后的每个学生赋予
学生成绩信息管理系统
列表:
1. 用结构体存放所有数据。
2.使用函数实现不同功能
2.1输入学生信息
2.2函数:计算学生的总分
2.3按总成绩从高到低进行排序
2.4对排好名次后的每个学生赋予名次
2.5将所有数据输出
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
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;
}