c语言成绩排序主要函数 成绩排序c语言数据结构

学生成绩排序 c语言设计

#includeiostream

创新互联建站长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为前郭企业提供专业的网站设计、成都网站设计,前郭网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

#includestring

#includeiomanip

#includefstream

using namespace std;

int n; //n个学校

int m; //m个男子项目

int w; //w个女子项目

struct pro //表示项目的结构体

{

string name; //项目名称

int snum[6]; //前5名学校的编号

}p[21];

struct school //表示学校的结构体

{

int num;

string name; //学校名称

int score; //学校总分

int male; //男子总分

int female; //女子总分

}sch[21];

int integral[5]={7,5,3,2,1};//前五名得分

void input()

{

int i,j,y,x;

printf("输入学校数目:");

y=0;

while(1)

{

scanf("%d",n);

if(n=1n=20)y=1;

if(y)break;

else printf("输入数据有误,请重新输入:");

}

for(i=1;i=n;i++)

{

printf("输入第%d个学校的名称:",i);

cinsch[i].name;

sch[i].score=0;

sch[i].female=0;

sch[i].male=0;

sch[i].num=i;

}

printf("输入男子项目数和女子项目数:");

y=0;

while(1)

{

scanf("%d%d",m,w);

if(m=20m=1w=20w=1)y=1;

if(y)break;

else printf("输入数据有误,请重新输入:");

}

for(i=1;i=m+w;i++)

{

printf("输入第%d个项目的名称:\n",i);

cinp[i].name;

printf("输入第%d个项目的前5名的学校编号:\n",i);

for(j=1;j=5;j++)

{

y=0;

while(1)

{

scanf("%d",x);

if(x=1x=20)y=1;

if(y)break;

else printf("输入数据有误,请重新输入:");

}

p[i].snum[j]=x;

sch[x].score+=integral[j-1];

if(i=m)sch[x].male+=integral[j-1];

else sch[x].female+=integral[j-1];

}

}

}

void print(int i)

{

coutsch[i].numsetw(10)sch[i].namesetw(8)sch[i].scoresetw(9)

sch[i].malesetw(10)sch[i].femaleendl;

}

void bianhao() //按编号排序

{

int i,j;

school t;

for(i=1;in;i++)

{

for(j=i;j=n;j++)

if(sch[i].numsch[j].num)

{t=sch[i];sch[i]=sch[j];sch[j]=t;}

}

printf("\n按编号排列:\n");

printf("编号 学校名称 总分 男子总分 女子总分\n");

for(i=1;i=n;i++)

print(i);

}

void zongfen() //按学校总分排序

{

int i,j;

school t;

for(i=1;in;i++)

{

for(j=i;j=n;j++)

if(sch[i].scoresch[j].score)

{t=sch[i];sch[i]=sch[j];sch[j]=t;}

}

printf("\n按学校总分排列:\n");

printf("编号 学校名称 总分 男子总分 女子总分\n");

for(i=1;i=n;i++)

print(i);

ofstream fout;

fout.open("运动会分数统计.txt");

fout"编号 学校名称 总分 男子总分 女子总分"endl;

for(i=1;i=n;i++)

{foutsch[i].numsetw(13)sch[i].namesetw(8)sch[i].scoresetw(9)

sch[i].malesetw(10)sch[i].femaleendl; }

fout.close();

}

void malezf() //按学校男总分排序

{

int i,j;

school t;

for(i=1;in;i++)

{

for(j=i;j=n;j++)

if(sch[i].malesch[j].male)

{t=sch[i];sch[i]=sch[j];sch[j]=t;}

}

printf("\n按学校男子总分排列:\n");

printf("编号 学校名称 总分 男子总分 女子总分\n");

for(i=1;i=n;i++)

print(i);

}

void femalezf() //按学校女总分排序

{

int i,j;

school t;

for(i=1;in;i++)

{

for(j=i;j=n;j++)

if(sch[i].femalesch[j].female)

{t=sch[i];sch[i]=sch[j];sch[j]=t;}

}

printf("\n按学校女子总分排列:\n");

printf("编号 学校名称 总分 男子总分 女子总分\n");

for(i=1;i=n;i++)

print(i);

coutendl;

}

void cxsch() //查询学校信息

{

int i,y,s;

printf("输入需要查询的学校编号:");

y=0;

while(1)

{

scanf("%d",s);

if(s=1s=n)y=1;

if(y)break;

else printf("输入数据有误,请重新输入:");

}

printf("该学校相关信息:\n");

printf("编号 学校名称 总分 男子总分 女子总分\n");

for(i=1;i=n;i++)

{

if(sch[i].num==s)

{

print(i);

break;

}

}

coutendl;

}

void cxxm() //查询项目信息

{

int i,y,s;

printf("输入需要查询的项目编号:");

y=0;

while(1)

{

scanf("%d",s);

if(s=1s=n)y=1;

if(y)break;

else printf("输入数据有误,请重新输入:");

}

coutp[s].name"前5名学校编号及名称为:"endl;

printf("名次 编号 学校名称\n");

for(i=1;i=5;i++)

cout" "i" "p[s].snum[i]setw(12)sch[ p[s].snum[i] ].nameendl;

coutendl;

}

void solve() //菜单函数

{

int z;

while(1)

{

printf("\n选择您需要的操作(选择序号):\n");

printf("1.按学校编号排序输出\n");

printf("2.按学校总分排序输出\n");

printf("3.按学校男总分排序输出\n");

printf("4.按学校女总分排序输出\n");

printf("5.查询某个学校成绩\n");

printf("6.查询某个项目成绩\n");

printf("7.结束\n\n");

scanf("%d",z);

if(z==1)bianhao();

if(z==2)zongfen();

if(z==3)malezf();

if(z==4)femalezf();

if(z==5)cxsch();

if(z==6)cxxm();

if(z==7)break;

}

}

int main() //主函数

{

input();

solve();

return 0;

}

编写c语言程序用三个函数求10个同学的平均分及成绩排序

1、写一个主函数,10个成绩放在一个数组里。

2、然后写一个求平均值的函数,返回平均值,用循环语句求和在求平均值,小学生应该都会求平均值。

3、再写一个排序算法,先模仿一个冒泡排序算法,最简单的排序算法。

这样不就三个函数了吗?,这个题主要让你初步掌握,数组,循环语句的使用,函数的调用,函数参数的传递,函数值的返回等。学习C就自己多练,多想这样会进步,代码就不写了吧,对你不好。

C语言 怎么对成绩排序

#include stdlib.h

int cmp(const void *a, const void *b)

{

student *x=(student*)a;

student *y=(student*)b;

if(x-score[0] y-score[0])//升序排序(从小到大) 如果改成,就是降序排序(从大到小)

return 1;

return 0;

}

//上面函数放在struct student下面,需要该结构

//排序方式可以灵活调整,上面我只是用第一门分数进行比较

//你也可以用其它分数进行比较,多写2个函数就行,如int cmp2(const void*a,const void*b)等等。

//排序函数

qsort(stu,STU_NUM,sizeof(stu[0]),cmp);

//stu是数组名,STU_NUM是数组元素个数,cmp就排序方式(可以替换为cmp2等等)


分享题目:c语言成绩排序主要函数 成绩排序c语言数据结构
浏览地址:http://pwwzsj.com/article/dodsjsg.html