1、有若干个学校人员的信息,包括学生和教师。其中学生的数据包括:姓名、性别、职业s/S、分数。教师的数据包括:姓名、性别、职业t/T、职务。要求用同一个表格来处理以上数据。
1,定义函数在堆区申请空间n
struct B *p= (struct B * )malloc(sizeof(struct B)* n );
2,定义函数实现录入学校人员信息
在输入分数或者职务是,需要判断职业。
3,定义函数输出学校人员信息
4,定义函数计算学生平均成绩
5,定义函数计算老师的个数
6,释放存储空间
//main.c
#include "fun3.h"
int main(int argc, const char *argv[])
{
int n=2;
P *p=creat(n);
datain(p,n);
printf("-------------------\n");
dataout(p,n);
printf("-------------------\n");
ave(p,n);
printf("-------------------\n");
lsgs(p,n);
printf("-------------------\n");
p=myfree(p);
return 0;
}
fun.c
#include "fun3.h"
P *creat(int n)
{
P *p=(P *)malloc(sizeof(P)*n);
if(p==NULL)
{
printf("---------\n");
return NULL;
}
return p;
}
void datain(P *p,int n)
{
for(int i=0;i<n;i++)
{
printf("输入姓名:");
scanf("%s",(p+i)->name);
printf("输入性别:");
scanf(" %c",&((p+i)->sex));
printf("输入职业:");
scanf(" %c",&((p+i)->zy));
if((p+i)->zy=='S')
{
printf("输入分数:");
scanf("%d",&((p+i)->score));
}
else
{
printf("输入职务:");
scanf("%s",(p+i)->zw);
}
putchar(10);
}
}
void ave(P *p,int n)
{
float sum=0,t=0;
for(int i=0;i<n;i++)
{
if((p+i)->zy=='S')
{
sum+=(p+i)->score;
t+=1;
}
}
if(t==0)
{
printf("平均值:%d.00\n",0);
}
else
{
printf("平均值:%f\n",sum/t);
}
}
void lsgs(P *p,int n)
{
int t=0;
for(int i=0;i<n;i++)
{
if((p+i)->zy!='S')
{
t+=1;
}
}
printf("老师个数:%d\n",t);
}
void dataout(P *p,int n)
{
for(int i=0;i<n;i++)
{
printf("姓名:%s\t\t",(p+i)->name);
printf("性别:%c\t\t",(p+i)->sex);
printf("职业:%c\t\t",(p+i)->zy);
if((p+i)->zy=='S')
{
printf("分数:%d\n",(p+i)->score);
}
else
{
printf("职务:%s\n",(p+i)->zw);
}
}
}
P *myfree(P *p)
{
if(p==NULL) return NULL;
free(p);
p=NULL;
return p;
}
fun.h
#ifndef __FUN3_H__
#define __FUN3_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct
{
char name[10];
char sex;
char zy;
union
{
int score;
char zw[10];
};
}P;
P *creat(int n);
void datain(P *p,int n);
void dataout(P *p,int n);
void ave(P *p,int n);
void lsgs(P *p,int n);
P *myfree(P *p);
#endif
结果展示
linux@linux:~/Desktop/demo2/work1$ gcc main3.c fun3.c
linux@linux:~/Desktop/demo2/work1$ ./a.out
输入姓名:qq
输入性别:w
输入职业:S
输入分数:456
输入姓名:aa
输入性别:m
输入职业:T
输入职务:chinese
-------------------
姓名:qq 性别:w 职业:S 分数:456
姓名:aa 性别:m 职业:T 职务:chinese
-------------------
平均值:456.000000
-------------------
老师个数:1
-------------------
2、定义商品结构体:名称,单价,个数
1,定义函数在堆区申请空间
2,定义函数实现输入
3,计算商品总价格
4,计算最贵的商品信息
5,输入一个商品名称,查找单价信息
6,实现商品按单价排序
7,释放空间
main.c
#include "fun.h"
int main(int argc, const char *argv[])
{
int n=3;
S *p=creat(n);
printf("--------------------------------------------\n");
input(p,n);
printf("--------------------------------------------\n");
allpr(p,n);
printf("--------------------------------------------\n");
most(p,n);
printf("--------------------------------------------\n");
look(p,n);
printf("--------------------------------------------\n");
px(p,n);
output(p,n);
printf("--------------------------------------------\n");
p=myfree(p);
return 0;
}
fun.c
#include "fun.h"
S *creat(int n)
{
S *p=(S *)malloc(sizeof(S)*n);
if(p==NULL) return NULL;
return p;
}
//---------------------
void input(S *p,int n)
{
for(int i=0;i<n;i++)
{
printf("输入名称:");
scanf("%s",(p+i)->name);
printf("输入价格:");
scanf("%d",&(p+i)->price);
printf("输入个数:");
scanf("%d",&(p+i)->num);
putchar(10);
}
}
//---------------------
void allpr(S *p,int n)
{
for(int i=0;i<n;i++)
{
printf("商品%s的总价为:%d\n",(p+i)->name,((p+i)->price)*((p+i)->num));
}
}
//--------------------
void most(S *p,int n)
{
int t=p->price;
int i,q;
for(i=0;i<n;i++)
{
if(t<(p+i)->price)
{
t=(p+i)->price;
q=i;
}
}
printf("最贵的商品为%s单价是:%d\n",(p+q)->name,t);
}
//--------------------
void look(S *p,int n)
{
char a[10];
printf("输入要查找的商品名:");
scanf("%s",a);
for(int i=0;i<n;i++)
{
if(strcmp(a,(p+i)->name)==0)
{
printf("商品%s的单价为:%d\n",(p+i)->name,(p+i)->price);
}
}
}
//--------------------
void px(S *p,int n)
{
S t;
int count=0;
for(int i=1;i<n;i++)
{
for(int j=0;j<n-i;j++)
{
if((p+j)->price>(p+j+1)->price)
{
t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
count+=1;
}
}
if(count!=0) break;
}
}
//-------------------
void output(S *p,int n)
{
printf("排序后的商品如下:\n");
printf("名称\t\t单价\t\t个数\n");
for(int i=0;i<n;i++)
{
printf("%s\t\t%d\t\t%d\n",(p+i)->name,(p+i)->price,(p+i)->num);
}
}
//--------------------
S *myfree(S *p)
{
if(p==NULL) return NULL;
free(p);
p=NULL;
return p;
}
fun.h
#ifndef __FUN_H__
#define __FUN_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct
{
char name[10];
int price;
int num;
}S;
S *creat(int n);
void input(S *p,int n);
void allpr(S *p,int n);
void most(S *p,int n);
void look(S *p,int n);
void px(S *p,int n);
void output(S *p,int n);
S *myfree(S *p);
#endif
linux@l
结果演示
linux@linux:~/Desktop/demo2/work2$ gcc main.c fun.c
linux@linux:~/Desktop/demo2/work2$ ./a.out
--------------------------------------------
输入名称:aa
输入价格:30
输入个数:100
输入名称:ss
输入价格:10
输入个数:200
输入名称:dd
输入价格:60
输入个数:300
--------------------------------------------
商品aa的总价为:3000
商品ss的总价为:2000
商品dd的总价为:18000
--------------------------------------------
最贵的商品为dd单价是:60
--------------------------------------------
输入要查找的商品名:ss
商品ss的单价为:10
--------------------------------------------
排序后的商品如下:
名称 单价 个数
ss 10 200
aa 30 100
dd 60 300
--------------------------------------------
3、请计算字节的个数
typedef struct
{
int a;
short b;
float c;
double d;
int (*p)[3];
};
32个!!!!!