#import <Foundation/Foundation.h>
#import "Teacher.h"
int main(int argc, const char * argv[]) {
Teacher teachers[] = {
{"Kaka", 'm', 23, 999, 7.5},
{"Isco", 'f', 30, 1008, 6.0},
{"Ramos", 'm',20, 1100, 8.0},
{"James", 'f',39, 1009, 4.2},
{"Bale", 'm',10, 997, 9.7}
};
int count = sizeof(teachers) / sizeof(Teacher);
printf("输入1:实现按照姓名进行升序排列\n输入2:实现按照姓名进行降序排列\n输入3:实现按照员工编号进行升序排列\n输入4:实现按照员工编号进行降序排列\n输入5:实现按照评分进行升序排列\n输入6:实现按照评分进行降序排列\n输入7:实现输出所有的女老师\n输入8:实现输出所有的男老师\n============================\n请输入实现功能对应的数字:\n");
while (0 < 1) {
enum FunctionName
{
CompareNameByAscending = 1,
CompareNameByDescending,
CompareNumberByAscending,
CompareNumberByDescending,
CompareScoreByAscending,
CompareScoreByDescending,
PrintMaleTeacher,
PrintFemaleTeacher
};
int zhiling = 0;
scanf("%d",&zhiling);
switch (zhiling) {
case CompareNameByAscending: {
printf("按姓名升序排列后为:\n");
sortTeachers(teachers, count, compareNameByAscending);
printTeachers(teachers, count);
}
break;
case CompareNameByDescending: {
printf("按姓名降序排列后为:\n");
sortTeachers(teachers, count, compareNameByDescending);
printTeachers(teachers, count);
}
break;
case CompareNumberByAscending: {
printf("按员工编号升序排列后为:\n");
sortTeachers(teachers, count, compareNumberByAscending);
printTeachers(teachers, count);
}
break;
case CompareNumberByDescending:{
printf("按员工编号降序排列后为:\n");
sortTeachers(teachers, count, compareNumberByDescending);
printTeachers(teachers, count);
}
break;
case CompareScoreByAscending: {
printf("按照评分升序排列为:\n");
sortTeachers(teachers, count, compareScoreByAscending);
printTeachers(teachers, count);
}
break;
case CompareScoreByDescending: {
printf("按照评分降序排列为:\n");
sortTeachers(teachers, count, compareScoreByDescending);
printTeachers(teachers, count);
}
break;
case PrintMaleTeacher:{printf("所有男教师为:\n");
printMaleTeacher(teachers,count);
}
break;
case PrintFemaleTeacher:{
printf("所有女教师为:\n");
printFemaleTeacher(teachers, count);
}
break;
default: printf("对不起,您输入的数字木有对应的函数,请重新输入!!!\n");break;
}
}
#import <Foundation/Foundation.h>
typedef struct {
char name[30];
char gender;
int age;
int num;
float score;
} Teacher;
// 打印Teacher函数
void printTeacher(Teacher *teacher);
typedef BOOL (*CompareFunctionPointer) (Teacher teacher1, Teacher teacher2);
// 排序函数
void sortTeachers(Teacher teacher[], int count, CompareFunctionPointer cfp);
// 打印所有Teacher的函数
void printTeachers(Teacher *teachers,int count);
// 比较Teacher 姓名
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 *teacher, int count);
#import "Teacher.h"
// 打印Teacher函数
void printTeacher(Teacher *teacher)
{
printf("name = %6s\t gender = %4c\t age = %4d\t num = %4d\t score = %6.2f\t\n-------------------------------------------------------------------\n",teacher->name, teacher->gender,teacher->age, teacher->num, 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;
}
}
}
}
// 打印所有Teacher的函数
void printTeachers(Teacher *teachers,int count)
{
for (int i = 0; i < count; i++) {
printTeacher(teachers + i) ;
}
}
// 比较Teacher 姓名
BOOL compareNameByAscending(Teacher teacher1, Teacher teacher2)
{
return strcmp(teacher1.name, teacher2.name) > 0;
}
BOOL compareNameByDescending(Teacher teacher1, Teacher teacher2)
{
return strcmp(teacher2.name, teacher1.name) >0;
}
// 比较员工编号
BOOL compareNumberByAscending(Teacher teacher1, Teacher teacher2)
{
return teacher1.num > teacher2.num;
}
BOOL compareNumberByDescending(Teacher teacher1,Teacher teacher2)
{
return teacher1.num < teacher2.num;
}
//比较员工评分
BOOL compareScoreByAscending(Teacher teacher1,Teacher teacher2)
{
return teacher1.score > teacher2.score;
}
BOOL compareScoreByDescending(Teacher teacher1,Teacher teacher2)
{
return teacher2.score > teacher1.score;
}
//输出全部男老师
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);
}
}
}