结构体管理、存储学生信息
小Bob 小Bob Bob来啦
2020年04月22日 23:40 __ _ _ _ _
不点蓝字,我们哪来故事?
**Happiness and luck are at a price, and there is no free lunch!
**
幸福和幸运是需要代价的,天下没有免费的午餐!小编建议:做题大家一定要看清题目的要求任务:
使用结构体储存学生信息(包括学号,姓名,3门课程成绩,总分),要求实现对学生信息修改和删除操作,最多50名学生。
注意考察点:结构体, 函数,指针
测试输入:
1. 10 3
2. 1 Siyu 90 90 90
3. 2 Amy 60 70 94
4. 3 Jack 60 60 98
5. 4 Jack 77 90 60
6. 5 Banana 60 60 40
7. 6 White 60 60 60
8. 7 Pinkman 60 60 60
9. 8 Fring 60 60 70
10. 9 Ehrmantraut 80 63 61
11. 10 Schrader 99 66 100
12. 1 Jack
13. 2 1 100 100 100
14. 3 10
测试输入数据说明(PS:这里理解后,输出就好看懂了):
输入一个n,q,标书下面n行则是n个学生的信息,再下q行则是对应的操作。
1. 1 name //为根据名字查询操作
2. 2 sno num1 num2 num2 //为修改分数操作,修改学号为sno的3门成绩
3. 3 sno //为删除操作
预期输出 :
1. 3 Jack 60 60 98 218
2. 4 Jack 77 90 60 227
3. 1 Siyu 100 100 100 300
4. 2 Amy 60 70 94 224
5. 3 Jack 60 60 98 218
6. 4 Jack 77 90 60 227
7. 5 Banana 60 60 40 160
8. 6 White 60 60 60 180
9. 7 Pinkman 60 60 60 180
10. 8 Fring 60 60 70 190
11. 9 Ehrmantraut 80 63 61 204
12. 10 Schrader 99 66 100 265
13. 1 Siyu 100 100 100 300
14. 2 Amy 60 70 94 224
15. 3 Jack 60 60 98 218
16. 4 Jack 77 90 60 227
17. 5 Banana 60 60 40 160
18. 6 White 60 60 60 180
19. 7 Pinkman 60 60 60 180
20. 8 Fring 60 60 70 190
21. 9 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]; } }}
运行结果:


最后的话:刷题要找自己的不足,然后去专攻。
往期推荐:
C语言IDE之Clion2020.1安装详解 2020-04-15
给IT技术爱好者的一封信 2020-04-12
(迷惑标题大赏)数组就是指针? 2020-04-10
公众号:程序员Bob
一个正在学习C语言的人,致力于将C讲得更透彻!
点赞关注谢谢你
长按下图二维码关注,和你一起领悟程序员的魅力。

点“ 在看 ” 你懂得

预览时标签不可点
__
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小Bob的博客!











