vIllaInssss 2020-08-17 11:21 采纳率: 75%
浏览 114
已结题

求大神解答(急) 为什么没法正常输出 哪里错了(输入的格式不对吗?)

图片说明

#include<stdio.h> 
#include<stdlib.h>
#include<string.h>
typedef struct _data
{
    char name[30];
    int age;
    char sex;
    char disease[30]; 
    int num;
}Data;
typedef struct _Node
{
    Data user;
    struct _Node*next;
}Node;
Node*create()
{
    Node*head=(Node*)malloc(sizeof(Node));
    if(head==NULL)
    exit (-1);
    head->next=NULL;
    return head;
}
void insert(Node*head,Data per)
{
    Node*cur=(Node*)malloc(sizeof(Node));
    if(cur==NULL) exit(-1);

    head->user.age=per.age;
    head->user.sex=per.sex;
    head->user.num=per.num;
    strcpy(per.name ,head->user.name);
    strcpy(per.disease,head->user.disease);

    cur->next=head->next;
    head->next=cur;
}
int len(Node*head)
{
    int n=0;
    head=head->next;
    while(head)
    {
        n++;
        head=head->next;
    }
    return n;
}
void traverse(Node*head)
{
    head=head->next;
    while(head)
    {
        printf("%s %d %c %s %d\n",head->user.name,head->user.age,head->user.sex,head->user.disease,head->user.num);
        head=head->next;
    }
}
void pop(Node*head)
{
    int l=len(head);
    head=head->next;
    Node*p,*q;
    int m=0;
    for(int i=0;i<l-1;i++)
    {
        p=head;
        q=p->next;
        for(int j=0;j<l-1-i;j++)
        {
            if(p->user.num>q->user.num)
         {
            m=p->user.num;
            p->user.num=q->user.num;
            q->user.num=m;
         }
         p=p->next;
         q=p->next;
        }
    }
}
Node*search(Node*head,int num)
{
    head=head->next;
    while(head)
    {
        if(head->user.num==num)
          break;
        else
        head=head->next;
    }
    return head;
}
int main()
{
    printf("请输入病人信息包括:\n"); 
    printf("姓名  年龄  性别  病名  序号\n");
    Data per;
    Node*head=create();
    while(scanf("%s %d %c %s %d",per.name,&per.age,&per.sex,per.disease,&per.num)!=EOF )

        insert(head,per);

    printf("打印病人人数\n");
    int mun=len(head);

    printf("按房间号排序\n");
    pop(head);
    traverse(head);

    printf("请输入待查找病人序号:\n");
    int n=0;
    scanf("%d",&n); 
    Node*find=search(head, n);
    if(find==NULL)
    printf("未查询到此人");
    else
    printf("查询成功");
    printf("%s %d %c %s %d",find->user.name,&find->user.age,&find->user.sex,![图片说明](https://img-ask.csdn.net/upload/202008/17/1597660259_778652.png)
find->user.disease,&find->user.num) ;   
}
  • 写回答

2条回答 默认 最新

  • 叫我姜同学 2020-08-17 13:34
    关注

    输入数据的时候,scanf里面per.name前面少了 &

    评论

报告相同问题?

悬赏问题

  • ¥20 你对Pyton有信心吗?
  • ¥15 知道这个是什么图吗,想知道制作详细做法,或者模版也行
  • ¥15 CubeMX配置lwip实现TCP数据传输
  • ¥15 关于#51单片机#的问题:不能用中断、定时器之类的辅助实现
  • ¥15 blastfoam初学者尝试跑算例遇到问题
  • ¥25 pyqt6常规布局问题!我刚学 有点难度!
  • ¥20 基于ros2的orbslam3的实时运行
  • ¥100 支付行业技术人员来一个。常年包养
  • ¥15 kotlin multiplaform Compose项目 需要实现一个文件选择器获取手机上的文件
  • ¥15 Python没爬取到数据,求看这个是什么原因