Happiness and luck are at a price, and there is no free lunch!
幸福和幸运是需要代价的,天下没有免费的午餐!
小编建议:做题大家一定要看清题目的要求
任务:
使用结构体储存学生信息(包括学号,姓名,3门课程成绩,总分),要求实现对学生信息修改和删除操作,最多50名学生。
注意考察点:结构体,函数,指针
测试输入:
10 31 Siyu 90 90 902 Amy 60 70 943 Jack 60 60 984 Jack 77 90 605 Banana 60 60 406 White 60 60 607 Pinkman 60 60 608 Fring 60 60 709 Ehrmantraut 80 63 6110 Schrader 99 66 1001 Jack2 1 100 100 1003 10
测试输入数据说明(PS:这里理解后,输出就好看懂了):
输入一个n,q,标书下面n行则是n个学生的信息,再下q行则是对应的操作。
1 name //为根据名字查询操作2 sno num1 num2 num2 //为修改分数操作,修改学号为sno的3门成绩3 sno //为删除操作
预期输出:
3 Jack 60 60 98 2184 Jack 77 90 60 2271 Siyu 100 100 100 3002 Amy 60 70 94 2243 Jack 60 60 98 2184 Jack 77 90 60 2275 Banana 60 60 40 1606 White 60 60 60 1807 Pinkman 60 60 60 1808 Fring 60 60 70 1909 Ehrmantraut 80 63 61 20410 Schrader 99 66 100 2651 Siyu 100 100 100 3002 Amy 60 70 94 2243 Jack 60 60 98 2184 Jack 77 90 60 2275 Banana 60 60 40 1606 White 60 60 60 1807 Pinkman 60 60 60 1808 Fring 60 60 70 1909 Ehrmantraut 80 63 61 204
源代码:
#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);
void delete_stu(struct student s[],char *sno);
void update_stu(struct student s[],char *sno,int math,int english,int chinese);
int main(void)//主函数
{
int n,q;
struct student students[50];
scanf("%d%d",&n,&q);
Count=n;
for(int 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);
students[n].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);
}
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;
}
void query_stu(struct student s[],char *name) {
int n;
for (n = 0; n < Count; n++) {
if (strcmp(name, s[n].name) == 0) {
s[n].sum=s[n].chinese+s[n].english+s[n].math;
print(s[n]);
}
s[n].sum=s[n].math+s[n].english+s[n].chinese;
}
}
void update_stu(struct student s[],char *sno,int math,int english,int chinese){
int n;
for(n=0;n<Count;n++) {
if (strcmp(s[n].sno,sno)==0) {
s[n].math=math;s[n].english=english;s[n].chinese=chinese;
s[n].sum=s[n].math+s[n].english+s[n].chinese;
}
}
}
void delete_stu(struct student s[],char *sno) {
int i;
for (i = 0; i < Count - 1; i++) {
if (strlen(s[i].sno) >= strlen(sno))
if (strcmp(s[i].sno, sno) >= 0) {
s[i]=s[i+1];
}
}
}
运行结果: