代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Student
{
int id; //学号
char name[20]; //姓名
int score; //成绩
};
//录入信息
void InputInfo(struct Student arr[],int n)
{
int i,j;
for (i = 0;i < n; i++)
{
printf("请输入第%d名学生的信息(学号、姓名、课程成绩):",i+1);
scanf("%d %s %d",&arr[i].id,arr[i].name,&arr[i].score);
}
}
//排序
void SortByTotal(struct Student arr[],int n)
{
int i,j;
struct Student tmp;
for (i = 0; i < n-1;i++)
{
for (j = 0;j < n-1-j;j++)
{
if(arr[j].score < arr[j+1].score)
{
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
//显示
for (i = 0;i< n;i++)
{
printf("%d\t%s\t%d\n",arr[i].id,arr[i].name,arr[i].score);
}
}
//查询
void Find(struct Student arr[],int n)
{
int i,j;
int id;
printf("请输入学号:");
scanf("%d",id);
for (i = 0;i < n;i++)
{
if( arr[i].id == id )
{
printf("%d\t%s\t%d\t%d\n",arr[i].id,arr[i].name,arr[i].score,i+1);
break;;
}
}
}
//统计占比
void Tongji(struct Student arr[],int n)
{
int i,j;
int you = 0;
int liang = 0;
int zhong = 0;
int jige = 0;
int bujig = 0;
for (i = 0; i< n;i++)
{
if (arr[i].score >= 90)
{
you++;
}else if (arr[i].score >= 80 && arr[i].score <= 89)
{
liang++;
}else if (arr[i].score >= 70 && arr[i].score <= 79)
{
zhong++;
}else if (arr[i].score >= 60 && arr[i].score <= 69)
{
jige++;
}else
bujig++;
}
//显示
printf("优秀人数%d,占比%f\n",you,1.0*you/n);
printf("良好人数%d,占比%f\n",liang,1.0*liang/n);
printf("中等人数%d,占比%f\n",zhong,1.0*zhong/n);
printf("及格人数%d,占比%f\n",jige,1.0*jige/n);
printf("不及格人数%d,占比%f\n",bujig,1.0*bujig/n);
}
int main()
{
struct Student stu[30];
int n;
int opt;
int bgo = 1;
while(bgo)
{
printf("-------学生管理系统-------\n");
printf(" 1.录入学生信息 \n");
printf(" 2.按成绩排名 \n");
printf(" 3.查询学生信息 \n");
printf(" 4.统计各段成绩占比 \n");
printf(" 9.退出系统 \n");
printf("--------------------------\n");
scanf("%d",&opt);
switch(opt)
{
case 1:
printf("请输入学生人数:");
scanf("%d",&n);
InputInfo(stu,n);
getchar();
getchar();
system("cls");
break;
case 2:
SortByTotal(stu,n);
getchar();
getchar();
system("cls");
break;
case 3:
Find(stu,n);
getchar();
getchar();
system("cls");
break;
case 4:
Tongji(stu,n);
getchar();
getchar();
system("cls");
break;
case 9:
bgo = 0;
break;
}
}
return 0;
}