#ifndef __HEADZ1_H__
#define __HEADZ1_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char name[10];
char sex[10];
char occupation;
union
{
char position[20];
float score;
};
}xl;
xl *creat(int n);
void Input(xl *p,int n);
void Output(const xl *p,int n);
float average(xl *p,int n);
int sum(xl *p,int );
xl *myfree(xl *p);
#endif
#include "headz1.h"
int main(int argc, const char *argv[])
{
int n;
printf("请输入学校人数n:\n");
scanf("%d",&n);
getchar();
xl *p=creat(n);
Input(p,n);
Output(p,n);
printf("平均分=%.2f",average(p,n));
printf("老师个数=%d",sum(p,n));
p=myfree(p);
return 0;
}
#include "headz1.h"
//结构体==============================
xl *creat(int n)
{
xl *p=(xl *)malloc(sizeof(xl)*n);
if(p==NULL)
{
return NULL;
}else
{
return p;
}
}
//输入信息===================================
void Input(xl *p,int n)
{
for(int i=0;i<n;i++)
{
printf("请输入第%d个人的姓名:",i+1);
gets((p+i)->name);
printf("请输入第%d个人的性别:",i+1);
gets((p+i)->sex);
printf("请输入第%d个人的职业:",i+1);
gets(&(p+i)->occupation);
if((p+i)->occupation=='s'||(p+i)->occupation=='S')
{
printf("请输入第%d个学生的分数:",i+1);
scanf("%f%*c",&(p+i)->score);
}else
{
printf("请输入第%d个老师的职务:",i+1);
scanf("%s%*c",(p+i)->position);
}
}
}
//输出信息=============================
void Output(const xl *p,int n)
{
puts("姓名\t性别\t职业\t分数/职务\t");
for(int i=0;i<n;i++)
{
if((p+i)->occupation=='s'||(p+i)->occupation=='S')
printf("%s\t %s\t %c\t %.2f\n",(p+i)->name,(p+i)->sex,(p+i)->occupation,(p+i)->score);
else
printf("%s\t %s\t %c\t %s\n",(p+i)->name,(p+i)->sex,(p+i)->occupation,(p+i)->position);
}
}
//求平均分======================
float average(xl *p,int n)
{
int v=0;
int count=0;
for(int i=0;i<n;i++)
{
if((p+i)->occupation=='s'||(p+i)->occupation=='S')
{
v+=(p+i)->score;
count++;
}
}
return v/count;
}
//计算老师个数================
int sum(xl *p,int n)
{
int sum=0;
for(int i=0;i<n;i++)
{
if((p+i)->occupation=='t'||(p+i)->occupation=='T')
sum++;
}
return sum;
}
//释放==============================
xl *myfree(xl *p)
{
if(p)
{
free(p);
p=NULL;
}
return p;
}
第一题
#ifndef __HEADZ2__H_
#define __HEADZ2__H_
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char name[20];
char color[20];
float jiage;
}car;
car *creat(int n);
void Input(car *p,int n);
void PX(car *p,int n);
void Output(car *p,int n);
car *myfree(car *p);
#endif
#include "headz2.h"
int main(int argc, const char *argv[])
{
int n;
printf("请输入n的值");
scanf("%d",&n);
car *p=creat(n);
Input(p,n);
PX(p,n);
Output(p,n);
p=myfree(p);
return 0;
}
#include "headz2.h"
//创建空间==============
car *creat(int n)
{
car *p=(car *)malloc(sizeof(car)*n);
if(p==NULL)
{
return NULL;
}else
{
return p;
}
}
//循环输入========================
void Input(car *p,int n)
{
for(int i=0;i<n;i++)
{
printf("请输入品牌");
scanf("%s%*c",(p+i)->name);
printf("请输入颜色");
scanf("%s%*c",(p+i)->color);
printf("请输入价格");
scanf("%f%*c",&(p+i)->jiage);
}
}
//排序=========================
void PX(car *p,int n)
{
for(int i=0;i<n-1;i++)
{
int count=0;
for(int j=0;j<n-1-i;j++)
{
if((p+j)->jiage < (p+j+1)->jiage )
{
count++;
car temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
if(!count)
break;
}
}
//输出=============================
void Output(car *p,int n)
{
puts("品牌\t颜色\t价格");
for(int i=0;i<n;i++)
{
printf("%s\t%s\t%.2f\n",(p+i)->name,(p+i)->color,(p+i)->jiage);
}
putchar('\n');
}
//释放=====================
car *myfree(car *p)
{
if(p)
{
free(p);
p=NULL;
}
return p;
}
第二题