#include<stdio.h>
//定义一个学生信息结构体,包含姓名,学号,语文成绩、数学成绩,和英
//语成绩,定义结构体数组存放不同学生的信息,可以在终端录入学生的信
//息,可以实现对于学生成绩的排序,排序可以按照语文、数学或者英语,平均值的
//任意一个
typedef struct
{
int xh;
char mz[100];
int yw;
int sx;
int yy;
float pj;
}add;
int num=0;
void sr(add *p);
void ywpx(add *p1);
void sxpx(add *p1);
void yypx(add *p1);
void pjpx(add *p1);
void sc(add *p1);
void scu(add *p1);
int main(int argc, const char *argv[])
{
add arr[110];
int n;
while(1)
{
printf("|***********************功能选择*******************************|\n");
printf("|********************1:添加学生信息****************************|\n");
printf("|********************2:以语文成绩进行排************************|\n");
printf("|********************3:以数学成绩进行排序**********************|\n");
printf("|********************4:以英语成绩进行排序**********************|\n");
printf("|********************5:以平均值进行排序************************|\n");
printf("|********************6:删除学生********************************|\n");
printf("|********************7:输出************************************|\n");
printf("|********************8:退出程序********************************|\n");
scanf("%d",&n);
switch(n)
{
case 1:
sr(arr);
break;
case 2:
ywpx(arr);
break;
case 3:
sxpx(arr);
break;
case 4:
yypx(arr);
break;
case 5:
pjpx(arr);
break;
case 6:
scu(arr);
break;
case 7:
sc(arr);
break;
case 8:
printf("已退出程序\n");
return 1;
default:
printf("没有这个选项,请重新输入\n");
break;
}
}
return 0;
}
void sr(add *p)
{
int n=0;
while(1)
{
printf("输入学生的学号\n");
scanf("%d",&p[num].xh);
printf("输入学生的名字\n");
scanf("%s",p[num].mz);
printf("输入学生的语文成绩\n");
scanf("%d",&p[num].yw);
printf("输入学生的数学成绩\n");
scanf("%d",&p[num].sx);
printf("输入学生的英语成绩\n");
scanf("%d",&p[num].yy);
p[num].pj=(float)(p[num].yw+p[num].sx+p[num].yy)/3;
printf("平均成绩为:\n");
printf("%f\n",p[num].pj);
num++;
printf("添加完毕,是否继续添加(是:1,否:2)\n");
A: scanf("%d",&n);
if(n==2)
{
break ;
}
else if(n!=2&&n!=1)
{
printf("输入不合理,请重新选择是否继续添加(是:1,否:2)\n");
goto A;
}
}
}
void ywpx(add *p1)
{
int i,k;
add j;
for(i=1;i<num;i++)
{
for(k=0;k<num-i;k++)
{
if(p1[k].yw<p1[k+1].yw)
{
j=p1[k];
p1[k]=p1[k+1];
p1[k+1]=j;
}
}
}
printf("排序成功\n");
}
void sxpx(add *p1)
{
int i,k;
add j;
for(i=1;i<num;i++)
{
for(k=0;k<num-i;k++)
{
if(p1[k].sx<p1[k+1].sx)
{
j=p1[k];
p1[k]=p1[k+1];
p1[k+1]=j;
}
}
}
printf("排序成功\n");
}
void yypx(add *p1)
{
int i,k;
add j;
for(i=1;i<num;i++)
{
for(k=0;k<num-i;k++)
{
if(p1[k].yy<p1[k+1].yy)
{
j=p1[k];
p1[k]=p1[k+1];
p1[k+1]=j;
}
}
}
printf("排序成功\n");
}
void pjpx(add *p1)
{
int i,k;
add j;
for(i=1;i<num;i++)
{
for(k=0;k<num-i;k++)
{
if(p1[k].pj<p1[k+1].pj)
{
j=p1[k];
p1[k]=p1[k+1];
p1[k+1]=j;
}
}
}
printf("排序成功\n");
}
void sc(add *p1)
{
int i;
for(i=0;i<num;i++)
{
printf("学号:%d\t",p1[i].xh);
printf("名字:%s\t",p1[i].mz);
printf("语文成绩:%d\t",p1[i].yw);
printf("英语成绩:%d\t",p1[i].yy);
printf("数学成绩:%d\t",p1[i].sx);
printf("平均成绩:%f\t",p1[i].pj);
putchar(10);
}
}
void scu(add *p1)
{
int i,j,k=0;
int len;
B: printf("请输入移除学生的学号\n");
scanf("%d",&len);
for(i=0;i<num;i++)
{
if(len==p1[i].xh)
{
for(j=k;j<num;j++)
{
p1[j]=p1[j+1];
}
num--;
break;
}
k++;
}
if(k==num)
{
C: printf("没有要删除学生的学号,是否继续删除(是:1否:2)");
int a;
scanf("%d",&a);
if(a==1)
{
goto B;
}
else if(a!=2&&a!=1)
{
printf("没有这个选项请重新选择\n");
goto C;
}
else
{
printf("退出\n");
}
}
else
{
printf("删除成功\n");
}
}
04-03
9430
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)