作业:
定义学生结构体属性:姓名,年龄,分数,输入姓名key查找key是否出现,存在则输出所有信息,否则提示查找失败要求:使用typedef
1,定义函数连续在堆区申请空间2,定义函数循环输入
3,定义函数实现输出
3,定义函数实现查找
4,释放空间
main.c
#include "head.h"
int main(int argc, const char *argv[])
{
int n=0;
printf("请输入申请的空间");
scanf("%d",&n);
point p=SPACE(n);
Input(p,n);
Output(p,n);
SEARCH(p,n);
free(p);
p=NULL;
if(NULL==p)
{
printf("释放成功");
}
else
printf("未成功");
return 0;
}
head.h
#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include<stdlib.h>
typedef struct
{
char name[10];
int age;
int score;
}JIE,*point;
point SPACE(int n);
void Input(point p,int n);
void SEARCH(point p,int n);
void Output(point p,int n);
#endif
test.c
#include "head.h"
point SPACE(int n)
{
point p=(point)malloc(sizeof(JIE)*n);
if(p==NULL)
{
return NULL;
}
else
return p;
}
void Input(point p,int n)
{
int i=0;
for(i=0;i<n;i++)
{
printf("输入姓名\n");
scanf("%s",(p+i)->name);
printf("输入年龄\n");
scanf("%d",&(p+i)->age);
printf("输入分数\n");
scanf("%d",&(p+i)->score);
}
}
void Output(point p,int n)
{
int i=0;
for(i=0;i<n;i++)
{
printf("%s %d %d\n",(p+i)->name,(p+i)->age,(p+i)->score);
}
}
void SEARCH(point p,int n)
{
int i=0;
char *q[1];
scanf("%s",q[0]);
int count=0;
for(i=0;i<n;i++)
{
if(strcmp(q[0],(p+i)->name)==0)
{
count++;
printf("姓名:%s 年龄:%d 分数:%d\n",(p+i)->name,(p+i)->age,(p+i)->score);
}
}
if(count)
{
printf("查找完成,有%d个信息\n",count);
}
else
printf("查无此人");
}
有若干个学校人员的信息,包括学生和教师。其中 学生的数据包括:姓名、性别、职业s/S、分数。 教师的数据包
括:姓名、性别、职业t/T、职务。 要求用同一个表格来处理以上数据。
1,定义函数在堆区申请空间n
struct B *p= (struct B * )malloc(sizeof(struct B)* n );
2,定义函数实现录入学校人员信息
3,定义函数输出学校人员信息
4,定义函数计算学生平均成绩
5,定义函数计算老师的个数
main.c
#include "head.h"
int main(int argc, const char *argv[])
{
int n=2 ;
struct B *p=SPACE(n);
Input(p,n);
Output(p,n);
int sum=avege(p,n);
printf("学生分数平均值为%d",sum);
GESHU(p,n);
return 0;
}
head.h
#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <stdlib.h>
struct B
{
char name[10];
char sex;
char occu;
union
{
int score;
char duty[10];
};
};
struct B *SPACE(int n);
void Input(struct B *p,int n);
void Output(struct B *p,int n);
int avege(struct B *p,int n);
void GESHU(struct B *p,int n);
#endif
test.c
#include "head.h"
#include <stdlib.h>
struct B*SPACE(int n)
{
struct B *p=(struct B *)malloc(sizeof(struct B)*n);
if(p==NULL)
return NULL;
else
return p;
}
void Input(struct B *p,int n)
{
int i=0;
for(i=0;i<n;i++)
{
printf("输入名字\n");
scanf("%s",(p+i)->name);
getchar();
printf("输入性别\n");
scanf("%c",&(p+i)->sex);
getchar();
printf("输入职业\n");
scanf("%c",&(p+i)->occu);
//getchar();
if(((p+i)->occu)=='s')
{
printf("输入学生分数\n");
scanf("%d",&(p+i)->score);
}
else
{
printf("输入老师职务\n");
scanf("%s",(p+i)->duty);
}
}
}
void Output(struct B *p,int n)
{
int i=0;
for(i=0;i<n;i++)
{
printf("姓名%s ",(p+i)->name);
printf("性别%c\t",(p+i)->sex);
printf("职业%c\t",(p+i)->occu);
if((p+i)->occu=='s')
{
printf("分数%d\n",(p+i)->score);
}
if((p+i)->occu=='t')
{
printf("职务%s\n",(p+i)->duty);
}
}
}
int avege(struct B *p,int n)
{
int i=0;int sum=0;
int count=0;
for(i=0;i<n;i++)
{
if((p+i)->occu=='s')
{
sum+=((p+i)->score);
count++;
}
}
return sum/count;
}
void GESHU(struct B *p,int n)
{
int i=0;int sum=0;
int count=0;
for(i=0;i<n;i++)
{
if((p+i)->occu=='t')
{
count++;
}
}
printf("有%d位老师\n",count);
}