day2作业

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值