函数 指针 结构体的综合应用
来源:互联网 发布:中国经济金融数据库 编辑:程序博客网 时间: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
- 函数 指针 结构体的综合应用
- 结构体对函数指针的高级封装应用
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析 .
- 结构体变量、结构指针变量、结构数组作为函数的参数应用实例分析
- C语言结构体及typedef关键字定义结构体别名和函数指针的应用
- new delete 以及结构体的综合应用
- 指针数组函数的综合运用
- 指向结构体数组的指针应用
- 结构体指针的应用理解
- 指向结构体的指针数组,应用
- 函数指针,结构体指针
- 结构体指针函数
- 结构体、函数指针
- 结构体中指向函数的指针
- 结构体中指向函数的指针
- ios周刊第五期
- 题目1192:回文字符串
- linux gdb调试非常有用的命令,附加案例
- [数算]研究了一天的《N个球放M个盒子问题》~~~~~~~~~~~~8种情况全部用公式解决
- Codeforces 515C Drazil and Factorial
- 函数 指针 结构体的综合应用
- 《剑指offer》面试题16扩展题
- 欢迎使用CSDN-markdown编辑器
- 黑马程序员--typedef关键字和结构体 枚举类型
- 以DELETE方式发送带请求体的HTTP请求
- 关于generate用法的总结【Verilog】
- iOS—— Architectures架构精简讲解
- NSString、NSMutableString基本用法
- 使用Protostuff序列化及反序列化优化调试