1、定义1,定义函数在堆区申请空间n
struct B *p=(struct B )malloc(sizeof(struct B)*n )
2,定义函数实现录入学校人员信息
在输入分数或者职务是,需要判断职业。
3,定义函数输出学校人员信息
4,定义函数计算学生平均成绩
5,定义函数计算老师的个数
6,释放存储空间结构体
//函数
#include"17.h"
arr *create(int n)
{
arr *p=(arr *)malloc(sizeof(arr)*n);
if(p==NULL)
return NULL;
return p;
}
void input(arr *p,int n)
{
for(int i=0;i<n;i++)
{
printf("输入姓名\n");
scanf("%s",(p+i)->name);
printf("输入性别\n");
scanf(" %c",&(p+i)->sex);
printf("输入职位\n");
scanf(" %c",&(p+i)->job);
if((p+i)->job=='s')
{
printf("输入成绩\n");
scanf("%d",&(p+i)->score);
}
else
{
printf("输入所交科目\n");
scanf("%s",(p+i)->position);
}
}
}
void output(arr *p ,int n)
{
for(int i=0;i<n;i++)
{
printf("姓名:%s\n",(p+i)->name);
printf("性别 :%c\n ",(p+i)->sex);
printf("职业:%c\n",(p+i)->position);
if((p+i)->job=='s')
printf("成绩:%d\n",(p+i)->score);
else
printf("科目:%s\n",(p+i)->position);
}
}
void average(arr *p,int n)
{
int st=0,te=0,total=0;
for(int i=0;i<n;i++)
{
if((p+i)->job=='t')
{
st++;
total+=(p+i)->score;
}
else
te++;
}
int av=total/st;
printf("学生人数=%d\n",st);
printf("老师人数=%d\n",te);
printf("平均成绩=%d\n",av);
}
int * free_space(arr *p)
{
if(p=NULL)
{
return NULL;
}
free(p);
p=NULL;
}
//主函数
#include"17.h"
int main()
{
int n=2;
arr *kull=creat(n);
input(kull,n);
output(kull ,n);
average(kull, n);
free_space(kull);
return 0;
}
//头文件
#ifndef __17_H__
#define __17_H__
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
char name[10];
char sex;
char job;
union
{
int score;
char position[10];
};
}arr;
arr * create(int n);
void input(arr *p,int n);
void output(arr *p ,int n);
void average(arr *p,int n);
int * free_space(arr *p);
#endif
2、:名称,单价,个数
1,定义函数在堆区申请空间
2,定义函数实现输入
3,计算商品总价格
4,计算最贵的商品信息
5,输入一个商品名称,查找单价信息
6,实现商品按单价排序
7,释放空间
//函数文件
#include"18.h"
arr *create(int n)
{
arr *p=(arr *)malloc(sizeof(arr)*n);
if(p==NULL)
p=NULL;
return p;
}
void input(arr *p,int n)
{
for(int i=0;i<n;i++)
{
printf("商品名称\n");
scanf("%s",(p+i)->name);
printf("商品单价\n");
scanf("%d",&(p+i)->price);
printf("商品个数\n");
scanf("%d",&(p+i)->number);
}
}
void count(arr *p,int n)
{
int allprice=0,allnumber=0;
int total=0;
for(int i=0;i<n;i++)
{
allprice=(p+i)->price;
allnumber=(p+i)->number;
total+=allprice*allnumber;
}
printf("总价%d\n",total);
}
void best(arr *p,int n)
{
int max=0;
int a;
arr best;
for(int i=0;i<n;i++)
{
if((p+i)->price>max)
{
max=(p+i)->price;
best = *(p+i);
}
}
printf("best name %s best price %d best numder %d\n",best.name, best.price,best.number);
}
void look(arr *p,int n)
{
printf("输入一个商品\n");
char good[10];
scanf("%s",good);
for(int i=0;i<n;i++)
{
int b=strcmp(good,(p+i)->name);
if(b==0)
{
printf(" name %s price %d numder %d\n",(p+i)->name,(p+i)->price,(p+i)->number);
}
}
}
void change(arr *p,int n)
{
int tmp=0;
for(int i=0;i<n-1;i++)
{
int count =0;
for(int j=0;j<n-i+1;j++)
{
if((p+j)->price>p->price)
{
tmp=(p+i)->price;
(p+i)->price=p->price;
p->price=tmp;
count++;
}
}
if(count==0)
break;
}
for(int i=0;i<n;i++)
{
printf("排序%s\t",(p+i)->name);
}
}
int *free_space(arr*p)
{
if(p=NULL)
{
return NULL;
}
free(p);
p=NULL;
}
//头文件
#ifndef __18_H__
#define __18_H__
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
char name[10];
int price;
int number;
}arr;
arr *create(int n);
void input(arr *p,int n);
void count(arr *p,int n);
void best(arr *p,int n);
void look(arr *p,int n);
void change(arr *p,int n);
int *free_space(arr*p);
#endif
//主函数
#include"18.h"
int main()
{
int n=2;
arr *goods =create(n);
input(goods,n);
count(goods, n);
best(goods, n);
look(goods, n);
change(goods, n);
free_space(goods);
}
3、
32