【无标题】

#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;
}

第二题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值