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;
}