学生成绩信息管理系统
列表:
1. 用结构体存放所有数据。
2.使用函数实现不同功能
2.1输入学生信息
2.2函数:计算学生的总分
2.3按总成绩从高到低进行排序
2.4对排好名次后的每个学生赋予名次
2.5将所有数据输出
typedef struct{int ID;float score[3];float total ;int rank;}STU;
void input_data(STU s[])
{int i = 0;for (i = 0; i < 10; i++)//这里假设有十个学生{scanf("%d", &s[i].ID);//输入每个学生的IDfor (int j = 0; j < 3; j++){scanf("%f", &s[i].score[j]); //输入每个学生的语文,数学,英语三门科目的分数}}}
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];//求和}}}
将学生的各科成绩求和 如上:
使用冒泡排序
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
void add_rank(STU s[])
{for(int i=0;i<10;i++){s[i].rank =i+1; //i+1 是由于数组从0开始,而常见的排名是从第一名到第n名}
}
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;
}