【C语言】简单成绩表

题目:
1.从键盘输入一个班10个学生的学号和每个学生的高数,英语,计算机成绩,
2.算出每个学生的平均分总分
3.按学生平均分成绩优劣排序
4.最后打印一张按高分到低分名次排序的成绩表,要求:包括学号,序号,三科成绩,总分,平均分,
5.要有很好的人机交互界面

#include <stdio.h>
#include "stdafx.h"
#include <stdlib.h>
#include <math.h>
#define N 10

struct students
{
    int num, index;
    char *name;
    float score[3] = {0, 0, 0};
    float sum = 0, ave = 0;
};

//1.从键盘输入一个班10个学生的学号和每个学生的高数,英语,计算机成绩,w
void inputStudentData(struct students W[N])
{
    for (int i = 0; i < N; i++)
    {
        W[i].index = i;
        printf("Please input student index %d :\n", i);
        printf("num : ");
        scanf_s("%d", &W[i].num);
        printf("name : ");
        scanf_s("%s", &W[i].name, 3);//最多读取3个字符
        printf("math score : ");
        scanf_s("%f", &W[i].score[0]);
        printf_s("english score : ");
        scanf_s("%f", &W[i].score[1]);
        printf("computer score : ");
        scanf_s("%f", &W[i].score[2]);
    }
}

//2.算出每个学生的平均分和总分,
void compute(struct students W[N])
{
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            W[i].sum += W[i].score[j];
            W[i].ave = W[i].sum / 3;
        }
    }
}

//3.按学生平均分成绩优劣排序,
void sort(struct students W[N])
{
    struct students temp;
    for (int i = 0; i < N;i++)
        for (int j = i; j < N; j++)
        {
            if (W[i].ave < W[j].ave)
            {
                temp = W[i];
                W[i] = W[j];
                W[j] = temp;;
            }
        }
}

//4.最后打印一张按高分到低分名次排序的成绩表,要求:包括学号,序号,三科成绩,总分,平均分,
void printStudentData(struct students W[N])
{
    for (int i = 0; i < 20;i++)
    printf("-");
    printf("\n|index|num|name|math|english|computer|sum|average|\n");
    for (int i = 0; i < N; i++)
    {
        printf("|%d", W[i].index);
        printf("|%d", W[i].num);
        printf("|%s", &W[i].name);
        for (int j = 0; j < 3; j++)
        {
            printf("|%0.2f", W[i].score[j]);
        }
        printf("|%0.2f", W[i].sum);
        printf("|%0.2f", W[i].ave);
        printf("|\n");
    }
}
void main()
{
    struct students W[N];
    inputStudentData(W);
    compute(W);
    sort(W);
    printStudentData(W);

    system("pause");
}

结果如图:(N = 2为例)

博主很懒,所以良好的人机交互界面就不写了。

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值