嵌入式工程师之数据结构day2

        今天对数据结构有了更深入的了解,通过typedef如结构体进行联系,来减少我们的代码量,结构体不只能够存储基本类型,还能够存储结构体与共用体,这就涉及到结构体之间的嵌套了,要注意的是结构体嵌套之后的调用形式,特别是嵌套的结构体中有数组和指针的时候。共用体需要注意的是空间的大小是最大子项的空间,它的子项公用一个空间来进行存储。结构体的空间要遵循很多原则,并不是它有多少有效空间就分配给它多少空间。下面是今天的脑图:

 今日作业:

 main函数:

#include "head.h"

int main(int argc, const char *argv[])
{
	int n;
	printf("请输入有多少个学生:\n");
	scanf("%d",&n);
	getchar();
	students *p = spaceStruct2(n);
	StudentMessage(p,n);
	StudentOutput(p,n);
	StudentSearch(p,n);
	free(p);
	p = NULL;
	return 0;
}

头文件:

#ifndef __HEAD_H__
#define __HEAD_H__

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

typedef struct{
	char name[10];
	int age;
	float grade;
}students;

students *spaceStruct2(int n);
void StudentMessage(students *p,int n);
void StudentOutput(students *p,int n);
void StudentSearch(students *p,int n);
#endif

函数文件:

#include "head.h"

students *spaceStruct2(int n){
	students *p = (students *)malloc(sizeof(students)*n);
	if(p == NULL){
		return NULL;
	}
	return p;
}



void StudentMessage(students *p,int n){
	for(int i = 0; i < n; i ++){
		printf("请输入第%d组数据\n",i+1);
		printf("请输入名字:");
		scanf("%s",(p+i)->name);
		printf("请输入年龄:");
		scanf("%d",&(p+i)->age);
		printf("请输入该学生成绩:");
		scanf("%f",&(p+i)->grade);
	}
}

void StudentOutput(students *p,int n){
	for(int i = 0; i < n; i ++){
		printf("姓名:%s 年龄;%d 成绩%.2f\n",(p+i)->name,(p+i)->age,(p+i)->grade);
	}
}

void StudentSearch(students *p,int n){
	printf("请输入你要查找人的姓名:\n");
	char search[10] = "\0";
	scanf("%s",search);
	for(int i = 0; i < n; i ++){
		if(!strcmp((p+i)->name,search)){
			printf("查找成功!该学生的信息如下:\n");
			printf("姓名:%s 年龄;%d 成绩%.2f\n",(p+i)->name,(p+i)->age,(p+i)->grade);
			return;
		}
	}
	printf("查找失败!是否继续查找?y/n");
	char a;
	scanf(" %c",&a);
	if(a == 'y'){
		StudentSearch(p,n);
	}
}

结果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值