#include<stdio.h>
#include<string.h>
#define MAX 20
void print_menu()// 定义菜单函数
{
printf("\t\t==1、信息录入==\n");
printf("\t\t==2、信息输出==\n");
printf("\t\t==3、输出最高和最低==\n");
printf("\t\t==4、输出学生总成绩和平均==\n");
printf("\t\t==5、排序==\n");
printf("\t\t==6、查找==\n");
printf("\t\t==0、退出==\n");
}
struct Stu
{
char name[20];
int xuehao;
char xingbie[10];
double chengji;
};
void xitong_1(struct Stu stu[],int n)
{
for(int i=0;i<n;i++)
{
printf("请输入第%d个学生的姓名:",i+1);
scanf("%s",stu[i].name);
printf("请输入第%d个学生的学号:",i+1);
scanf("%d",&stu[i].xuehao);
printf("请输入第%d个学生的性别:",i+1);
scanf("%s",stu[i].xingbie);
printf("请输入第%d个学生的成绩:",i+1);
scanf("%lf",&stu[i].chengji);
printf("\n");
}
}
void xitong_2(struct Stu stu[],int n)
{
printf("学生信息如下:\n");
printf("姓名\t学号\t性别\t成绩\n");
for(int i=0;i<n;i++)
{
printf("%s\t%d\t%s\t%lf\n",stu[i].name,stu[i].xuehao,stu[i].xingbie,stu[i].chengji);
}
}
void xitong_3(struct Stu stu[],int n)
{
struct Stu max;
max = stu[0];
struct Stu min;
min = stu[0];
for(int i=0;i<n;i++)
{
if(stu[i].chengji>max.chengji)
{
max=stu[i];
}
if(stu[i].chengji<min.chengji)
{
min=stu[i];
}
}
printf("成绩最高的学生:\n");
printf("%s\t%d\t%s\t%lf\n",max.name,max.xuehao,max.xingbie,max.chengji);
printf("成绩最低的学生:\n");
printf("%s\t%d\t%s\t%lf\n",min.name,min.xuehao,min.xingbie,min.chengji);
}
void xitong_4(struct Stu stu[],int n)
{
double sum=0;
double pingjun=0;
for(int i=0;i<n;i++)
{
sum+=stu[i].chengji;
}
pingjun=sum/n;
printf("学生的成绩总和为:");
printf("%lf\n",sum);
printf("学生的平均成绩为:");
printf("%lf\n",pingjun);
}
void xitong_5(struct Stu stu[],int n,int flag)
{
for(int i=1;i<n;i++)
{
for(int j=0;j<n-i;j++)
{
if(stu[j].chengji>stu[j+1].chengji&&flag ==0)
{
struct Stu temp = stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
else if(flag==1)
{
struct Stu temp = stu[j];
stu[j]= stu[j+1];
stu[j+1]=temp;
}
}
}
printf("排序后的顺序:\n");
xitong_2(stu,n);
}
void xitong_6(struct Stu stu[],int n,char a[20])
{
int flag =0;
for(int i=0;i<n;i++)
{
if(strcmp(stu[i].name,a)==1)
{
flag=1;
}
}
if(flag==1)
{
printf("存在\n");
}
else{
printf("不存在\n");
}
}
//菜单
int main(int argc,const char *argv[])
{
print_menu();
int menu=0;
int n=0;
struct Stu stu[MAX];
memset(stu,0,sizeof(stu));
while(1)
{
printf("请输入>>>");
scanf("%d",&menu);
getchar();
switch(menu)//分支
{
case 1:
{
printf("学生个数为:\n");
scanf("%d",&n);
xitong_1(stu,n);
}
break;
case 2:
{
xitong_2(stu,n);
break;
}
case 3:
{
xitong_3(stu,n);
break;
}
case 4:
{
xitong_4(stu,n);
break ;
}
case 5:
{
int flag=0;
printf("请选择排序方式(0升序,1降序):\n");
printf("请输入:");
scanf("%d",&flag);
xitong_5(stu,n,flag);
break;
}
case 6:
{
char a[MAX]={0};
printf("请输入要查找的姓名:\n");
scanf("%s",a);
xitong_6(stu,n,a);
break;
}
case 0:
{
return 0;
}
}
}
return 0;
}
1、完成对学生信息的录入,确定人数,完成输入
2、完成对学生信息的输出
3、输出成绩最高和最低学生的信息
4、输出学生的总成绩和平均成绩
5、对学生信息按成绩进行排序,根据传入的升降序,确定排序功能
6、提示并输入要查找的学生姓名,查找该名字是否存在于该班级