C语言统计一个班的学生成绩排序-创新互联
功能:
成都创新互联是一家专业提供茅箭企业网站建设,专注与网站制作、网站设计、HTML5、小程序制作等业务。10年已为茅箭众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。(1) 每个学生的学号和四门功课的成绩从键盘读入。
(2) 计算每个学生的总分和平均分。
(3) 按平均成绩进行排序,输出排序后的成绩单(包括学号、四门功课的成绩和平均分),给出名次。如果分数相同,则名次并列,其他学生名次不变。
实验步骤与要求:
(1) 每个功能为一个独立的函数。
(2) 调试程序时,可先输入少量学生的成绩作为实验数据。如可输入3名学生4门课成绩:
学号 成绩
9701 67,72,65,80
9702 75,82,94,95
9703 70,74,80,76
完整代码:
#include#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();//完成输入后,由结构体数组储存学生的信息
}
思路:运用了结构体数组储存学生信息的思想,用循环结构输入输出学生的信息。
运用了模块化的思想,各个函数模块化,实现调用
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章名称:C语言统计一个班的学生成绩排序-创新互联
当前链接:http://hbruida.cn/article/doiech.html