C语言 统计一个班的学生成绩排序

功能:

(1) 每个学生的学号和四门功课的成绩从键盘读入。

(2) 计算每个学生的总分和平均分。

(3) 按平均成绩进行排序,输出排序后的成绩单(包括学号、四门功课的成绩和平均分),给出名次。如果分数相同,则名次并列,其他学生名次不变。

实验步骤与要求:

(1) 每个功能为一个独立的函数。

(2) 调试程序时,可先输入少量学生的成绩作为实验数据。如可输入3名学生4门课成绩:

学号 成绩

9701 67,72,65,80

9702 75,82,94,95

9703 70,74,80,76

完整代码:

#include<stdio.h>
#define N 3 //定义有3个学生
//定义学生结构体
struct student
{
	int n;
	float  c, m, e, p,aver;

};
void paixu(struct student x[N])
{
	printf("-----------------------------------成绩单-------------------------------------\n");
	printf("名次           学号           英语           语文            数学            物理             平均分\n");
	int i, j, k, temp;
	for (i = 0; i < N - 1; i++)
	{
		k = i;
		for (j = i + 1; j < N; j++)
		{
			if (x[i].aver > x[j].aver)//如果 后面比前面小
				k = j;
			if (k != j)//如果前面比后面小
			{
				temp = x[j].aver;
				x[j].aver = x[i].aver;
				x[i].aver = temp;

				temp = x[j].n;
				x[j].n = x[i].n;
				x[i].n = temp;

				temp = x[j].c;
				x[j].c = x[i].c;
				x[i].c = temp;

				temp = x[j].m;
				x[j].m = x[i].m;
				x[i].m = temp;

				temp = x[j].e;
				x[j].e = x[i].e;
				x[i].e = temp;

				temp = x[j].p;
				x[j].p = x[i].p;
				x[i].p = temp;
				//将两个结构组交换
			}
		}

	}
	int a;
	for (a=0; a < N; a++)
	{
		printf("%d          %d          %f          %f          %f          %f          %f\n", a + 1, x[a].n, x[a].e, x[a].c, x[a].m, x[a].p, x[a].aver);

	}


}
//计算模块
float jisuan(float c, float m, float e, float p)
{
	
	float aver, sum;
	sum = c + m + e + p;
	aver = sum / 4;
	printf("总分是:%f,平均值是:%f\n", sum,aver);
	return aver;
}
//输入模块
void fun1()
{

	int a;
	struct student x[N];
	
	for (a = 0; a < N; a++)
	{
		printf("请输入学号:");
		scanf("%d", &x[a].n);
		printf("英语:");
		scanf("%f", &x[a].e);
		printf("语文:");
		scanf("%f", &x[a].c);
		printf("数学:");
		scanf("%f", &x[a].m);
		printf("物理:");
		scanf("%f", &x[a].p);
	
		x[a].aver= jisuan(x[a].c, x[a].m, x[a].e, x[a].p);
		
	}
	paixu(x);
return;
}

//排序模块,排 x[a].aver



int main()
{

	fun1();//完成输入后,由结构体数组储存学生的信息
	

	
}

思路:运用了结构体数组储存学生信息的思想,用循环结构输入输出学生的信息。

        运用了模块化的思想,各个函数模块化,实现调用

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Evonso

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值