- 定义学生结构体属性:姓名,年龄,分数,输入姓名key查找key是否出现,存在则输出所有信息,否则提示查找失败要求:使用typedef
1,定义函数连续在堆区申请空间
2,定义函数循环输入
3,定义函数实现输出
3,定义函数实现查找
4,释放空间
- main.c
#include "head.h"
int main(int argc, const char *argv[])
{
int n;
printf("输入学生人数\n");
scanf("%d",&n);
//调用空间
ppp p=shenqing(n);
//输入信息
shuru(p,n);
//输出信息
shuchu(p,n);
printf("输入查找学生姓名\n");
qqq q=(qqq)malloc(sizeof(qqq1));
scanf("%s",(q)->name2);
//查找相同学生
chazhao(p,q,n);
//释放空间
free(p);
free(q);
p=NULL ;
if(p==NULL)
{
printf("释放成功\n");
}
else
{
printf("空间未成功释放\n");
}
return 0;
}
- test.c
#include "head.h"
ppp shenqing(int n)
{
ppp p=(ppp)malloc(sizeof(sss)*n);
if(p==NULL)
{
printf("空间申请失败\n");
return NULL;
}
printf("空间申请成功\n");
return p;
}
void shuru(ppp p,int n)
{
for(int i=0;i<n;i++)
{
printf("输入学生姓名\n");
scanf("%s",(p+i)->name);
printf("输入学生年龄\n");
scanf("%d",&(p+i)->sex);
printf("输入学生的分数\n");
scanf("%f",&(p+i)->score);
}
}
void shuchu(ppp p,int n)
{
for(int i=0;i<n;i++)
{
printf("学生姓名:%s\t年龄:%d\t成绩:%2.f\n",(p+i)->name,(p+i)->sex,(p+i)->score);
}
}
void chazhao(ppp p,qqq q,int n)
{
for(int i=0;i<n;i++)
{
printf("%s\n",q->name2);
printf("%s\n",(p)->name);
int c;
c=strcmp(q->name2,(p+i)->name);
if(c==0)
{
printf("姓名:%s\t年龄:%d\t成绩:%2.f\n",(p+i)->name,(p+i)->sex,(p+i)->score);
return;
}
}
printf("学生不存在\n");
}
- head.h
#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Student
{
char name[100];
int sex;
float score;
}*ppp,sss;
typedef struct name1
{
char name2[100];
int tex;
float cxx;
}*qqq,qqq1;
ppp shenqing(int n);
void shuru(ppp p,int n);
void shuchu(ppp p,int n);
void chazhao(ppp p,qqq q,int n);
#endif
- 有若干个学校人员的信息,包括学生和教师。其中学生的数据包括:姓名、性别、职业s/S、分数。教师的数据包
括:姓名、性别、职业t/T、职务。要求用同一个表格来处理以上数据。
1,定义函数在堆区申请空间n
structB*p=(structB*)malloc(sizeof(structB)*n);
2,定义函数实现录入学校人员信息
3,定义函数输出学校人员信息
4,定义函数计算学生平均成绩
5,定义函数计算老师的个数
- main.c
#include "head.h"
int main(int argc, const char *argv[])
{
//分配空间
int n;
printf("输入录入信息人数\n");
scanf("%d",&n);
struct news *p=shuru(n);
//录入信息
luru(p,n);
//输出信息
shuchu(p,n);
//计算学生的平均成绩
printf("平均成绩%2.f\n",chengji(p,n));
//计算老师的平均工资
printf("平均工资%2.f\n",gongzi(p,n));
//释放空间
free(p);
p=NULL;
return 0;
}
- test.c
#include "head.h"
//分配空间
struct news *shuru(int n)
{
struct news *p=(struct news *)malloc(sizeof(struct news)*n);
if(p==NULL)
{
return NULL;
}
return p;
}
//录入信息
void luru(struct news *p,int n)
{
int i=0;
for(i=0;i<n;i++)
{
printf("输入姓名\n");
scanf("%s",(p+i)->name);
printf("输入性别 男为1 女为2 \n");
scanf(" %d",&(p+i)->sex);
printf("学生输入s 老师输入t\n");
getchar();
scanf("%c",&(p+i)->job);
if((p+i)->job=='s')
{
printf("输入学生成绩\n");
scanf("%f",&(p+i)->a);
}
if((p+i)->job=='t')
{
printf("输入老师工资\n");
scanf("%f",&(p+i)->b);
}
}
}
//输出信息
void shuchu(struct news *p,int n)
{
int i=0;
for(i=0;i<n;i++)
{
printf("姓名:%s\t",(p+i)->name);
printf("性别:%d\t",(p+i)->sex);
printf("职位:%c\t",(p+i)->job);
if((p+i)->job=='s')
{
printf("成绩:%2.f\n",(p+i)->a);
}
else
printf("工资:%2.f\n",(p+i)->b);
}
}
//计算学生的平均成绩
float chengji(struct news *p,int n)
{
int i=0;float sum=0;int j=0;
for(i=0;i<n;i++)
{
if((p+i)->job=='s')
{
sum+=(p+i)->a;
j++;
}
}
return sum/j;
}
//计算老师的平均工资
float gongzi(struct news *p,int n)
{
int i=0;float sum=0;int j=0;
for(i=0;i<n;i++)
{
if((p+i)->job=='t')
{
sum+=(p+i)->a;
j++;
}
}
return sum/j;
}
3.head.h
#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <stdlib.h>
struct news
{
char name[100];
int sex;
char job;
union
{
float a;
float b;
};
};
struct news *shuru(int n);
void luru(struct news *p,int n);
void shuchu(struct news *p,int n);
float chengji(struct news *p,int n);
float gongzi(struct news *p,int n);
#endif