您的位置:首页 > 编程语言 > C语言/C++

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

2015-10-23 14:41 399 查看
一、项目需求:

创建一对文件Teacher.h Teacher.m。1分

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

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

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

分 实现部分 4分

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

teacher1, Teacher teacher2);1分

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

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


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

intcount);1分 实现部分4分

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

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

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

分别声明两个比较 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
.sex =='m') {

printTeacher(teachers + n);

}

}

}

void printFeMaleTeacher(Teacher *teachers,int count){

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

if (teachers
.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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: