C语言

main

    Teacher teachers[5] = {
        {"yi", 'f', 25, 1, 88},
        {"er", 'm', 26, 2, 68},
        {"san", 'm', 65, 3, 99},
        {"si", 'm', 36, 4, 85},
        {"wu", 'f', 20, 5, 78}
    };
    
    printf("输入1:实现按照姓名进行升序排列\n");
    printf("输入2:实现按照姓名进行降序排雷\n");
    printf("输入3:实现按照员工编号进行升序排列\n");
    printf("输入4:实现按照员工编号惊醒降序排列\n");
    printf("输入5:实现按照评分进行升序排列\n");
    printf("输入6:实现按照评分进行降序排列\n");
    printf("输入7:实现输出所有的女老师\n");
    printf("输入8:实现输出所有的男老师\n");
    printf("==============================\n");
    
    
    //声明一个枚举,每个枚举值与用户输入的功能数字一一对应
    
    enum FunctionName{
        CompareNameByAscending = 1,
        CompareNameByDescending,
        CompareNumberByAscending,
        CompareNumberByDescending,
        CompareScoreByAscending,
        CompareScoreByDescending,
        PrintMaleTeacher,
        PrintFemaleTeacher
    };
    enum FunctionName temp = 0;
    int x = 9;
    while (x != 0) {
        printf("请输入实现功能对应的数字:");
        scanf("%d",&x);
        temp = x;
        if (temp >8) {
            printf("对不起,您所输入的数字没有对应的函数,请重新输入!!\n");
        }
        switch (temp) {
            case CompareNameByAscending:
                sortTeachers(teachers, sizeof(teachers) / sizeof(teachers[0]), compareNameByAscending);
                break;
            case CompareNameByDescending:
                sortTeachers(teachers, sizeof(teachers) / sizeof(teachers[0]), compareNameByDescending);
                break;
            case CompareNumberByAscending:
                sortTeachers(teachers, sizeof(teachers) / sizeof(teachers[0]), compareNumberByAscending);
                
                break;
            case CompareNumberByDescending:
                sortTeachers(teachers, sizeof(teachers) / sizeof(teachers[0]), compareNumberByDescending);
                
                break;
            case CompareScoreByAscending:
                sortTeachers(teachers, sizeof(teachers) / sizeof(teachers[0]), compareScoreByAscending);
                                break;
            case CompareScoreByDescending:
                sortTeachers(teachers, sizeof(teachers) / sizeof(teachers[0]), compareScoreByDescending);
                               break;
            case PrintMaleTeacher:
                printMaleTeacher(teachers, sizeof(teachers) / sizeof(teachers[0]));
                break;
            case PrintFemaleTeacher:
                printFemaleTeacher(teachers, sizeof(teachers) / sizeof(teachers[0]));
                break;
            default:
                break;
        }
    }


.h

//创建一个Teacher 结构体
typedef struct teacher{
    char name[20];//姓名
    char gender;//性别
    int age;//年龄
    int ID;//员工编号
    float score;//评分
}Teacher;

//打印Teacher结构体
void printTeacher(Teacher *teacher);


//重命名函数指针类型
typedef BOOL(*CompareFunctionPointer)(Teacher teacher1, Teacher teacher2 );


//对老师数组进行排序
void sortTeachers(Teacher teacher[], int count, CompareFunctionPointer cfp);


//打印数组中所有老师的信息
void printTeachers(Teacher *teachers, int count);


//两个比较Teacher员工编号的函数
//升序方式
BOOL compareNumberByAscending(Teacher teacher1, Teacher teacher2);

//降序方式
BOOL compareNumberByDescending(Teacher teacher1, Teacher teacher2);


//两个比较Teacher 员工评分的函数
//升序方式
BOOL compareScoreByAscending(Teacher teacher1, Teacher teacher2);

//降序方式
BOOL compareScoreByDescending(Teacher teacher1, Teacher teacher2);


//两个比较Teacher 员工姓名的函数
//升序方式
BOOL compareNameByAscending(Teacher teacher1, Teacher teacher2);

//降序方式
BOOL compareNameByDescending(Teacher teacher1, Teacher teacher2);

//输出教师数组中全部男老师
void printMaleTeacher(Teacher *teachers, int count);


//输出教师数组中全部女老师
void printFemaleTeacher(Teacher *teachers, int count);


.m

//两个比较Teacher员工编号的函数
//升序方式
BOOL compareNumberByAscending(Teacher teacher1, Teacher teacher2){
    return teacher1.ID > teacher2.ID ? YES : NO;
}

//降序方式
BOOL compareNumberByDescending(Teacher teacher1, Teacher teacher2){
    return teacher1.ID < teacher2.ID ? YES : NO;
}



//两个比较Teacher 员工姓名的函数
//升序方式
BOOL compareNameByAscending(Teacher teacher1, Teacher teacher2){
    return strcmp(teacher1.name, teacher2.name) > 0 ? YES : NO;
}

//降序方式
BOOL compareNameByDescending(Teacher teacher1, Teacher teacher2){
        return strcmp(teacher1.name, teacher2.name) > 0 ? NO : YES;
}

//两个比较Teacher 员工评分的函数
//升序方式
BOOL compareScoreByAscending(Teacher teacher1, Teacher teacher2){
    return teacher1.score > teacher2.score ? YES : NO;
}

//降序方式
BOOL compareScoreByDescending(Teacher teacher1, Teacher teacher2){
    return teacher1.score > teacher2.score ? NO : YES;
}

//输出教师数组中全部男老师
void printMaleTeacher(Teacher *teachers, int count){
    for (int i = 0; i < count; i++) {
        if ((teachers + i)->gender == 'm') {
            printf("姓名:%s 性别:%c 年龄:%d 员工编号:%d 评分:%.2f\n", (teachers + i)->name, (teachers + i)->gender, (teachers + i)->age, (teachers + i)->ID, (teachers + i)->score);
    }
 }
}



//输出教师数组中全部女老师
void printFemaleTeacher(Teacher *teachers, int count){
    for (int i = 0; i < count; i++) {
        if ((teachers + i)->gender == 'f') {
         printf("姓名:%s 性别:%c 年龄:%d 员工编号:%d 评分:%.2f\n", (teachers + i)->name, (teachers + i)->gender, (teachers + i)->age, (teachers + i)->ID, (teachers + i)->score);
        }
    }
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值