输入n并输入n(n<=100)个学生的信息(学号、姓名、成绩),存入数组,用结构数组编程解决问题。
(1)排序:按照从高分到低分的顺序输出他们的信息;
(2)查询:能按学号查询某个学生的成绩;
(3)添加:能添加一个学生的信息((学号、姓名、成绩;
(4)删除:能删除一个指定学号的学生信息。
#include <stdio.h>
#include <stdlib.h>
typedef struct _student
{
char name[20];
int nid;
float score;
}student;
student stu[100];
int n;
void sort()
{
int i,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(stu[j].score < stu[j+1].score)
{
student a = stu[j];
stu[j] = stu[j+1];
stu[j+1] = a;
}
}
printf("%10s%20s%10s\n","学号","姓名","成绩");
for(i=0;i<n;i++)
printf("%10d%20s%10g\n",stu[i].nid,stu[i].name,stu[i].score);
}
void query()
{
int id;
scanf("%d",&id);
for(int i=0;i<n;i++)
{
if(stu[i].nid == id)
{
printf("学号:%d\n",stu[i].nid);
printf("姓名:%s\n",stu[i].name);
printf("成绩:%g\n",stu[i].score);
return;
}
}
printf("查无此人。\n");
}
void del()
{
printf("请输入需要删除的学生学号:");
int id;
scanf("%d",&id);
for(int i=0;i<n;i++)
{
if(stu[i].nid == id)
{
for(int j=i;j<n-1;j++)
{
stu[j] = stu[j+1];
}
n--;
printf("删除成功。\n");
return;
}
}
printf("查无此人。\n");
}
void add()
{
printf("请输入学生学号、姓名和成绩:");
scanf("%d %s %f",&stu[n].nid,stu[n].name,&stu[n].score);
n++;
printf("添加成功。\n");
}
void showmenu()
{
system("cls");
printf(" 欢迎使用学生管理系统\n\n");
printf(" 1、增加学生\n");
printf(" 2、删除学生\n");
printf(" 3、查询学生\n");
printf(" 4、排序学生\n");
printf(" 0、退出系统\n\n");
printf(" 请输入您的选择:");
}
int main()
{
while(1)
{
showmenu();
int sel;
scanf("%d",&sel);
switch(sel)
{
case 1:
add();
break;
case 2:
del();
break;
case 3:
query();
break;
case 4:
sort();
break;
case 0:
exit(0);
}
system("pause");
}
return 0;
}