1zuoye.c
#include "head.h"
/*
* function: 在堆区申请空间
* @param [ in]
* @param [out]
* @return 成功返回地址,失败返回null
*/
per *create(int n)
{
per *p=(per *)malloc(sizeof(per)*n);
if(p==NULL)
return NULL;
return p;
}
/*
* function: 输入人员信息
* @param [ in] 指针
* @param [out]
* @return 无返回值
*/
void input(per *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)->job);
if((p+i)->job=='s'||(p+i)->job=='S')
{
printf("请输入分数:");
scanf("%f",&(p+i)->score);
}
else
{
printf("请输入职务:");
scanf("%s",(p+i)->position);
}
}
}
/*
* function: 输出人员信息
* @param [ in] 指针
* @param [out]
* @return
*/
void output(per *p,int n)
{
printf("姓名\t性别\t职业\t成绩/职位\n");
for(int i=0;i<n;i++)
{
printf("%s\t",(p+i)->name);
printf("%c\t",(p+i)->sex);
printf("%c\t",(p+i)->job);
if((p+i)->job=='s'||(p+i)->job=='S')
{
printf("%.2f\n",(p+i)->score);
}else
{
printf("%s\n",(p+i)->position);
}
}
}
/*
* function: 计算学生平均成绩
* @param [ in] 指针
* @param [out]
* @return 返回学生成绩平均值
*/
float ave(per *p,int n)
{
float sum=0;
int g=0;
for(int i=0;i<n;i++)
{
if((p+i)->job=='s'||(p+i)->job=='S')
{
sum+=(p+i)->score;
g++;
}
}
return sum/g;
}
/*
* function: 计算老师个数
* @param [ in] 指针
* @param [out]
* @return 返回gs
*/
int jsgs(per *p,int n)
{
int gs=0;
for(int i=0;i<n;i++)
{
if((p+i)->job=='t'||(p+i)->job=='T')
{
gs++;
}
}
return gs;
}
/*
* function: 释放空间
* @param [ in] 指针
* @param [out]
* @return NULL
*/
void fr(per *p)
{
free(p);
p=NULL;
}
#include "head.h"
int main(int argc, const char *argv[])
{
int n;
printf("需要输入的人员数:");
scanf("%d",&n);
per *p=create(n);
input(p,n);
output(p,n);
printf("学生平均成绩:%.2f\n",ave(p,n));
printf("教师个数:%d\n",jsgs(p,n));
fr(p);
return 0;
}
#ifndef N
#define N
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct person
{
char name[20];
char sex;
char job;
union
{
float score;
char position[20];
};
}per;
per *create(int n);
void input(per *p,int n);
void output(per *p,int n);
int jsgs(per *p,int n);
void fr(per *p);
float ave(per *p,int n);
#endif
作业2
2zuoye.c
#include "head.h"
/*
* function: 在堆区申请空间
* @param [ in]
* @param [out]
* @return 成功返回地址,失败返回null
*/
car *create(int n)
{
car *p=(car *)malloc(sizeof(car)*5);
if(p==NULL)
return NULL;
return p;
}
void input (car *p,int n)
{
for(int i=0;i<n;i++)
{
printf("请输入品牌:");
scanf("%s",(p+i)->name);
printf("请输入颜色:");
scanf(" %s",(p+i)->color);
printf("请输入价格:");
scanf(" %d",&(p+i)->price);
}
}
void comper(car *p,int n)
{
for(int i=1;i<n;i++)
{
for(int j=0;j<n-i;j++)
{
if((p+j)->price > (p+j+1)->price)
{
car temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
}
}
}
void output(car *p,int n)
{
printf("品牌\t价格\t颜色\n");
for(int i=0;i<n;i++)
{
printf("%s\t",p[i].name);
printf("%d\t",p[i].price);
printf("%s\n",p[i].color);
}
}
void fr(car *p)
{
free(p);
p=NULL;
}
#include "head.h"
int main(int argc, const char *argv[])
{
car *p=create(5);
input (p,5);
comper(p,5);
output(p,5);
fr(p);
return 0;
}
#ifndef N
#define N
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct CAR
{
char name[20];
int price;
char color[20];
}car;
car *create(int n);
void input(car *p,int n);
void comper(car *p,int n);
void output(car *p,int n);
void fr(car *p);
#endif