头歌结构存储学生信息
使用结构体储存学生信息(包括学号,姓名,3 门课程成绩,总分),要求实现对学生信息修改和删除操作,最多50名学生。
#include<stdio.h>
#include<string.h>
int Count;
struct student
{
char sno[20],name[20];
int math,english,chinese,sum;
};
void print(struct student stu)
{
printf("%s %s %d %d %d %d\n",stu.sno,stu.name,stu.math,stu.english,stu.chinese,stu.sum);
}
void query_stu(struct student s[],char *name,int n)
{
int i=0,m=0;
struct student students[50];
for(i=0;i<n;i++)
{
if(strcmp(s[i].name,name)==0)
{
m=i;
printf("%s %s %d %d %d %d\n",s[i].sno,s[i].name,s[i].math,s[i].english,s[i].chinese,s[i].sum);
}
}
}
void delete_stu(struct student s[],char *sno,int n)
{
int i=0,m=0;
for(i=0;i<n;i++)
{
if(strcmp(s[i].sno,sno)==0)
{
m=i;
for(i=m+1;i<n;i++)
{
s[i-1]=s[i];
}
}
}
}
void update_stu(struct student s[],char *sno,int math,int english,int chinese,int n)
{
int i=0,m=0;
for(i=0;i<n;i++)
{
if(strcmp(s[i].sno,sno)==0)
{
s[i].math=math;
s[i].english=english;
s[i].chinese=chinese;
s[i].sum=math+english+chinese;
}
}
}
int main(void)
{
int n,q;
struct student students[50];
scanf("%d%d",&n,&q);
Count=n;
int i;
for(i=0;i<n;i++)
{
scanf("%s %s %d %d %d",&students[i].sno,&students[i].name,&students[i].math,&students[i].english,&students[i].chinese);
}
for(i=0;i<n;i++)
{
students[i].sum=students[i].math+students[i].english+students[i].chinese;
}
while(q--)
{
int op;
scanf("%d",&op);
char sno[20],name[20];
if(op==1)
{
scanf("%s",name);
query_stu(students,name,n);
}
else if(op==2)
{
int a,b,c;
scanf("%s%d%d%d",sno,&a,&b,&c);
update_stu(students,sno,a,b,c,n);
for(i=0;i<Count;i++)
print(students[i]);
}
else
{
scanf("%s",sno);
delete_stu(students,sno,n);
for(i=0;i<Count-1;i++)
print(students[i]);
}
}
return 0;
}