小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讲得更透彻!

点赞关注谢谢你

长按下图二维码关注,和你一起领悟程序员的魅力。

文章配图

点“ 在看 ” 你懂得

文章配图

预览时标签不可点




__