2023/1/31 结构体练习

2023/1/31 结构体练习

作业: 定义学生结构体属性:姓名,年龄,分数,输入姓名key 查找key是否出现,存在则输出所有信息,否则提示查找失败

要求:使用typedef
1,定义函数连续在堆区申请空间
2,定义函数循环输入
3,定义函数实现输出
3,定义函数实现查找
4,释放空间

head.h

/*
作业: 定义学生结构体属性:姓名,年龄,分数,输入姓名key 查找key是否出现,存在则输出所有信息,否则提示查找失败
要求:使用typedef
	1,定义函数连续在堆区申请空间
	2,定义函数循环输入
	3,定义函数实现输出
	3,定义函数实现查找
	4,释放空间
*/
#ifndef __HEAD_H__
#define __HEAD_H__

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

typedef struct 
{
	char name[20];
	int age;
	float score;
}Stu,*Pointer;

Pointer Space(int n);

void Input(Pointer p,int n);

void Output(Pointer p,int n);

void Select(Pointer p,char *q,int n);

int MyStrcmp(char *p,char *q);

#endif

test.c

#include "head.h"

Pointer Space(int n)
{
	Pointer p=(Pointer)malloc(sizeof(Pointer)*n);
	if(NULL==p)
	{
		return NULL;
	}
	return p;
}

void Input(Pointer p,int n)
{
	int i;
	for(i=0;i<n;i++)
	{
		printf("输入姓名:");
		scanf("%s",(p+i)->name);
		printf("输入年龄:");
		scanf("%d",&(p+i)->age);
		printf("输入分数:");
		scanf("%f",&(p+i)->score);
	}
}

void Output(Pointer p,int n)
{
	int i;
	for(i=0;i<n;i++)
	{
		printf("姓名:%s 年龄:%d 分数:%.2f\n",(p+i)->name,(p+i)->age,(p+i)->score);
	}
}

void Select(Pointer p,char *q,int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        if(MyStrcmp((p+i)->name,q)==0)
        {
            printf("查找成功!\n");
            Output(p,n);
            return;
        }
    }
    printf("查找失败!\n");
}


int MyStrcmp(char *p,char *q)
{
	while(*p==*q)
	{
		if(*p=='\0'||*q=='\0')
		{
			break;
		}else{
			p++;
			q++;
		}
	}
	return *p-*q;
}

main.c

#include "head.h"

int main(int argc, const char *argv[])
{
	int n;
	char key[20];
	printf("输入学生人数:");
	scanf("%d",&n);
	printf("输入姓名key:");
	scanf("%s",key);
	
	Pointer p=Space(n);

	Input(p,n);

	Select(p,key,n);

	free(p);
	p=NULL;

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值