1757: 成绩稳定的学生(武汉科技大学结构体oj)

Posted cy846586184

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1757: 成绩稳定的学生(武汉科技大学结构体oj)相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<string.h>
struct student
{
long no;
char name[9];
int ch[20];
int count;//多定义一个count来看某个学生是不是每科的成绩都大于平均值
}
read(struct student stu[],int n,int m)
{
int i,j;
for(i=0;i<n;i++)
{
scanf("%ld %s",&stu[i].no,&stu[i].name);//分别读入,有缓冲区
for(j=0;j<m;j++)
{
scanf("%d",&stu[i].ch[j]);
}
stu[i].count=0;
}
}
int solved(struct student stu[],int n,int m,int result[])
{
memset(result,-1,100);//方便后面的while循环
int average,sum=0,i,j,k,q=0,t,num=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
sum+=stu[j].ch[i];
}
average=sum/n;
for(k=0;k<n;k++)
{
if(stu[k].ch[i]>average) stu[k].count++;
}
sum=0;
}
for(i=0;i<n;i++)
{
if(stu[i].count==m)
{
result[q]=i;//把stu[i]中的i值存到result 数组里。
q++;
num++;
}
}
return num;
}
void write(struct student stu[],int t,int m,int result[])
{
int i=0,j;
printf("num=%d ",t);
while(result[i]!=-1)
{
printf("%ld %s ",stu[result[i]].no,stu[result[i]].name);//分开输出
for(j=0;j<m-1;j++) printf("%d ",stu[result[i]].ch[j]);
printf("%d ",stu[result[i]].ch[m-1]);
i++;
}
}
int main()
{
int n,m,resdent stu[100];
while(scanult[100],t;
struct stuf("%d%d",&n,&m)!=EOF)
{
read(stu,n,m); //读入n个学生的数据
t=solved(stu,n,m,result); //将成绩稳定的学生编号存到数组result中,返回成绩稳定的学生人数
write(stu,t,m,result); //输出t个成绩稳定的学生的信息
}
return 0;
}

以上是关于1757: 成绩稳定的学生(武汉科技大学结构体oj)的主要内容,如果未能解决你的问题,请参考以下文章

C语言试题五十二之学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。

第十六届全国大学智能车竞赛华南赛区成绩汇总

第十六届全国大学生智能车竞赛线上比赛(广东+西南科技大学)成绩排名与获奖信息

C语言 学生管理系统

第十七届全国大学生智能车竞赛华南赛区奖项

C语言结构体排序