我的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;
}
}
创建一对文件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;
}
}
相关文章推荐
- ubuntu下C/C++集成环境 -- codeblocks
- C++设计模式之简单工厂模式
- c++ set
- C++中的函数指针
- 九度王道考研机试真题 2010-2北邮 题目1173:查找.cpp
- c/c++内存管理注意的问题
- [C++] [算法] KMP算法
- C++ 类的静态成员详细讲解
- vs中建立动态链接库的步骤
- C++学习笔记33 转换操作符
- C++ MFC中的CMenu---动态添加菜单/菜单项
- 基于51单片机SJA1000 CAN通讯实现(C语言程序)
- C++多级指针的”解引用“
- 2015年奇虎360服务器开发C++电话面试问题
- Java, C++ 单例模式与静态成员初始化对比
- 求最大公约数 1.0
- C++STL之priority_queue优先队列容器
- C++——将成员函数作为参数
- Leetcode Next Permutation
- c++ de-mangle 反编译器命名工具:c++filt