| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 468 人关注过本帖
标题:运行错误:关于结构体中共用体的一点问题,求指教!
取消只看楼主 加入收藏
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
结帖率:100%
收藏
已结贴  问题点数:40 回复次数:4 
运行错误:关于结构体中共用体的一点问题,求指教!
//引用共用体数据
/*题目:有若干个人员的数据,其中有学生和教师。学生的数据中包括:姓名、号码、
性别、职业、班级。教师的数据包括:姓名、号码、职业、性别、职务。要求
用同一个表格处理。
*/
//为简化程序,现只设两个人,一个教师,一个学生。
/*学生信息-num:101;  name:Li;  sex:f; job:s; class:501;
  教师信息-num:102;  name:He;  sex:m;  job:t;  position:professor;
*/
#include"stdio.h"
struct
{
    int num;                  //编号
    char name[20];            //姓名
    char sex;                 //性别
    char job;                 //职业
    union                     //申明无名共用体类型
    {
        int stu_class;        //班级
        char position[20];    //职务
    }category;                //成员category是共用体变量
}person[2];                   //定义结构体数组,有2个元素
void main()
{
    int i;
    for(i=0;i<2;i++)
    {
        printf("Please input the data of person:\n");
        scanf("%d%s%c%c",&person[i].num,person[i].name,//此处.name为数组名,不必加'&'.
            &person[i].sex,&person[i].job);           //输入前四项
        if(person[i].job=='s')
            scanf("%d",&person[i].category.stu_class);//如是学生,输入班级
        else if(person[i].job=='t')
            scanf("%s",person[i].category.position);  //如是老师,输入职务
        else printf("Data error,input again!");       //如'job'不是's'或't',显示错误
    }
    printf("\n");
    for(i=0;i<2;i++)
    {
        if(person[i].job=='s')     //若是学生,输出
            printf("The student's information:\nnumber:%d\nname:%s\nsex:%c\njob:%c\nclass:%d\n",
            person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.stu_class);
        else if(person[i].job=='t')//若是老师,输出
            printf("The teacher's information:\nnumber:%d\nname:%s\nsex:%c\njob:%c\nposition:%s\n",
            person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position);
    }
}
/*PS:程序编译是没有问题的。
程序运行后,我是这样输入的:101(空格)Li(空格)f(空格)s(空格)501(回车)
结果系统没有让我接着输入下一个数据,而是执行我程序里面的两句话:
Please input the data of person:
Data error,input again!
跳过了第二次输入数据以及后面的输出。
是程序本身有问题,还是我输入有问题?
<此题是谭浩强《C语言程序设计》第四版P321-例9.11>
望大家赐教!
*/


搜索更多相关主题的帖子: 教师 position include 结构体 
2012-12-30 12:20
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:0 
先自己顶下吧。
版面有点大,可能吓着大家了。
2012-12-30 12:42
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:0 
回复 3楼 StarFall
为什么“%d %s %c %c”之间要加空格,可以解释下吗?以前输入几个整数的时候不加没事啊。
2012-12-30 13:02
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:0 
好吧,谢谢。
2012-12-30 15:27
a4811
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:107
注 册:2012-12-20
收藏
得分:0 
回复 7楼 神龙赖了
感谢!
2012-12-30 19:53
快速回复:运行错误:关于结构体中共用体的一点问题,求指教!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036710 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved