高分求一c语言编程题(急!!!)

2024-12-02 17:32:09
推荐回答(1个)
回答1:

#include
#define N 50
struct stu
{
int num;
char name[20];
float score[3];
float average;
};
int count=0;
void display(struct stu []);
struct stu input();
void sort(struct stu []);
void insert(struct stu infm[]);
void search(struct stu infm[]);
void del(struct stu infm[]);
void main()
{
char ch;
struct stu infm[N];
int in_int;
do
{
printf("请输入要实现的功能:\n1、录入;2排序;3、显示;4、查找;5、插入;6、删除");
scanf("%d",&in_int);
switch(in_int)
{
case 1:
{
do
{
infm[count]=input();
count++;
printf("是否继续录入?(y/n)");
fflush(stdin);
scanf("%c",&ch);
}
while(ch=='y'||ch=='Y');
display(infm);
break;
}
case 2:
{
sort(infm);
break;
}
case 3:
{
display(infm);
break;
}
case 4:
{
search(infm);
break;
}
case 5:
{
insert(infm);
break;
}
case 6:
{
del(infm);
break;
}
default:
{
printf("输入错误!");
}
}
printf("是否继续?(y/n)");
fflush(stdin);
scanf("%c",&ch);
}
while(ch=='y'||ch=='Y');
}
struct stu input()
{
struct stu in;
int i;
printf("请输入学生学号:");
fflush(stdin);
scanf("%d",&in.num);
printf("请输入学生姓名:");
fflush(stdin);
scanf("%s",in.name);
for(i=0;i<3;i++)
{
printf("请输入学生第%d科成绩:",i+1);
fflush(stdin);
scanf("%f",&in.score[i]);
}
in.average=(in.score[0]+in.score[1]+in.score[2])/3;
return in;
}
void sort(struct stu infm[])
{
int i,j;
struct stu temp;
printf("排序前的学生顺序为:");
display(infm);
for(i=0;i {
for(j=i+1;j {
if(infm[i].average {
temp=infm[i];
infm[i]=infm[j];
infm[j]=temp;
}
}
}
printf("排序后的学生顺序为:");
display(infm);
}
void display(struct stu out[])
{
int i;
printf("学号\t姓名\t\t平均成绩\n");
for(i=0;i {
printf("%d\t%s\t\t%3.1f\n",out[i].num,out[i].name,out[i].average);
}
}
void search(struct stu infm[])
{
int i, num;
printf("请输入要查找学生的学号:");
scanf("%d",&num);
for(i=0;i {
if(infm[i].num==num)
{
break;
}
}
printf("学号\t姓名\t\t平均成绩\n");
printf("%d\t%s\t%4.1f\t",infm[i].num,infm[i].name,infm[i].average);
}
void insert(struct stu infm[])
{
int i,j;
struct stu temp;
temp=input();
for(i=0;i {
if(temp.average>infm[i].average)
{
break;
}
}
for(j=count;j>i;j--)
{
infm[j]=infm[j-1];
}
infm[i]=temp;
count++;
printf("插入后的学生顺序为:\n");
display(infm);
}
void del(struct stu infm[])
{
int i,j,number;
printf("请输入要删除学生的学号:");
scanf("%d",&number);
for(i=0;i {
if(infm[i].num==number)
{
break;
}
}
for(j=i;j {
infm[j]=infm[j+1];
}
count--;
printf("删除后的学生顺序为:\n");
display(infm);
}