我的iOS学习历程 - 第十二天(C语言学习的最后一天,对C语言的知识进行一个整体需求)

一、项目需求:

  1. 创建一对文件Teacher.h Teacher.m1

  2. Teacher.h中,定义一个 Teacher结构体,成员变量包括:姓名、性别、

    年龄、员工编号、评分。2

  3. 声明一个打印Teacher的函数,void printTeacher(Teacher* teacher)1

    分 实现部分 4

  4. 定义一个函数指针类型,typedef BOOL(*CompareFunctionPointer)(Teacher

    teacher1, Teacher teacher2);1

  5. 声明一个实现老师数组排序的函数, void sortTeachers(Teacher

    teacher[ ] ,int count, CompareFunctionPointer cfp);1分 实现部分4

  6. 声明一个打印数组中所有老师的函数,void printTeachers(Teacher * teachers,

    intcount);1分 实现部分4

  7. 分别声明两个比较 Teacher姓名的函数: BOOL

    compareNameByAscending(Teacher teacher1 , Teacher teacher2);(升序方 式 )、BOOL compareNameByDescending(Teacher teacher1, Teacherteacher2);(降序方式)2分 实现部分 8

  8. 分别声明两个比较 Teacher员工编号的函数: BOOLcompareNumberByAscending(Teacher teacher1 , Teacher teacher2);(升序方式)、BOOLcompareNumberByDescending(Teacher teacher1,Teacherteacher2);(降序方式)2分 实现部分8

  9. 分别声明两个比较 Teacher员工评分的函数: BOOLcompareScoreByAscending(Teacher teacher1 , Teacher teacher2);(升序方 式 )、BOOL compareScoreByDescending(Teacher teacher1, Teacherteacher2);(降序方式)2分 实现部分 8

10.声 明 一 个 输 出 教 师 数 组 中 全 部 男 老 师 的 函 数 ,voidprintMaleTeacher(Teacher * teachers, int count);1分实现部分4

11.声 明 一 个 输 出 教 师 数 组 中 全 部 女 老 师 的 函 数 ,voidprintFemaleTeacher(Teacher * teacher, int count);1分实现部分4

12.声明一个枚举FunctionName,其中的每个枚举值于用户从控制台输入的功能数字一一对应。例如:当从控制台输入1 时,此时实现按照姓名进行升序排列。 

3)根据控制台输入的数字,控制输出结果:

1)使用while 循环实现重新输入功能。7

2)使用switch...case 实现:根据控制台输入的 1~8之间的数字,对 Teacher数组进行不同排序并输出结果。case的数值使用 1~8数字对应的枚举值。6

3)输入数字1~6,对Teacher 数组进行排序,使用 sortTeachers函数、比较函数实现排序,排序后使用printTeachers 函数打印输出所有老师信息。4

4)输入数字7~8,根据性别筛选老师,分别使用printMaleTeacher、 




以下为实现:

#import<Foundation/Foundation.h>



//  定义一个Teacher结构体

typedefstruct Teacher {

    char name[50];

    char sex;

    int age;

    int number;

    float score;

} Teacher;


//  声明一个打印Teacher的函数

void printTeacher(Teacher *teacher);


//  定义一个函数指针类型

typedefBOOL (*CompareFunctionPointer)(Teacher teacher1,Teacher teacher2);

//  声明一个实现老师数组排序的函数

void sortTeachers(Teacher teacher[],int count,CompareFunctionPointer cfp);


//  声明一个打印所有老师的函数

void printTeachers(Teacher *teachers,int count);


//  分别声明两个比较Teacher姓名的函数:

BOOL compareNameByAscending(Teacher teacher1,Teacher teacher2);

BOOL compareNameByDescending(Teacher teacher1,Teacher teacher2);


//  分别声明两个比较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);



//  声明一个输出教师数组中全部男老师的函数:

void printMaleTeacher(Teacher *teachers,int count);

//  声明一个输出教师数组中全部女老师的函数:

void printFeMaleTeacher(Teacher *teachers,int count);




enum FunctionName{

    CompareNameByAscending =1,

    CompareNameByDescending,

    CompareNumberByAscending,

    CompareNumberByDescending,

    CompareScoreByAscending,

    CompareScoreByDescending,

    PrintFemaleTeacher,

    PrintMaleTeacher

    

};



#import"Teacher.h"


void printTeacher(Teacher *teacher){

    printf("%s,%c,%d,%d,%.2f\n",teacher->name,teacher->sex,teacher->age,teacher->number,teacher->score);

}



void sortTeachers(Teacher teacher[],int count,CompareFunctionPointer cfp){

    for (int i =0; i < count - 1; i++) {

        for (int j =0; j < count - i - 1; j++) {

            if (cfp(teacher[j],teacher[j +1])) {

                Teacher temp = teacher[j];

                teacher[j] = teacher[j +1];

                teacher[j +1] = temp;

            }

        }

    }

    printTeachers(teacher,5);

}

void printTeachers(Teacher *teachers,int count){

    for (int n =0; n < count; n++) {

        printTeacher(teachers + n);

    }

}

BOOL compareNameByAscending(Teacher teacher1,Teacher teacher2){

    return (strcmp(teacher1.name, teacher2.name) > 0);

}

BOOL compareNameByDescending(Teacher teacher1,Teacher teacher2){

    return (strcmp(teacher1.name, teacher2.name) < 0);

}


BOOL compareNumberByAscending(Teacher teacher1,Teacher teacher2){

    return (teacher1.number > teacher2.number);

}

BOOL compareNumberByDescending(Teacher teacher1,Teacher teacher2){

    return (teacher1.number < teacher2.number);

}

BOOL compareScoreByAscending(Teacher teacher1,Teacher teacher2){

    return (teacher1.score > teacher2.score);

}

BOOL compareScoreByDescending(Teacher teacher1,Teacher teacher2){

    return (teacher1.score < teacher2.score);

}


void printMaleTeacher(Teacher *teachers,int count){

    for (int n =0; n < count; n++) {

        if (teachers[n].sex =='m') {

            printTeacher(teachers + n);

        }

    }

}

void printFeMaleTeacher(Teacher *teachers,int count){

    for (int n =0; n < count; n++) {

        if (teachers[n].sex =='f') {

            printTeacher(teachers + n);

        }

    }

}



#import<Foundation/Foundation.h>

#import"Teacher.h"

int main(int argc,const char * argv[]) {

 

 


    Teacher teacher1 = {"Meiko",'m', 18,2, 88.1};

    Teacher teacher2 = {"Deiko",'f', 18,1, 86.1};

    Teacher teacher3 = {"Peiko",'m', 18,5, 82.1};

    Teacher teacher4 = {"Ceiko",'f', 18,4, 85.1};

    Teacher teacher5 = {"Seiko",'m', 18,3, 98.1};

    Teacher teachers[] = {teacher1, teacher2, teacher3, teacher4, teacher5};

    

    printf("输入1:按照姓名进行升序排列\n输入2:按照姓名进行降序排列\n输入3:按照员工编号进行升序排列\n输入4:按照员工编号进行降序排列\n输入5:按照评分进行升序排列\n输入6:按照评分进行降序排列\n输入7:实现输出所有的女老师\n实现输出所有的男老师\n====================\n");

    while (1) {

        int a =0;

        printf("请输入实现功能相对应的数字:");

        scanf("%d",&a);

        switch (a) {

            case1:

              sortTeachers(teachers, 5,compareNameByAscending);

                break;

            case2:

                sortTeachers(teachers, 5,compareNameByDescending);

                break;

            case3:

                sortTeachers(teachers, 5,compareNumberByAscending);

                break;

            case4:

                sortTeachers(teachers, 5,compareNumberByDescending);

                break;

            case5:

                sortTeachers(teachers, 5,compareScoreByAscending);

                break;

            case6:

                sortTeachers(teachers, 5,compareScoreByDescending);

                break;

            case7:

                printFeMaleTeacher(teachers, 5);

                break;

            case8:

                printMaleTeacher(teachers, 5);

                break;

           default:

                printf("fail\n");

                break;

        }

        

    }



posted on 2015-10-23 14:41  彩虹直至黑白  阅读(125)  评论(0编辑  收藏  举报

导航