| 
 
| /*一个实例:使用结构体和共同体 设有若干个人员的数据,其中有学生和老师。
 学生的数据包括:姓名,编号,性别,职业,年级。
 老师的数据包括:姓名,编号,性别,职业,职务。
 输入一人员信息并打印。
 */
 
 #include<stdio.h>
 #include"string.h"
 void hz( int i , struct person*pp);
 union qq
 {
 char cla[10];//年级
 char job[10];//职务
 };
 struct person
 {
 char name[10]; //姓名
 int sno;       //编号
 char sex[3];  //性别
 char zy[5];   //职业
 union qq jc ;  //年级或职务
 };
 
 int main()
 {
 int i;
 char zzyy[5]="老师";
 struct person ren;
 for( i=1 ; i<=5 ; i++ )
 {
 if (strcmp(zzyy,ren.zy)==0 && i==5) { i=6; };
 hz(i,&ren);
 }
 printf ("\n姓名:%s \n编号:%d\n性别:%s \n职业:%s\n",ren.name,ren.sno,ren.sex,ren.zy);
 if (strcmp(zzyy,ren.zy)==0) //字符串比较函数strcmp
 {
 printf("职务:%s\n",&ren.jc.job);
 }
 else
 {
 printf("年级:%s\n",&ren.jc.cla);
 }
 return 0;
 };
 
 void hz( int i , struct person*pp)
 {
 
 switch ( i )
 {
 case 1 :  printf("请输入姓名:"); scanf("%s",&pp->name); break;
 case 2 :  printf("请输入编号(请输入整数):"); scanf("%d",&pp->sno);  break;
 case 3 :  printf("请输入性别(男 or 女):"); scanf("%s",&pp->sex); break;
 case 4 :  printf("请输入职业(老师 or 学生):"); scanf("%s",&pp->zy);break;
 case 5 :  printf("请输入年级:"); scanf("%s",&pp->jc.cla); break;
 case 6 :  printf("请输入职务:"); scanf("%s",&pp->jc.job); break;
 };
 
 }
 | 
 |