码迷,mamicode.com
首页 > 编程语言 > 详细

冒泡排序,swich语句,while循环...基础性的一道综合题初学者可以做一个简单的测试

时间:2015-09-18 18:35:03      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

这道题是没有什么太大的难度,但是是比较基础性的知识点的应用!

对学习OC有一定的帮助.

1. 创建一对文件Student.h   Student.m

2. 在Student.h中,定义一个Student结构体,成员变量包括:姓名、性别、年龄、学号、分数

 3. 声明一个打印Student的函数。参数是结构体指针

4. 声明一个打印数组中所有学生的函数

5. 声明一个实现学生数组排序的函数,按照姓名升序

6. 声明一个实现学生数组排序的函数,按照年龄降序

7. 声明一个实现学生数组排序的函数,按照学号升序

8. 声明一个实现学生数组排序的函数,按照分数降序

9. 声明一个输出学生数组中全部男学生的函数

10. 声明一个输出学生数组中全部女学生的函数 

11、从控制台输入1~6之间的数字,分别调用上述6个函数,使用switch/case实现。

12、如果输入1~6以外的数字,输出“没有对应的数字,请重新输入”

13、使用while循环实现反复输入

14、定义枚举类型表示1~6之间的数字,switch/case使用枚举值。

 

 //main函数部分

#import <Foundation/Foundation.h>

#import "Student.h"//注意头文件

// 声明枚举类型,描述1~6之间的数字

enum FunctionName{

    SortAscendByName = 1,

    SortDescendByAge,

    SortAscendByNumber,

    SortDescendByScore,

    PrintMaleStudent,

    PrintFemaleStudent

};

 

int main(int argc, const char * argv[]) {

    Student stu1 = {"a", ‘m‘, 19, 5, 90};

    Student stu2 = {"c", ‘m‘, 26, 1, 89};

    Student stu3 = {"v", ‘f‘, 20, 3, 92};

    Student stu4 = {"b", ‘m‘, 24, 4, 97};

    Student stu5 = {"x", ‘m‘, 22, 2, 95};

    

    Student stus[5] = {stu1, stu2, stu3, stu4, stu5};

    

    

    while (YES) {

        printf("\n");

        printf("输入0:退出程序\n");//这里输入0退出,输入字符应该也退出.如果非要实现这个功能可以通过case选用除0~6之外数字

        printf("输入1:实现按照姓名升序排列\n");

        printf("输入2:实现按照年龄降序排列\n");

        printf("输入3:实现按照学号升序排列\n");

        printf("输入4:实现按照分数降序排列\n");

        printf("输入5:实现输出所有男生\n");

        printf("输入6:实现输出所有女生\n");

        printf("=========================\n");

        printf("请输入实现功能对应的数字:");

        int functionNum = 0; // 保存输入的数字

        scanf("%d", &functionNum);

        getchar();

        printf("\n");

        if (functionNum <= 0) {

            printf("退出程序");

            break;

        }

        // 根据输入的数字,调用对应的函数

        switch (functionNum) {

            case SortAscendByName: {

                sortAscendByName(stus, 5);

                printAllStudent(stus, 5);

                break;

            }

            case SortDescendByAge: {

                sortDescendByAge(stus, 5);

                printAllStudent(stus, 5);

                break;

            }

            case SortAscendByNumber: {

                

                sortAscendByNumber(stus, 5);

                printAllStudent(stus, 5);

                break;

            }

            case SortDescendByScore: {

                

                sortDescendByScore(stus, 5);

                printAllStudent(stus, 5);

                break;

            }

            case PrintMaleStudent: {

                

                printMaleStudent(stus, 5);

                break;

            }

            case PrintFemaleStudent: {

                

                printFemaleStudent(stus, 5);

                break;

            }

            default: {

                printf("没有对应的函数,请重新输入!\n");

                break;

            }

        }

    }

    

    return 0;

}

 //声明.h文件部分

// 声明学生结构体

struct student{

    char names[20];

    char sex;

    int age;

    int number;

    float score;

};

typedef struct student Student;

 

// 输出结构体的所有信息。参数:结构体指针

void printStudent(Student * s);

 

// 输出结构体数组中所有元素的信息

void printAllStudent(Student * stus, int count);

 

// 按照姓名升序排列

void sortAscendByName(Student * stus, int count);

 

// 按照年龄降序排列

void sortDescendByAge(Student * stus, int count);

 

// 按照学号升序排列

void sortAscendByNumber(Student * stus, int count);

 

// 按照分数降序排列

void sortDescendByScore(Student * stus, int count);

 

// 输出全部男生

void printMaleStudent(Student * stus, int count);

//定义.m部分

// 输出结构体的所有信息。参数:结构体指针

void printStudent(Student * s){

    printf("%-*s  %c  %d  %d  %.1f\n", 10, s->names, s->sex, s->age, s->number, s->score);

}

 

// 输出结构体数组中所有元素的信息

void printAllStudent(Student * stus, int count){

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

        printStudent(stus+i);

    }

}

 

// 按照姓名升序排列

void sortAscendByName(Student * stus, int count){

    for (int i = 0; i < count-1; i++) {

        for (int j = 0; j < count-1-i; j++) {

            if (strcmp(stus[j].names, stus[j+1].names) > 0) {

                Student temp = stus[j];

                stus[j] = stus[j+1];

                stus[j+1] = temp;

            }

        }

    }

}

 

// 按照年龄降序排列

void sortDescendByAge(Student * stus, int count){

    for (int i = 0; i < count-1; i++) {

        for (int j = 0; j < count-1-i; j++) {

            if (stus[j].age < stus[j+1].age) {

                Student temp = stus[j];

                stus[j] = stus[j+1];

                stus[j+1] = temp;

            }

        }

    }

}

 

// 按照学号升序排列

void sortAscendByNumber(Student * stus, int count){

    for (int i = 0; i < count-1; i++) {

        for (int j = 0; j < count-1-i; j++) {

            if (stus[j].number > stus[j+1].number) {

                Student temp = stus[j];

                stus[j] = stus[j+1];

                stus[j+1] = temp;

            }

        }

    }

}

 

// 按照分数降序排列

void sortDescendByScore(Student * stus, int count){

    for (int i = 0; i < count-1; i++) {

        for (int j = 0; j < count-1-i; j++) {

            if (stus[j].score < stus[j+1].score) {

                Student temp = stus[j];

                stus[j] = stus[j+1];

                stus[j+1] = temp;

            }

        }

    }

}

 

// 输出全部男生

void printMaleStudent(Student * stus, int count){

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

        if (stus[i].sex == ‘m‘) {

            printStudent(stus+i);

        }

    }

}

 

// 输出全部女生

void printFemaleStudent(Student * stus, int count){

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

        if (stus[i].sex == ‘f‘) {

            printStudent(stus+i);

        }

    }

}

 

 

// 输出全部女生

void printFemaleStudent(Student * stus, int count);

 

冒泡排序,swich语句,while循环...基础性的一道综合题初学者可以做一个简单的测试

标签:

原文地址:http://www.cnblogs.com/lyh1993/p/4819894.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!