8月2日作业

分文件编译--头文件

#ifndef __FUN_H_
#define __FUN_H_
#define MAX 40
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef union{  //定义共用体
	int score;
	char course[20];
}Occ;

typedef struct{  //定义人员结构体
	char name[20];
	char sex[4];
	char occ[20];
	Occ x ;
}Member;

typedef struct{  //班级结构体
	Member arr[MAX];
	int class_num;
}Class;

Member *request(int class_num);                       //申请空间函数
void mem_input(Member *m,int class_num);              //输入信息函数
void display_mem(Member *m,int class_num);            //显示信息函数
void find_mem(Member *m,int class_num,char name[20]); //寻找人员函数
void free_class(Member *m);                           //释放空间函数

#endif

分文件编译--源文件

#include"fun.h"

/***********定义申请内存空间函数*************/
Member *request(int class_num){
	Member *m = (Member*)malloc(sizeof(Member)*class_num);
	if(NULL == m){
		printf("空间申请失败\n");
		return NULL;
	}else{
		printf("空间申请成功\n");
		return m;
	}
}

/***********定义输入成员信息函数*************/
void mem_input(Member *m,int class_num){
	if(NULL == m){
		printf("未能开辟空间\n");
		return;
	}
	for(int i=0;i<class_num;i++){
		printf("请输入第%d位成员的姓名:\n",i+1);
		scanf("%s",(m+i)->name);
		printf("请输入第%d位成员的性别:\n",i+1);
		scanf("%s",(m+i)->sex);
		printf("请输入第%d位成员的职业:\n",i+1);
		scanf("%s",(m+i)->occ);
		if(strcmp((m+i)->occ,"老师")){
			printf("请输入第%d位学生的成绩:\n",i+1);
			scanf("%d",&(m+i)->x.score);
		}else{
			printf("请输入第%d位老师的课程:\n",i+1);
			scanf("%s",(m+i)->x.course);
		}
	}
}

/***********定义展示成员信息函数*************/
void display_mem(Member *m,int class_num){
	printf("姓名\t性别\t职业\t分数\t课程\n");
	for(int i=0;i<class_num;i++){
		if(strcmp((m+i)->occ,"学生") == 0){
			printf("%s\t%s\t%s\t%d\t\n",(m+i)->name,(m+i)->sex,(m+i)->occ,(m+i)->x.score);
		}else{
			printf("%s\t%s\t%s\t\t%s\n",(m+i)->name,(m+i)->sex,(m+i)->occ,(m+i)->x.course);
		}
	}
}

/***********定义查找成员信息函数*************/
void find_mem(Member *m,int class_num,char name[20]){
	int flag=0;
	for(int i=0;i<class_num;i++){
		if(strcmp((m+i)->name,name) == 0){
			flag = 1;
		}
	}
	if(flag == 1){
		printf("有%s这个成员\n",name);
	}else{
		printf("无%s这个成员\n",name);
	}
}

/***********定义释放空间函数*************/
void free_class(Member *m){
	if(NULL != m){
		free(m);
		m = NULL;
		printf("已释放空间\n");
	}
}

分文件编译--测试文件

#include"fun.h"
#define class_num 3

int main(int argc, const char *argv[])
{
	Member *m = request(class_num); //malloc申请
	mem_input(m,class_num);         //输入信息
	display_mem(m,class_num);       //显示信息
	find_mem(m,class_num,"mcsl");   //寻找用户
	free_class(m);                  //释放空间

	return 0;
}

运行结果

思维导图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值