任务要求:使用结构体储存学生信息(包括学号,姓名,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){
/*********Begin*********/
int i=0;
for(;i<Count;i++)
{
if(strcmp(s[i].name,name)==0)
print(s[i]);
}
/*********End**********/
}
//用于删除输入学号所对应学生的信息
void delete_stu(struct student s[],char *sno){
/*********Begin*********/
int i=0;
for(;i<Count;i++)
{
if(strcmp(s[i].sno,sno)==0)
break;
}
for(;i<Count-1;i++)
{
s[i]=s[i+1];
}
/*********End**********/
}
//用于重登成绩
void update_stu(struct student s[],char *sno,int math,int english,int chinese){
/*********Begin*********/
int i=0;
for(;i<Count;i++)
{
if(strcmp(s[i].sno,sno)==0)
{
s[i].math=math;
s[i].english=english;
s[i].chinese=chinese;
students[i].sum=students[i].math+students[i].english+students[i].chinese;//重新计算总成绩
}
}
/*********End**********/
}
int main(void)
{
int n,q;
struct student students[50];
scanf("%d%d",&n,&q);
Count=n;
for(int i=0;i<n;i++){
/*********Begin*********/
scanf("%s",students[i].sno);
scanf("%s",students[i].name);
scanf("%d",&students[i].math);
scanf("%d",&students[i].english);
scanf("%d",&students[i].chinese);
//scanf("%s%s%d%d%d",students[i].sno,students[i].name,&students[i].math,&students[i].english,&students[i].chinese);//上五条输入语句替代
students[i].sum=students[i].math+students[i].english+students[i].chinese;//求总成绩
/*********End**********/
}
while(q--){
int op;
scanf("%d",&op);
char sno[20],name[20];
if(op==1){
scanf("%s",name);
query_stu(students,name);
}
else if(op==2){
int a,b,c;
scanf("%s%d%d%d",sno,&a,&b,&c);
update_stu(students,sno,a,b,c);
for(int i=0;i<Count;i++)
print(students[i]);
}
else{
scanf("%s",sno);
delete_stu(students,sno);
for(int i=0;i<Count-1;i++)
print(students[i]);
}
}
return 0;
}