投入就放过 发表于 2022-3-12 11:27:55

c 语言结构体

#include <stdio.h>

struct Student
{
        int ID;
        int sex;
        char QQ;
        char email;
};

void getInput(struct Student student);
void printStudent(struct Student student);

void getInput(struct Student student)
{
        printf("请输入学生的姓名:");
        scanf("%d", &student.ID);
        printf("请输入学生的性别:");
        scanf("%d", &student.sex);
        printf("请输入学生的QQ号:");
        scanf("%s", student.QQ);
        printf("请输入学生的Email:");
        scanf("%s", student.email);
}

void printStudent(struct Student student)
{
        printf("ID:%d\n", student.ID);
        printf("QQ:%s\n", student.QQ);
        printf("Email:%s\n", student.email);
}

int main(void)
{
        int n, i;

        printf("请输入需要录入的数据数量:");
        scanf("%d", &n);

        struct Student student;

        for (i = 0; i < n; i++)
        {
                printf("请输入第%d个学生的数据...\n", i + 1);
                getInput(student);
        }

        printf("\n=====数据录入完毕=====\n");
        printf("以下是录入的所有的男生的数据:\n");
        for (i = 0; i < n; i++)
        {
                if (student.sex == 1)
                {
                        printStudent(student);                                       //这个程序编译通过了,但是在这里用printStudent的时候打印结果是乱的,这是为什么呢?
                }
        }
        printf("以下是录入的所有女生的数据:\n");
        for (i = 0; i < n; i++)
        {
                if (student.sex == 0)
                {
                        printStudent(student);
                }
        }

        return 0;
}

ba21 发表于 2022-3-13 00:14:41

#include <stdio.h>

struct Student
{
      int ID;
      int sex;
      char QQ;
      char email;
};


void getInput(struct Student *student)
{
      printf("请输入学生的姓名:");
      scanf("%d", &student->ID);
      printf("请输入学生的性别:");
      scanf("%d", &student->sex);
      printf("请输入学生的QQ号:");
      scanf("%s", student->QQ);
      printf("请输入学生的Email:");
      scanf("%s", student->email);
}

void printStudent(struct Student student)
{
      printf("ID:%d\n", student.ID);
      printf("QQ:%s\n", student.QQ);
      printf("Email:%s\n", student.email);
}

int main(void)
{
      int n, i;

      printf("请输入需要录入的数据数量:");
      scanf("%d", &n);

      struct Student student;

      for (i = 0; i < n; i++)
      {
                printf("请输入第%d个学生的数据...\n", i + 1);
                getInput(&student);
      }

      printf("\n=====数据录入完毕=====\n");
      printf("以下是录入的所有的男生的数据:\n");
      for (i = 0; i < n; i++)
      {
                if (student.sex == 1)
                {
                        printStudent(student); // 这个程序编译通过了,但是在这里用printStudent的时候打印结果是乱的,这是为什么呢?
                }
      }
      printf("以下是录入的所有女生的数据:\n");
      for (i = 0; i < n; i++)
      {
                if (student.sex == 0)
                {
                        printStudent(student);
                }
      }

      return 0;
}
页: [1]
查看完整版本: c 语言结构体