小黄练编程 发表于 2021-12-25 23:38:19

如何使这代码能顺利完成输入各信息和输出各信息

#include<stdio.h>
main()
{
        int i,j;
        structdate
        {
        int   year;
        int   month;
        int   day;
        };
        struct stu
        {
        char        name;
        int   age;
        int   number;
        struct datebirthdayDate;
        struct stu*next;
        }x,*p;
        p=&x;
        x.next=&x;
        x.next=&x;
        x.next=NULL;
        printf("要插入几位学生");
        scanf("%d",&j);
        for(i=0;i<=j;i++)
        {
                printf("请输入学生姓名");
                scanf("%s",x.name);
                printf("请输入学生年龄");
                scanf("%d",x.age);
                printf("请输入学生学号");
                scanf("%d",x.number);
                        printf("请输入学生生日");
                scanf("%d-%d-%d",x.birthdayDate.year,x.birthdayDate.month,x.birthdayDate.day);
                printf("\n\n");
        }
        for(i=0;i<3;i++)
        {
                printf("%s,%d,%d,%d",p->name,p->age,p->number,p->birthdayDate);
                p=p->next;
        }
}

wananzuiqingfen 发表于 2021-12-26 10:04:02

本帖最后由 wananzuiqingfen 于 2021-12-26 10:09 编辑

#include <stdio.h>
#include <stdlib.h>

#define NAME_LEN 25   // 名字字符串长度

int main(void)
{
    int i, j;
    structdate {
      int   year;
      int   month;
      int   day;
    };
    struct stu {
      char    name;
      int   age;
      int   number;
      struct datebirthdayDate;
      struct stu*next;
    };

    struct stu *first = NULL;    // 链表首结点

    printf("要插入几位学生: ");
    scanf("%d", &j);
    printf("\n");

    for(i = 0; i < j; i++)
    {   
      struct stu *new_node;       // 新结点

      new_node = malloc(sizeof(struct stu));      // 分配内存
      if (new_node == NULL) {
            printf("内存分配失败");
            exit(EXIT_FAILURE);
      }

      printf("请输入学生姓名: ");
      scanf("%s", &new_node->name);
      printf("请输入学生年龄: ");
      scanf("%d", &new_node->age);
      printf("请输入学生学号: ");
      scanf("%d", &new_node->number);
      printf("请输入学生生日: ");
      scanf("%4d-%2d-%2d", &new_node->birthdayDate.year,
            &new_node->birthdayDate.month, &new_node->birthdayDate.day);
      printf("\n\n");

      new_node->next = first;
      first = new_node;
    }

    for (; first != NULL; first = first->next) {
      printf("学生姓名: %s\n学生年龄: %d\n学生学号: %d\n学生生日: %d-%d-%d\n",
                first->name, first->age, first->number,
                first->birthdayDate.year, first->birthdayDate.month, first->birthdayDate.day);
      printf("\n");
    }
}


输出:
要插入几位学生: 3

请输入学生姓名: pig
请输入学生年龄: 18
请输入学生学号: 1
请输入学生生日: 2021-12-26


请输入学生姓名: dog
请输入学生年龄: 19
请输入学生学号: 2
请输入学生生日: 2021-12-27


请输入学生姓名: Jeck
请输入学生年龄: 20
请输入学生学号: 3
请输入学生生日: 2021-12-28


学生姓名: Jeck
学生年龄: 20
学生学号: 3
学生生日: 2021-12-28

学生姓名: dog
学生年龄: 19
学生学号: 2
学生生日: 2021-12-27

学生姓名: pig
学生年龄: 18
学生学号: 1
学生生日: 2021-12-26

小黄练编程 发表于 2021-12-26 16:10:10

wananzuiqingfen 发表于 2021-12-26 10:04
输出:

能否在我代码的基础上改一下,指出那些地方打错了,我好改正,{:10_266:}
页: [1]
查看完整版本: 如何使这代码能顺利完成输入各信息和输出各信息