1.
main.c
#include "head.h"
int main(int argc, const char *argv[])
{
int n;
printf("请输入需要几个人员的信息");
scanf("%d",&n);
person *p=space(n);
input(p, n);
output(p,n);
average(p, n);
sumteacher(p, n);
p=free_(p);
return 0;
}
fun.c
#include "head.h"
person *space(int n)
{
person *p=(person *)malloc(sizeof(person)*n);
if(p==NULL){
return NULL;
}
return p;
}
void input(person *p,int n)
{
for(int i=0;i<n;i++){
printf("请输入%d人员的姓名",i+1);
scanf("%s",(p+i)->name);
printf("请输入%d人员的性别",i+1);
scanf(" %c",&(p+i)->sex);
printf("请输入%d人员的职业",i+1);
scanf(" %c",&(p+i)->profession);
if((p+i)->profession=='s'){
printf("请输入%d人员的成绩",i+1);
scanf("%f",&(p+i)->c.score);
}
else{
printf("请输入%d人员的职务",i+1);
scanf("%s",(p+i)->c.position);
}
}
}
void output(person *p,int n)
{
printf("姓名\t性别\t职业\t职务(成绩)");
for(int i=0;i<n;i++){
if((p+i)->profession=='s')
printf("%s\t %c \t %c \t%.2f",(p+i)->name,(p+i)->sex,(p+i)->profession,(p+i)->c.score);
else{
printf("%s\t %c \t %c \t%s",(p+i)->name,(p+i)->sex,(p+i)->profession,(p+i)->c.position);
}
}
}
void average(person *p,int n)
{
int all=0,count=0;
for(int i=0;i<n;i++){
if((p+i)->profession=='s'){
all+=(p+i)->c.score;
count++;
}
}
printf("学生的平均成绩为%d\n",all/count);
}
void sumteacher(person *p,int n)
{
int sum=0;
for(int i=0;i<n;i++){
if((p+i)->profession=='t'){
sum++;
}
}
printf("老师数量为%d\n",sum);
}
person *free_(person *p)
{
if(p==NULL){
return NULL;
}
free(p);
p=NULL;
return p;
}
head.h
#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <stdlib.h>
typedef union
{
char position[20];
float score;
}choice;
typedef struct
{
char name[20];
char sex;
char profession;
choice c;
}person;
person *space(int n);
void input(person *p,int n);
void output(person *p,int n);
void average(person *p,int n);
void sumteacher(person *p,int n);
person *free_(person *p);
#endif
2、商品名称、单价、数量
main.c
fun.c
#include "head.h"
ware * space(int n)
{
ware *p=(ware *)malloc(sizeof(ware)*n);
if(p==NULL){
return NULL;
}
return p;
}
void input(ware *p ,int n)
{
for(int i=0;i<n;i++){
printf("请输入第%d个商品名称",i+1);
scanf("%s",(p+i)->name);
printf("请输入第%d个商品单价",i+1);
scanf("%d",&(p+i)->price);
printf("请输入第%d个商品的数量",i+1);
scanf("%d",&(p+i)->sum);
}
}
void all(ware *p,int n)
{
int all=0,i=0;
for(i=0;i<n;i++){
all+=(((p+i)->price)*((p+i)->sum));
}
printf("商品总价格为%d\n",all);
}
void max(ware *p,int n)
{
int i=0,max=0;
ware s;
for(i=0;i<n;i++){
if((p+i)->price>max){
max=(p+i)->price;
s=*(p+i);
}
}
printf("%s是最贵的商品,单价是%d\n",s.name,max);
}
void lookup(ware *p,int n)
{
int i=0;
char a[20];
ware s;
printf("请输入想要查找的商品名称");
scanf("%s",a);
for(i=0;i<n;i++){
if(strcmp(a,((p+i)->name))==0);{
s=*(p+i);
}
}
printf("%s\t%d\t%d\n",s.name,s.price,s.sum);
}
void mp(ware *p,int n)
{
ware temp;
int i=0,j=0;
for(i=1;i<n;i++){
for(j=0;j<n-i;j++){
if(((p+j)->price)>((p+j+1)->price)){
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
for(i=0;i<n;i++){
printf("商品名称:%s\t商品价格:%d\t商品数量:%d\n",(p+i)->name,(p+i)->price,(p+i)->sum);
}
}
ware * free_(ware *p)
{
if(p==NULL)
{
return NULL;
}
free(p);
p=NULL;
return p;
}
head.h
#ifndef __HEAD_H__
#define __HEAD_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char name[20];
int price;
int sum;
}ware;
ware * free_(ware *p);
void mp(ware *p,int n);
void lookup(ware *p,int n);
void max(ware *p,int n);
void all(ware *p,int n);
void input(ware *p ,int n);
ware * space(int n);
#endif
3、字节长度(答案:32个字节)