学生成绩排序 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://scyingshan.cn/article/dodsjsg.html