函数 指针 结构体的综合应用

来源:互联网 发布:中国经济金融数据库 编辑:程序博客网 时间:2024/05/23 01:41

函数 指针 结构体的综合应用

接下来我将以一道题目来总结我这一个星期学习的内容


题目
题目
题目
题目
题目


刚拿到题目时心里慌兮兮的,这么恐怖….100分钟15题,而且要有6种排序,8个输出
还能不能好好玩耍了. T.T


看过一次题目后 我好像明白点啥了


多看几次题目后,发现其实老师已经把解题思路&命名问题都给解决了(特别是命名问题),只要按着题目上的顺序写,思路就很清晰了


废话不说了:代码献上:

#import <Foundation/Foundation.h>#import "Teacher.h"int main(int argc, const char * argv[]){    Teacher teacher[5] = {        {"aaaaa", 'f', 18, 1, 60.0},        {"bbbb", 'm', 28, 2, 62.0},        {"cssas", 'm', 55, 3, 88.0},        {"z",'f', 24, 4, 45.0},        {"ooooo", 'm', 65, 66, 89.0}    };    enum FunctionName {        CompareNameByAscending = 1,        CompareNameByDescending,        CompareNumberByAscending,        CompareNumberByDescending,        CompareScoreByAscending,        CompareScoreByDescending,        PrintMaleTeacher,        PrintFemaleTeacher,    };    enum FunctionName a0 = 10;    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");    while (a0 > 8 ) {        printf("请输入实现功能对应的数字:");        scanf("%d",&a0);        switch (a0) {            case CompareNameByAscending:                sortTeachers(teacher, 5, compareNameByAscending);                break;            case CompareNameByDescending:                sortTeachers(teacher, 5, compareNameByDescending);                break;            case CompareNumberByAscending:                sortTeachers(teacher, 5, compareNumberByAscending);                break;            case CompareNumberByDescending:                sortTeachers(teacher, 5, compareNumberByDescending);                break;            case CompareScoreByAscending:                sortTeachers(teacher, 5, compareScoreByAscending);                break;            case CompareScoreByDescending:                sortTeachers(teacher, 5, compareScoreByDescending);                break;            case PrintFemaleTeacher:                printFemaleTeacher(teacher, 5);                break;            case PrintMaleTeacher:                printMaleTeacher(teacher, 5);                break;            default:                printf("对不起,您所输入的数字没有对应的函数,请重新输入!!!!\n");                continue;        }    }    return 0;}
#import <Foundation/Foundation.h>typedef struct teacher {    char name[20];    char gender;    int age;    int num;    float score;}Teacher;typedef BOOL(*CompareFunctionPointer) (Teacher teacher1, Teacher teacher2);void printTeachers(Teacher *teachers,int count);void printTeacher(Teacher* teacher);/********************/void sortTeachers(Teacher teachers[], int count, CompareFunctionPointer cfp);//老师排序,,,,,cfp为排序条件void prinitTeachers(Teacher *teachers, int count);//打印数组中所有老师的函数BOOL compareNameByAscending(Teacher teacher1, Teacher teacher2);BOOL compareNameByDescending(Teacher teacher1, Teacher teacher2);//比较姓名的函数BOOL compareNumberByAscending(Teacher teacher1, Teacher teacher2);BOOL compareNumberByDescending(Teacher teacher1, Teacher teacher2);//比较编号BOOL compareScoreByAscending(Teacher teacher1, Teacher teacher2);BOOL compareScoreByDescending(Teacher teacher1, Teacher teacher2);//比较评分void printMaleTeacher(Teacher *teachers, int count);void printFemaleTeacher(Teacher *teachers, int count);
#import "Teacher.h"//比较姓名的函数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 ? YES : NO;}//比较编号BOOL compareNumberByAscending(Teacher teacher1, Teacher teacher2){    return teacher1.num > teacher2.num ? YES: NO;};BOOL compareNumberByDescending(Teacher teacher1, Teacher teacher2){    return teacher1.num < teacher2.num ? YES: NO;};//比较分数BOOL compareScoreByAscending(Teacher teacher1, Teacher teacher2){    return teacher1.score > teacher2.score ? YES: NO;};BOOL compareScoreByDescending(Teacher teacher1, Teacher teacher2){    return teacher1.score < teacher2.score ? YES: NO;};//打印教师void printTeacher(Teacher* teacher){    printf("%-10s",teacher->name);    printf("%-10c",teacher->gender);    printf("%-10d",teacher->age);    printf("%-10d",teacher->num);    printf("%-10.2f\n",teacher->score);}void printTeachers(Teacher *teachers,int count){    printf("name----gender------age------num--------score\n");    for (int i = 0; i < count; i++) {        printTeacher((teachers + i));    }}//排序教师void sortTeachers(Teacher teachers[], int count, CompareFunctionPointer cfp){    for (int i = 0; i < count - 1 ; i++) {        for (int j = 0; j < count - 1 - i; j++) {            if (cfp(teachers[j],teachers[j + 1])) {                Teacher temp = teachers[j];                teachers[j] = teachers[j + 1];                teachers[j + 1] = temp;            }        }    }    printTeachers(teachers, count);}void printMaleTeacher(Teacher *teachers, int count){    for (int i = 0; i < count ; i++) {        if ((teachers + i)->gender == 'm') {            printTeacher(teachers + i);        }    }}void printFemaleTeacher(Teacher *teachers, int count){    for (int i = 0; i < count ; i++) {        if ((teachers + i)->gender == 'f') {            printTeacher(teachers + i);        }    }}

运行结果
运行结果


这次注释比较少,不过结构设定的比较简单,大家可以先看看

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩体温35.2度怎么办 孩子睡觉出冷汗怎么办 小孩感冒发烧咳嗽怎么办 小孩咳嗽出汗多怎么办 小孩手脚出汗多怎么办 小孩感冒出虚汗怎么办 宝宝感冒出冷汗怎么办 宝宝感冒睡觉出汗怎么办 宝宝感冒冒冷汗怎么办 宝宝感冒爱出汗怎么办 宝宝感冒老出汗怎么办 两只小鸡打架怎么办 老年人老是换保姆怎么办 孩子9不吃饭怎么办 两岁半宝宝不爱喝水怎么办 宝宝老是不吃饭怎么办 宝宝不爱吃饭喝水怎么办 小宝宝突然不爱吃饭怎么办 一岁多小宝宝不爱吃饭怎么办 宝宝肚子发撑怎么办 小宝宝咳嗽有痰怎么办 一岁小宝宝咳嗽怎么办 oppo连wifi超时怎么办 小孩不会写3怎么办 秘密花园黑色底怎么办 孩子说话不利索怎么办? 两岁半宝宝x腿怎么办 孩子低烧不退怎么办 小班迷眼了怎么办教案 玩呗麻将群老封怎么办 游戏玩不厉害怎么办 厕所太小洗衣机怎么办 洗衣机进水太小怎么办 油性笔干了怎么办 水笔写不出来怎么办 手机图案密码打不开怎么办 图案锁住了打不开怎么办 手机绘制图案打不开怎么办 小孩吃了润滑油怎么办 宝宝吃了润滑油怎么办 透明胶带撕不起怎么办