📄 studentmanage.c
字号:
#include <stdio.h>
#include <string.h>
//________________________________________________定义结构体
struct student
{
int NO;
char name[20];
int score[3];
double avg;
};
//________________________________________________声明函数原型
struct student input();
void display(struct student s[],int n);
void sort(struct student s[],int n);
void INSERT(struct student s[],int n);
void DELECT(struct student s[],int n);
//________________________________________________主函数
void main()
{
int count=0;
char option1,option2;
struct student stu[50];
do
{
stu[count]=input();
count++;
printf("是否继续输入(Y/N):");
fflush(stdin);
option1=getchar();
putchar('\n');
}while(option1=='Y'||option1=='y');
putchar('\n');
//________________________________________________________________________________调用函数块
printf("\n排序前学生信息\n");
display(stu,count);
printf("\n排序后学生信息\n");
sort(stu,count);
display(stu,count);
printf("是否进行插入、删除操作(Y/N):");
fflush(stdin);
option1=getchar();
putchar('\n');
while(option1=='Y'||option1=='y')
{
printf("\n 1.插入 2.删除 :");
scanf("%d",&option2);
switch(option2)
{
case 1:
{
INSERT(stu,count++);
display(stu,count++);
break;
}
case 2:
{
DELECT(stu,count);
display(stu,--count);
break;
}
}
printf("是否继续(Y/N):");
fflush(stdin);
option1=getchar();
}
}
//________________________________________________数据录入
struct student input()
{
int i,sum=0;
struct student temp;
printf("请输入学生的信息:\n");
printf("\n学号:");
fflush(stdin);
scanf("%d",&temp.NO);
printf("\n姓名:");
fflush(stdin);
gets(temp.name);
printf("\n请输入3门课成绩:\n");
putchar('\n');
for(i=0;i<3;i++)
{
printf("\n第%d门成绩:",i+1);
scanf("%d",&temp.score[i]);
sum+=temp.score[i];
}
temp.avg=sum/3;
return temp;
}
//________________________________________________显示信息
void display(struct student s[],int n)
{
int i;
printf("\n%-8s%-12s%-10s\n","学号","姓名","平均成绩");
for(i=0;i<n;i++)
{
printf("\n%-8d%-12s%-10.2f\n",s[i].NO,s[i].name,s[i].avg);
}
}
//_________________________________________________排序
void sort(struct student s[],int n)
{
struct student temp;
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(s[j].avg<s[j+1].avg)
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
}
//___________________________________________________插入
void INSERT(struct student s[],int n)
{
struct student temp;
int i,j;
temp=input();
for(i=0;i<n;i++)
{
if(temp.avg>s[i].avg)
break;
}
for(j=n;j>i;j--)
{
s[j]=s[j-1];
}
s[i]=temp;
}
//____________________________________________________ 删除
void DELECT(struct student s[],int n)
{
struct student temp;
int i,j;
printf("请输入要删除学生的学号:");
scanf("%d",&temp.NO);
for(i=0;i<n;i++)
{
if(temp.NO==s[i].NO)
break;
}
for(j=i;j<(n-1);j++)
{
s[j]=s[j+1];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -