标题:求大神指导哪里错了
只看楼主
刘欣2
Rank: 1
等 级:新手上路
帖 子:32
专家分:6
注 册:2014-5-12
结帖率:72.73%
已结贴  问题点数:5 回复次数:2 
求大神指导哪里错了
#include<stdio.h>
struct
{
    int num;
    char name[10];
    char sex;
    char job;
    union
    {
        int clas;
        char position[10];
    }category;
}person[2];
int main()
{
    int i;
    ;
    for(i = 0;i<2;i++)
    {
        printf("请输入该人是数据:\n");
        scanf("%d%s%c%c",&person[i].num,&person[i].name,&person[i].sex,&person[i].job);
        //printf("%d%s%c%c",person[i].num,person[i].name,person[i].sex,person[i].job) ;
        if(person[i].job=='s')
        {
            scanf("%d",&person[i].category.clas);
        }
        else
        {
            if(person[i].job=='t')
            {
                scanf("%s",&person[i].category.position);
            }
            else
            {
                printf("输入错误");
            }
        }
    }
    printf("\n");
    printf("NO.  name       sex  job clas/position\n");
    for(i = 0;i<2;i++)
    {
        if(person[i].job=='s')
        {
            printf("%-6d%-10s%-4c%-4c%-10d\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.clas);
        }
        else
        {
             if(person[i].job=='t')
             {
                  printf("%-6d%-10s%-4c%-4c%-10s\n",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position);
             }

        }

    }
    return 0;
}




为什么  printf("请输入该人是数据:\n");
        scanf("%d%s%c%c",&person[i].num,&person[i].name,&person[i].sex,&person[i].job);
        //printf("%d%s%c%c",person[i].num,person[i].name,person[i].sex,person[i].job) ;
        if(person[i].job=='s')
   这个job输不进去,求高手解答!   书本上的代码!
搜索更多相关主题的帖子: category position include person 
2014-05-18 22:39
code_farmer
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:29
专家分:117
注 册:2014-4-21
得分:5 
刚随便看了一下,scanf("%s", person[i].name); 这是不用取地址符的,然后你程序的逻辑不对,就是判断是's'还是't'的那段,我改了一下,其实我也随便改了一下,也不够严谨
程序代码:
#include<stdio.h>

struct
{
    int num;
    char name[10];
    char sex;
    char job;
    union
    {
        int  room;
        char position[10];
    }category;
}person[2];


int main()
{
    int i;
   
    for(i = 0; i < 2; i++)
    {
        printf("请按(编号 姓名 性别 工作)顺序输入数据:\n");

        scanf("%d %s %c %c", &person[i].num, person[i].name, &person[i].sex, &person[i].job);

        if(person[i].job == 's')
        {
            printf("请输入老师职位: ");

            scanf("%s", person[i].category.position);
        }
        else if(person[i].job == 't')
        {
            printf("请输入学生教室: ");
        
            scanf("%d", &person[i].category.room);
        }
        else
        {
            printf("输入错误\n");
        }
            
    }

    printf("\n");

    printf("NO.  name       sex  job room/position\n");

    for(i = 0; i < 2; i++)
    {
        if(person[i].job == 's')
        {
            printf("%-6d%-10s%-4c%-4c%-10s\n", person[i].num,person[i].name,person[i].sex,person[i].job, person[i].category.position);
        }
        else if(person[i].job == 't')
        {
                printf("%-6d%-10s%-4c%-4c%-10d\n", person[i].num, person[i].name, person[i].sex, person[i].job, person[i].category.room);    
        }
        else
        {
            printf("工作信息输入有误\n");
        }
        
    }


    return 0;
}
2014-05-18 23:30
刘欣2
Rank: 1
等 级:新手上路
帖 子:32
专家分:6
注 册:2014-5-12
得分:0 
回复 2 楼 code_farmer
非常感谢!  我知道错在哪里了
2014-05-19 10:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-431748-1-1.html




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

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