zoukankan      html  css  js  c++  java
  • [C]struct, union的结合

    #include <stdio.h>
    typedef union {
        double math;
        double phys;
        double chem;
    } Score;
    
    typedef struct student {
        char name[10];
        int age;
        Score grade;
        char whichSubject;
    } Student;
    
    void input(Student *s) {
        printf("input your name: ");
        scanf("%s", s->name);
        printf("input your age: ");
        scanf("%d", &s->age);
        printf("which subject m/p/c: ");
        scanf(" %c", &s->whichSubject); //<<这里注意" %c"前有个空格哦
        switch (s->whichSubject) {
            case 'm': scanf("%lf", &s->grade.math); break;
            case 'p': scanf("%lf", &s->grade.phys); break;
            case 'c': scanf("%lf", &s->grade.chem); break;
        }
    }
    
    void print(Student *s) {
        switch (s->whichSubject) {
            case 'm': printf("My name is %s, and I'm %d. I got %f in Math
    ", s->name, s->age, s->grade.math); break;
            case 'p': printf("My name is %s, and I'm %d. I got %f in Physics
    ", s->name, s->age, s->grade.phys); break;
            case 'c': printf("My name is %s, and I'm %d. I got %f in Chemistry
    ", s->name, s->age, s->grade.chem); break;
        }
    }
    
    int main( )
    {
        Student s1;
        input(&s1);
        print(&s1);
        return 0;
    }

    与数组结合

    //struc, union,与array结合
    #include <stdio.h>
    typedef union {
        double math;
        double phys;
        double chem;
    } Subject;
    
    typedef struct {
        char name[20];
        int age;
        Subject scores;
        char whichSubject;
    } Student;
    
    void input(Student *s, int n) {
        for (int i = 0; i < n; ++i) {
            printf("input your name: ");
            scanf(" %19[^
    ]", s[i].name); //" %19[^
    ]"中要有空格
            printf("input your age: ");
            scanf("%d", &s[i].age);
            printf("which subject m/p/c: ");
            scanf(" %c", &s[i].whichSubject); //" %c"中要有空格
            switch ( s[i].whichSubject ) {
                case 'm': printf("input your math score: "); scanf("%lf", &s[i].scores.math); break;
                case 'p': printf("input your physics score: "); scanf("%lf", &s[i].scores.phys); break;
                case 'c': printf("input your chemistry score: "); scanf("%lf", &s[i].scores.chem); break;
            }
        }
    }
    
    double getAve(Student *s, int n) {
        double sum = 0;
        int i;
        for ( i = 0; i < n; ++i ) {
            switch (s[i].whichSubject) {
                case 'm': sum += s[i].scores.math; break;
                case 'p': sum += s[i].scores.phys; break;
                case 'c': sum += s[i].scores.chem; break;
            }
        }
        return sum / n;
    }
    
    void display(Student *s, int n) {
        for ( int i = 0; i < n; ++i ) {
            switch (s[i].whichSubject) {
                case 'm': printf("%s's math score is %f
    ", s[i].name, s[i].scores.math); break;
                case 'p': printf("%s's physics score is %f
    ", s[i].name, s[i].scores.phys); break;
                case 'c': printf("%s's chemistry score is %f
    ", s[i].name, s[i].scores.chem); break;
            }
        }
    }
    
    int main() {
        const int size = 2;
        Student stu[size];
        input(stu, size);
        printf("average = %f
    ", getAve(stu, size));
        display(stu, size);
    }
  • 相关阅读:
    scrapy 命令行传参 以及发送post请求payload参数
    scrapy框架+selenium的使用
    python 制作GUI页面以及多选框、单选框
    上线操作
    在Linux中使用selenium(环境部署)
    解读Java NIO Buffer
    Maven自定义Archetype
    解决spark streaming集成kafka时只能读topic的其中一个分区数据的问题
    在windows下使用pip安装python包遇到缺失stdint.h文件的错误
    maven-shade-plugin插件未生效原因分析
  • 原文地址:https://www.cnblogs.com/profesor/p/13276721.html
Copyright © 2011-2022 走看看