利用malloc函数为结构体指针开辟动态存储单元,存放输入的学生信息,然后输出

学生数据类型的结构体定义:

typedef struct date
{  int year;
    int month;
    int day;
}DATE;
typedef struct student
{
     int num;
     char name[20];
    char sex;
     DATE birthday;
     float score;
}STUDENT;

测试输入:
10010
Liyi
M
2000 5 23
45
10020
Lier
M
2001 2 3
62.5
10030
Lisan
F
2000 10 14
92.5

预期输出:
学号:10010 姓名:Liyi 性别:M 出生日期:2000-5-23 成绩:45.0
学号:10020 姓名:Lier 性别:M 出生日期:2001-2-3 成绩:62.5
学号:10030 姓名:Lisan 性别:F 出生日期:2000-10-14 成绩:92.5

参考代码:

#include<stdio.h>
#include<stdlib.h>
typedef struct date
{ 
    int year;
    int month;
    int day;
}DATE;
typedef struct student
{
    int num;
    char name[20];
    char sex;
    DATE birthday;//DATE类型的结构体变量
    float score;
}STUDENT;
void input(STUDENT *s);
void output(STUDENT s);
int main()
{
    STUDENT * p1, * p2, * p3;//三个结构体指针
    /**********申请3个学生数据所需内存空间 **********/ 
    
    p1=(STUDENT*)malloc(sizeof(STUDENT));
    p2=(STUDENT*)malloc(sizeof(STUDENT));
    p3=(STUDENT*)malloc(sizeof(STUDENT));
    
    /**********输入输出3个学生数据信息并输出 **********/ 
    
   input(p1);//这里输入传的都是指针
   input(p2);
   input(p3);
   output(*p1);//输出传的是值
   output(*p2);
   output(*p3);
   
    free(p1);        //释放这3个所占堆内存
    free(p2); 
    free(p3);
	return 0;
}
void input(STUDENT *s)
{
   
scanf("%d\n%s\n%c\n%d %d %d\n%f",&(s->num),s->name,&(s->sex),&(s->birthday.year),&(s->birthday.month),&(s->birthday.day),&(s->score));//结构体指针指向结构体变量的属性

    
}
void output(STUDENT s)
{
    
printf("学号:%d\t姓名:%s\t性别:%c\t",s.num,s.name,s.sex);
printf("出生日期:%d-%d-%d\t",s.birthday.year,s.birthday.month,s.birthday.day);
printf("成绩:%.1f\n",s.score);
    
}


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值