#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\n", s->name, s->age, s->grade.math); break; case ‘p‘: printf("My name is %s, and I‘m %d. I got %f in Physics\n", s->name, s->age, s->grade.phys); break; case ‘c‘: printf("My name is %s, and I‘m %d. I got %f in Chemistry\n", s->name, s->age, s->grade.chem); break; } } int main( ) { Student s1; input(&s1); print(&s1); return 0; }
原文:https://www.cnblogs.com/profesor/p/13276721.html