c语言--基于结构体的学生成绩管理系统

简介: 1.创建结构体,对象为学生,结构体信息有学号,分数,总分,排名 2.使用函数实现不同的功能2.1.输入学生的信息:

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]); //输入每个学生的语文,数学,英语三门科目的分数
        }
    }
}
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;
}


相关文章
|
6天前
|
存储 C语言
向函数传递结构体: C语言中的结构体参数传递详解
向函数传递结构体: C语言中的结构体参数传递详解
20 0
|
7天前
|
存储 编译器 Linux
C语言(12)----结构体
C语言(12)----结构体
20 1
|
1天前
|
C语言
【初始C语言8】详细讲解初阶结构体的知识
【初始C语言8】详细讲解初阶结构体的知识
|
4天前
|
存储 算法 C语言
C语言中的结构体与共用体:深入探索与应用
C语言中的结构体与共用体:深入探索与应用
9 0
|
6天前
|
存储 大数据 程序员
实验验证C语言中结构体与共用体的差异
实验验证C语言中结构体与共用体的差异
17 0
|
7天前
|
存储 C语言
C语言中的结构体与函数传递技术详解
C语言中的结构体与函数传递技术详解
15 1
|
7天前
|
存储 安全 C语言
C语言中的共用体与结构体的区别
C语言中的共用体与结构体的区别
22 3
|
7天前
|
编译器 C语言 C++
C语言进阶:结构体的声明
C语言进阶:结构体的声明
|
7天前
|
C语言
初识C语言结构体
初识C语言结构体
|
8天前
|
C语言
【初阶】C语言初识结构体
【初阶】C语言初识结构体