饭浇盖 发表于 2016-3-19 16:10:02

求助 编译没有错 运行后会退出

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define LEN sizeof(struct SYS)
int n;
union bumen
{
        int banji;
        char zhiwu;
};
struct SYS
{
        int num;
        char name;
        char sex;
        char job;
        union bumen aa;
        struct SYS *next;
};
struct SYS *create()
{
        struct SYS *p1,*p2,*phead;
        p1=p2=(struct SYS*)malloc(LEN);
        printf("请输入序号");
        scanf("%d",&p1->num);
        printf("请输入姓名");
        scanf("%s",&p1->name);
        printf("请输入性别");
        scanf("%s",&p1->sex);
        printf("请输入工作");
        scanf("%s",&p1->job);
        if(p1->job=='s')
        {
                printf("请输入班级");
                scanf("%d",&p1->aa.banji);       
        }
        else
        {
                if(p1->job=='t')
                {
                        printf("请输入职务");
                        scanf("%s",p1->aa.zhiwu);
                }
                else
                {
                        printf("没有内容\n");
                }
        }
        n=0;
        phead=NULL;
        while(p1->num)
        {
               n++;
               if(n==1)
               {
                       phead=p1;
               }
               else
               {
                       p2->next=p1;
               }
               p2=p1;
               p1=(struct SYS*)malloc(LEN);
                        printf("请输入序号");
                        scanf("%d",&p1->num);
                        printf("请输入姓名");
                        scanf("%s",&p1->name);
                        printf("请输入性别");
                        scanf("%s",&p1->sex);
                        printf("请输入工作");
                        scanf("%s",&p1->job);
                        if(p1->job=='s')
                        {
                                printf("请输入班级");
                                scanf("%d",&p1->aa.banji);       
                        }
                        else
                        {
                                if(p1->job=='t')
                                {
                                        printf("请输入职务");
                                        scanf("%s",p1->aa.zhiwu);
                                }
//                                else
//                                {
//                                        printf("没有内容\n");
//                                }
                        }
       }
       
        p2->next=NULL;
        return phead;
}

void print(struct SYS *p)
{
        do
        {
                if(p->job=='s')
                {
                        printf("    序号    姓名    性别    工作    部门");
                        printf("%-6d%-6s%-6s%-6s%d",p->num,p->name,p->sex,p->job,p->aa.banji);
               }
                else
                {
                        printf("    序号    姓名    性别    工作    部门");
                        printf("%-6d%-6s%-6s%-6s%-6s",p->num,p->name,p->sex,p->job,p->aa.zhiwu);
                       
                }
                p=p->next;
               
       }while(p);
}


void main()
{
        struct SYS *str;
        str=create();
        print(str);
       
       
}

饭浇盖 发表于 2016-3-20 10:32:40

我知道了Job的类型是c

饭浇盖 发表于 2016-3-20 12:39:30

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define LEN sizeof(struct SYS)
int n;
union bumen
{
        int banji;
        char zhiwu;
};
struct SYS
{
        int num;
        char name;
        char sex;
        char job;
        union bumen aa;
        struct SYS *next;
};
struct SYS *create()
{
        struct SYS *p1,*p2,*phead;
        p1=p2=(struct SYS*)malloc(LEN);
        printf("请输入序号");
        scanf("%d",&p1->num);
        printf("请输入姓名");
        scanf("%s",&p1->name);
        printf("请输入性别");
        scanf("%s",&p1->sex);
        printf("请输入工作");
        scanf("%c",&p1->job);请问这为什么用c不行,要用s
        if(p1->job=='s')
        {
                printf("请输入班级");
                scanf("%d",&p1->aa.banji);       
        }
        else
        {
                if(p1->job=='t')
                {
                        printf("请输入职务");
                        scanf("%s",p1->aa.zhiwu);
                }
                else
                {
                        printf("没有内容\n");
                }
        }
        n=0;
        phead=NULL;
        while(p1->num)
        {
               n++;
               if(n==1)
               {
                       phead=p1;
               }
               else
               {
                       p2->next=p1;
               }
               p2=p1;
               p1=(struct SYS*)malloc(LEN);
                        printf("请输入序号");
                        scanf("%d",&p1->num);
                        printf("请输入姓名");
                        scanf("%s",&p1->name);
                        printf("请输入性别");
                        scanf("%s",&p1->sex);
                        printf("请输入工作");
                        scanf("%c",&p1->job);
                        if(p1->job=='s')
                        {
                                printf("请输入班级");
                                scanf("%d",&p1->aa.banji);       
                        }
                        else
                        {
                                if(p1->job=='t')
                                {
                                        printf("请输入职务");
                                        scanf("%s",p1->aa.zhiwu);
                                }
//                                else
//                                {
//                                        printf("没有内容\n");
//                                }
                        }
       }
        free(p1);
        p2->next=NULL;
        return phead;
}

void print(struct SYS *p)
{
        do
        {
                if(p->job=='s')
                {
                        printf("    序号    姓名    性别    工作    部门\n");
                        printf("   %-6d%-6s    %-6s    %-6c %-6d\n",p->num,p->name,p->sex,p->job,p->aa.banji);
               }
                else
                {
                        printf("   %-6d%-6s    %-6s    %-6c %-6s\n",p->num,p->name,p->sex,p->job,p->aa.zhiwu);
                       
                }
                p=p->next;
               
       }while(p);
}


int main()
{
        struct SYS *str;
        str=create();
        print(str);
       
       
}
页: [1]
查看完整版本: 求助 编译没有错 运行后会退出