前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >结构体管理、存储学生信息

结构体管理、存储学生信息

作者头像
小Bob来啦
发布2020-12-15 09:40:36
5170
发布2020-12-15 09:40:36
举报
文章被收录于专栏:用户8057608的专栏

Happiness and luck are at a price, and there is no free lunch!

幸福和幸运是需要代价的,天下没有免费的午餐!

小编建议:做题大家一定要看清题目的要求

任务:

使用结构体储存学生信息(包括学号,姓名,3门课程成绩,总分),要求实现对学生信息修改和删除操作,最多50名学生。

注意考察点:结构体,函数,指针

测试输入:

代码语言:javascript
复制
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行则是对应的操作。

代码语言:javascript
复制
1 name //为根据名字查询操作2 sno num1 num2 num2 //为修改分数操作,修改学号为sno的3门成绩3 sno //为删除操作

预期输出:

代码语言:javascript
复制
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

源代码:

代码语言:javascript
复制
#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];
            }
    }
}

运行结果:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员Bob 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档