李我远点
2017-02-22 14:56
采纳率: 71.4%
浏览 896
已采纳

共用体类型的数据特点, 这段代码哪儿有问题,为什么输出的结果不对???

#include
#include
#include
#include

struct
{
int num;
char name[20];
char sex;
char job;
union
{
int clas;
char position[20];
}category;
}per[2];

void main()
{
for(int i = 0;i < 2;i++)
{
scanf("%d %s %c %c",&per[i].num,per[i].name,&per[i].sex,&per[i].job);
if(per[i].job == 's')
{
scanf("%d",&per[i].category.clas);
}
else if(per[i].job == 't')
{
scanf("%s",per[i].category.position);
}

    else printf("ERROR");
}

for(int i = 0;i< 2;i++)
{
    if(per[i].job == 's')
    {
        printf("%d  %s  %c  %c  %d",per[i].num,per[i].name,per[i].sex,per[i].job,per[i].category.clas);
    }

    else 
    {
        printf("%d  %s  %c  %c  %s",per[i].num,per[i].name,per[i].sex,per[i].job,per[i].category.position);
    }
}





system("pause");

}

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • threenewbee 2017-02-22 15:07
    已采纳

    调试下,目测是你输入的格式和你的scanf不匹配

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 小灸舞 2017-02-23 02:55

    看了下你的代码,不知道楼主是不是觉得第2次输入到union中的数据会覆盖第一次的,重新描述下你的问题。
    你的输入和输出结果是什么,你期望的结果又是什么。
    图片说明

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题