囧Sir 发表于 2016-8-9 13:11:29

【结构体+共用体】真心求教~为什么教师的信息会输不出 ?

struct people
{
        int       no;0
        char name;
        char job;
        union
        {
                intclas;
                char position;
        }pos;
};
int main()
{       
        int i;
        struct people peo;
        struct people *p;
        p = peo ;
       
       
        for( i = 0;i<2 ;)
        {   
                printf("输入第%d个人的信息\n",++i);
                scanf("%d %s %c",&p->no,&p->name,&p->job);
                if(p->job == 'T')
                {
                        scanf("%s",&p->pos.position);
                }
                else
                {
                        scanf("%d",&p->pos.clas);
                }
        }                                                      //输入
        printf("No.\t\tname\t\tjob\t\tclass/position\n");
        for( i = 0 ;i<2 ;i++)
        {   
                if( p->job == 'T')
                {
                        printf("%d\t\t%s\t\t%c\t\t%s\n",p->no ,p->name ,p->job ,p->pos.position);
                }
                else
                {
                        printf("%d\t\t%s\t\t%c\t\t%d\n",p->no ,p->name ,p->job ,p->pos.clas);
                }
        }                     
                                                                   //输出
}

同步人生 发表于 2016-8-9 13:41:30

不懂帮顶。。。

囧Sir 发表于 2016-8-9 14:17:00

{:5_111:}{:5_111:}{:5_111:}召唤啊~~~

centos天 发表于 2016-8-9 15:10:58

{:5_94:}

人造人 发表于 2016-8-9 16:45:24

指针没有加加(++)
为什么要用指针呢?
#include <stdio.h>

struct people
{
        int no;
        char name;
        char job;
       
        union
        {
                intclas;
                char position;
        }pos;
};

#if(0)
int main(void)
{
        int i;
        struct people peo;
        struct people *p;
        p = peo;


        for(i = 0; i < 2;)
        {
                printf("输入第%d个人的信息\n", ++i);
                scanf("%d %s %c", &p->no, &p->name, &p->job);
                if(p->job == 'T')
                {
                        scanf("%s", &p->pos.position);
                }
                else
                {
                        scanf("%d", &p->pos.clas);
                }
                p++;
        }

        p = peo;
        printf("No.\t\tname\t\tjob\t\tclass/position\n");
        for(i = 0; i < 2; i++)
        {
                if(p->job == 'T')
                {
                        printf("%d\t\t%s\t\t%c\t\t%s\n", p->no, p->name, p->job, p->pos.position);
                }
                else
                {
                        printf("%d\t\t%s\t\t%c\t\t%d\n", p->no, p->name, p->job, p->pos.clas);
                }
                p++;
        }
        //输出

        return 0;
}
#endif

int main(void)
{
        int i;
        struct people peo;

        for(i = 0; i < 2; i++)
        {
                printf("输入第%d个人的信息\n", i + 1);
                scanf("%d %s %c", &peo.no, &peo.name, &peo.job);
                if(peo.job == 'T')
                {
                        scanf("%s", &peo.pos.position);
                }
                else
                {
                        scanf("%d", &peo.pos.clas);
                }
        }

        printf("No.\t\tname\t\tjob\t\tclass/position\n");
        for(i = 0; i < 2; i++)
        {
                if(peo.job == 'T')
                {
                        printf("%d\t\t%s\t\t%c\t\t%s\n", peo.no, peo.name, peo.job, peo.pos.position);
                }
                else
                {
                        printf("%d\t\t%s\t\t%c\t\t%d\n", peo.no, peo.name, peo.job, peo.pos.clas);
                }
        }
        //输出

        return 0;
}

囧Sir 发表于 2016-8-9 19:56:43

人造人 发表于 2016-8-9 16:45
指针没有加加(++)
为什么要用指针呢?

是因为书上说指针可以快一点所以我想试试指针可不可以{:5_96:}。还有{:5_106:}成功了,谢谢啊!

人造人 发表于 2016-8-9 20:20:22

囧Sir 发表于 2016-8-9 19:56
是因为书上说指针可以快一点所以我想试试指针可不可以。还有成功了,谢谢啊!

^_^
页: [1]
查看完整版本: 【结构体+共用体】真心求教~为什么教师的信息会输不出 ?