该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
struct stu
{
int num;//学号
char name[10];//姓名
float cj[3];//成绩
float pj;//平均成绩
float zf;//总分
};
int i=0;
int z;
struct stu p[50];
void charu(struct stu u[]);
void shanchu(struct stu u[]);
void sx(struct stu u[]);
void yw(struct stu u[]);
void wy(struct stu u[]);
void zfpm(struct stu u[]);
void main()
{
struct stu u[50];
char x;
int l;
printf("-------欢迎使用学生成绩管理系统---------\n");
do
{
printf("学号:%d\n",i+1);
u[i].num=i+1;
printf("姓名:\n");
scanf("%s",u[i].name);
printf("数学:\n");
scanf("%f",&u[i].cj[0]);
printf("语文:\n");
scanf("%f",&u[i].cj[1]);
printf("外语:\n");
scanf("%f",&u[i].cj[2]);
u[i].zf=(u[i].cj[0]+u[i].cj[1]+u[i].cj[2]);
printf("总分:%.2f\n",u[i].zf);
u[i].pj=(u[i].cj[0]+u[i].cj[1]+u[i].cj[2])/3;
printf("平均成绩%.2f:\n",u[i].pj);
z++;
i++;
printf("是否继续输入?(y\\n)");
scanf(" %c",&x);
}while(x=='Y'||x=='y');
do
{
printf("--------学生成绩管理系统----------\n");
printf("------- 0.退 出 --------\n");
printf("------- 1.插 入 --------\n");
printf("------- 2.删 除 --------\n");
printf("------- 3.数学排名 --------\n");
printf("------- 4.语文排名 --------\n");
printf("------- 5.外语排名 --------\n");
printf("------- 6.总分排名 --------\n");
printf("请选择:\n");
scanf("%d",&l);
switch(l)
{
case 0:exit(0);break;
case 1:charu(u);break;
case 2:shanchu(u);break;
case 3:sx(u);break;
case 4:yw(u);break;
case 5:wy(u);break;
case 6:zfpm(u);break;
}
printf("是否返回主菜单?(y\\n)");
scanf(" %c",&x);
}while(x=='Y'||x=='y');
}
void charu(struct stu u[])//插入
{
char x;
do
{
printf("学号:%d\n",z+1);
u[i].num=z+1;
printf("姓名:\n");
scanf("%s",u[i].name);
printf("数学:\n");
scanf("%f",&u[i].cj[0]);
printf("语文:\n");
scanf("%f",&u[i].cj[1]);
printf("外语:\n");
scanf("%f",&u[i].cj[2]);
u[i].zf=(u[i].cj[0]+u[i].cj[1]+u[i].cj[2]);
printf("总分:%.2f\n",u[i].zf);
u[i].pj=(u[i].cj[0]+u[i].cj[1]+u[i].cj[2])/3;
printf("平均成绩%.2f:\n",u[i].pj);
i++;
z++;
printf("是否继续输入?(y\\n)");
scanf(" %c",&x);
}while(x=='Y'||x=='y');
}
void shanchu(struct stu u[])//删除
{
int num,j,k;
printf("请输入您想删除的学号:\n");
scanf("%d",&num);
for(j=0;j
{
if(num==u[j].num)
break;
}
if(j==i)
{
printf("查无此人");
}
else
{
for(k=j;k
{
u[k]=u[k+1];
}
z=i;
i--;
printf("--------删除成功----------\n");
}
}
void zfpm(struct stu u[])//总分排名
{
int j,k,num=0;
float sum=0,n=0;//sum:全班的总分。n:全班的平均分
for(j=0;j
{
for(k=j+1;k
{
if(u[j].pj
{
p[j]=u[j];
u[j]=u[k];
u[k]=p[j];
}
}
}
for(j=0;j
{
printf("排名:%d学号:%d姓名:%s数学:%.2f语文:%.2f外语:%.2f总分%.2f平均分:%.2f\n",num+1,u[j].num,u[j].name,u[j].cj[0],u[j].cj[1],u[j].cj[2],u[j].zf,u[j].pj);
sum=sum+u[j].zf;
num++;
}
n=sum/num;
printf("全班总分:%.2f\n",sum);
printf("全班平均分:%.2f\n",n);
}
void sx(struct stu u[])//数学排名
{
int j,k,num=1;
for(j=0;j
{
for(k=j+1;k
{
if(u[j].cj[0]
{
p[j]=u[j];
u[j]=u[k];
u[k]=p[j];
}
}
}
for(j=0;j
{
printf("排名:%d学号:%d姓名:%s数学:%.2f\n",num,u[j].num,u[j].name,u[j].cj[0]);
num++;
}
}
void yw(struct stu u[])//语文排名
{
int j,k,num=1;
for(j=0;j
{
for(k=j+1;k
{
if(u[j].cj[1]
{
p[j]=u[j];
u[j]=u[k];
u[k]=p[j];
}
}
}
for(j=0;j
{
printf("排名:%d学号:%d姓名:%s语文:%.2f分\n",num,u[j].num,u[j].name,u[j].cj[1]);
num++;
}
}
void wy(struct stu u[])//外语排名
{
int j,k,num=1;
for(j=0;j
{
for(k=j+1;k
{
if(u[j].cj[2]
{
p[j]=u[j];
u[j]=u[k];
u[k]=p[j];
}
}
}
for(j=0;j
{
printf("排名:%d学号:%d姓名:%s外语:%.2f分\n",num,u[j].num,u[j].name,u[j].cj[2]);
num++;
}
}