C语言基础_Teacher

1) .h中代码

#import <Foundation/Foundation.h>

typedef struct teacher{
    char name[20];
    char gender;
    int age;
    int number;
    float score;
}Teacher;

void printTeacher(Teacher *teacher);

typedef BOOL(*CompareFunctionPointer)(Teacher teacher1,Teacher teacher2);

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

void printTeachers(Teacher *teacher,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 *teacher,int count);

enum FunctionName{
    CompareNameByAscending = 1,
    CompareNameByDescending,
    CompareNumberByAscending,
    CompareNumberByDescending,
    CompareScoreByAscending,
    CompareScoreByDescending,
    PrintFemaleTeacher,
    PrintMaleTeacher,
};

2).m中代码

#import "Teacher.h"

void printTeacher(Teacher *teacher)
{
        printf("%s %c %d %d %.2f\n",teacher->name,teacher->gender,teacher->age,teacher->number,teacher->score);
}

typedef BOOL(*CompareFunctionPointer)(Teacher teacher1,Teacher teacher2);

void sortTeachers(Teacher teacher[],int count,CompareFunctionPointer cfp)
{
    for (int i = 0; i < count - 1; i++) {
        for (int j = 0; j < count - 1 -i; 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 *teacher,int count)
{
    for (int i = 0; i < count; i++) {
        printf("%s %c %d %d %.2f\n",teacher[i].name,teacher[i].gender,teacher[i].age,teacher[i].number,teacher[i].score);
    }
}

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 i = 0; i < count; i++) {
        if (teachers[i].gender == ‘f‘){
            printTeacher(&teachers[i]);
        }
     }
}

void printFemaleTeacher(Teacher *teacher,int count)
{
    for (int i = 0; i < count; i++) {
        if (teacher[i].gender == ‘m‘) {
            printTeacher(&teacher[i]);
        }
    }
}

3).main中的代码

#import <Foundation/Foundation.h>
#import "Teacher.h"
int main(int argc, const char * argv[]) {

     Teacher teacher[5] = {{"abc",‘m‘,28,2012,90},
                           {"def",‘f‘,35,2013,80},
                           {"hji",‘m‘,25,2014,78},
                           {"asd",‘m‘,31,2010,88},
                           {"xyz",‘f‘,28,2015,90}};

    while (true) {

        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");
        printf("请输入实现功能对应的数字:\n");

        int a;
        scanf("%d",&a);
        switch (a) {
            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:
            {
                printMaleTeacher(teacher,5);
            }
                break;
            case PrintMaleTeacher:
            {
                printFemaleTeacher(teacher,5);
            }
                break;
            default:
            {
                printf("对不起,你所输入的数字没有对应的函数,请重新输入\n");
            }
                break;
        }
    }

    return 0;
}
时间: 2024-10-12 12:45:06

C语言基础_Teacher的相关文章

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第1/5套:SQL语言之基础入门及环境准备.主要学习Oracle数据库SQL语言基础介绍.PL/SQL语言介绍.数据库SQL对象与数据类型介绍.SQL语言实战环境准备等. Oracle SQL语言之基础及环境准备,课程内容详细如下: Oracle数据库SQL语言基础介绍Oracle数据

Swift语言指南(一)--语言基础之常量和变量

Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swift 提供了 C 与 Objective-C 中的所有基础类型,包括表示整数的 Int,表示浮点数的 Double 与 Float,表示布尔值的 Bool,以及表示纯文本数据的 String. Swift 还为两个基本集合类型 Array 与 Dictionary 提供了强大的支持,详情可参考 (集合类型)Collection Types. 与 C 语言类

02 java语言基础

常量:字面值常量(字符串,字符,整数,小数,布尔,null),自定义常量,''这个不是字符常量,""这个是字符串常量 进制: 02.01_Java语言基础(常量的概述和使用)(掌握) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常量 用双引号括起来的内容 整数常量 所有整数 小数常量 所有小数 字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号 布尔常量 较为特

嵌入式 Linux C语言——C语言基础

嵌入式 Linux C语言--C语言基础 一.数据类型 1.基本数据类型 数据类型是创建变量的模型.变量名是连续存储空间的别名,程序中使用变量命名存储空间,通过变量可以使用存储空间.变量所占的内存大小取决于创建变量的数据类型. 2.有符号和无符号 有符号数中数据类型的最高位用于标识数据的符号,最高位为1表示为负数,最高位为0表示为正数. 计算机中有符号数通常使用补码表示,正数的补码为正数本身,负数的补码为负数的绝对值的各位取反后加1. 计算机中无符号数通常使用原码表示,无符号数默认为正数,没有符

C#语言基础

第一部分 了解C# C#是微软公司在2000年7月发布的一种全新且简单.安全.面向对象的程序设计语言,是专门为.NET的应用而开发的.体现了当今最新的程序设计技术的功能和精华..NET框架为C#提供了一个强大的.易用的.逻辑结构一致的设计环境.其特点: 语言简洁 保留了C++的强大功能: 快速应用开发功能: 语言的的自由性: 强大的Web服务器控件: 支持跨平台: 与XML相融合: 第二部分 C#语言基础: 一.C#项目的组成结构: 1.项目后缀 .config——配置文件(存放配置参数文件)

OC语言基础知识

OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类. 术语:OO面向对象.OOP面向对象编程 二.类 (一)关于类 类的设计只关注三个东西:类名.属性和方法 注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识.在对方法进行类的

【quick-cocos2d-x】Lua 语言基础

版权声明:本文为博主原创文章,转载请注明出处. 使用quick-x开发游戏有两年时间了,quick-x是cocos2d-Lua的一个豪华升级版的框架,使用Lua编程.相比于C++,lua的开发确实快速便捷了许多,下文只是lua这门语言的一个基础知识点,没有涵盖整个Lua的内容,但是作为对lua入门的初步了解还是可以的,由于内容精简了不少,所以语言上可能会有点跳跃,但是问题不大. 要了解一门语言,首先要了解的是语言的标识符.保留字.常量和变量,命名规范和注释以及数据类型等.然后是运算符.控制流语句

C# 语言基础(简单的输出 输入语句 和 加法运算符)

int a, b; Console.Title = "C# 语言基础-第一堂课";// 标题 Console.BackgroundColor = ConsoleColor.DarkRed;//设置控制台的背景颜色 Console.WriteLine("幼儿园大班第一节课"); Console.WriteLine("请输入a的值,按回车");//输出语句,自动换行 Console.Write("a="); //输出语句,自动不换

R语言基础

##数据获取 x1=round(runif(100,min=80,max=100)) x2=round(rnorm(100,mean=80, sd=7)) x3=round(rnorm(100,mean=80,sd=18)) x3[which(x3>100)]=100 num=seq(2005138101,length=100) x=data.frame(num,x1,x2,x3) write.table(x, "grade.txt") ##数据分析 y=read.table(&