基于结构体的学生信息管理系统

    编写一个基于结构体得学生成绩信息管理系统。

主要功能如下: 1. 用结构体存放所有数据。

2. 每个功能都用函数实现。

3. 输入10个学生的学号和三门课程的成绩。

4. 计算每个学生的总分。

5. 按总分从高到低排序。

6. 加上名次一列。

7. 输出最后的二维表格样式的成绩,含学号、三门课成绩、总分、名次。

请填写五个函数完成相应功能的实现。其中:

  • input_data(STU s[]):输入原始数据函数。参数作用:
  • STU s[]:用来存放10个学生信息的结构体数组。
  • calculate(STU s[]):计算总分函数。参数作用:
  • STU s[]: 用于计算总分的学生信息结构体数组。
  • sort_total(STU s[]):根据总分降序排序函数。参数作用:
  • STU s[]: 用于总分排序的学生信息结构体数组。
  • add_rank(STU s[]):增加名次列函数。参数作用:
  • STU s[]: 用于添加名次的学生信息结构体数组(已排序)。
  • print_data(STU s[]):输出二维表格样式成绩的函数。参数作用:
  • STU s[]: 待打印输出的学生信息结构体数组。

测试输入: 

预期输出:

#include<stdio.h>
typedef struct{
    int no;
    float sc[3];
    float total;
    int rank;
}STU;

void input_data(STU s[])
{
	/********** Begin **********/
int n, i;
    for (i = 0; i < 10; i++) {
        scanf("%d", &s[i].no);
        for (n = 0; n < 3; n++) {
            scanf("%f", &s[i].sc[n]);
        }
    }
	/********** End **********/
}


void calculate(STU s[])
{
	/********** Begin **********/
 int n, i;
    for (n = 0; n < 10; n++) {
        s[n].total = 0;
        for (i = 0; i < 3; i++) {
            s[n].total = s[n].sc[i] + s[n].total;
        }
    }
	/********** End **********/
}

void sort_total(STU s[])
{
	/********** Begin **********/
int n,i;
    STU temp;
    for(i=0;i<9;i++){
        for(n=0;n<9-i;n++){
            if (s[n+1].total>s[n].total) {
                temp = s[n];
                s[n] = s[n + 1];
                s[n + 1] = temp;
            }
        }
    }
	/********** End **********/
}

void add_rank(STU s[])
{
	/********** Begin **********/
int n,i;
    for(i=1,n=0;i<11;i++,n++){
        s[n].rank=i;
    }
	/********** End **********/
}
void print_data(STU s[])
{
	/********** Begin **********/
int n;
    printf("学号:         语文:         数学:         英语:         总分:         名次:\n");
    for(n=0;n<10;n++) {
    if(n<9)
            printf("%-15d%-15.1f%-15.1f%-15.1f%-15.1f%d\n", s[n].no,s[n].sc[0],s[n].sc[1],s[n].sc[2],s[n].total,s[n].rank);
      else{
        printf("%-15d%-15.1f%-15.1f%-15.1f%-15.1f%d", s[n].no,s[n].sc[0],s[n].sc[1],s[n].sc[2],s[n].total,s[n].rank);
      }
    }
    	/********** End **********/
}

int main()
{
    STU s[10];
    input_data(s);
    calculate(s);
    sort_total(s);
    add_rank(s);
    print_data(s);

	return 0;
}

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值