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

对学习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);

转载于:https://www.cnblogs.com/lyh1993/p/4819894.html

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

  1. 阿里巴巴笔试的一道综合题

    题目描述: 当你在浏览器输入一个网址,比如http://www.taobao.com,按回车之后发生了什么?请从技术的角度描述,如浏览器.网络(UDP,TCP,HTTP等),以及服务器等各种参数与对象 ...

  2. Python极简入门:数据类型、条件语句、循环语句、异常处理

    一.变量.运算符与数据类型 1. 注释 在 Python 中,# 表示注释,作用于整行. ''' ''' 或者 """ """ 表示区间注释 ...

  3. java for 循环中if判断只进入第一个_「每天三分钟跟我学Java」之条件语句和循环结构...

    在实际项目中,条件判断和循环结构都是使用频率非常高的知识点,本节我们来看下这两部分. 一.条件语句 条件语句是对一个布尔型表达式进行判断,true时执行一个分支的操作,false时执行另一个分支的操作 ...

  4. [Java]介绍|环境|编码|数据类型|String|运算符|标准输入|if语句|循环语句|三元运算符|循环语句|swich语句

    一.介绍 1.java是oracle(甲骨文)公司的. 2.JAVA语言有3类应用 1)JAVAME 用于嵌入式开发. 比如:电视机顶盒.打印机.PDA又称掌上电脑(手机.平板电脑.游戏机.扫码枪). ...

  5. switch结构语句,for循环,while循环,死循环实现猜数字小游戏,方法实现nn乘法表,数组,逆序,冒泡排序

    switch选择结构语句 格式: switch 语句格式: switch ( 表达式 ) {case 值 1 : 语句体 1 ; break ; case 值 2 : 语句体 2 ; break ; ...

  6. [Python从零到壹] 二.语法基础之条件语句、循环语句和函数

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  7. [系统安全] 六.逆向分析之条件语句和循环语句源码还原及流程控制

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  8. [安全攻防进阶篇] 四.逆向分析之条件语句和循环语句源码还原及流程控制逆向

    从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...

  9. C语言分支语句与循环语句较为全面的总结,快来看呀!!

    分支语句和循环语句: 写在开篇:C语言其实算比较熟悉了,这里都是一些基础的总结,但感觉每次看都会有一些收获,也许这就是意义所在,冲冲冲!! 本章重点学习分支语句和循环语句的使用. 分支语句: if s ...

最新文章

  1. linux floating ip,Floating IP in OpenStack Neutron
  2. 未来15年,人工智能将带给城市8种改变
  3. 无惧隐私泄露,企业修炼“看不见的数据圣手”
  4. python3 request模块 https certificate verify failed 错误
  5. 网站优化之如何稳固网站关键词排名?
  6. dlopen dlsym dlclose加载动态链接库
  7. linux ntp时间立即同步命令_如何在 Linux 下确认 NTP 是否同步?
  8. 干货 | Elasticsearch7.X Scripting脚本使用详解
  9. libjpeg(1)
  10. Flutter AnimatedSwitcher 实现优美的图片切换动画
  11. 【To Do!】程序员面试金典——18.8子串判断
  12. 快速启动工具入门——以Launchy为例(二)
  13. 苹果11触屏不灵敏_苹果iPhone11Pro屏幕失灵怎么办
  14. 《算法艺术与信息学竞赛》之 递推 例一 月亮之眼 vijos 1540
  15. 华为手机如何设置主页面_华为手机怎么进行桌面管理?正确管理华为手机桌面图标及屏幕的方法...
  16. 计算机组成原理——计算机系统概述
  17. 2022年一级建造师考试《市政公用工程》练习题及答案(多选题)
  18. (二) OGNet 论文笔记
  19. nginx配置ip黑名单
  20. 你真的了解浮点型吗?float double浮点型深度解刨

热门文章

  1. ×××××sales_data通过类型转换形成的临时对象不能转换成sales_data (非常量引用)
  2. 8086汇编-实验8-jmp指令的理解
  3. clousx6机器人怎么导入词库_全国二等奖,临安学子登上机器人大赛国家级舞台...
  4. 天线端口和参考信号支持的多端口
  5. windows使用nginx实现网站负载均衡测试实例
  6. 属性文件有一个多行值
  7. Mybatis LIKE模糊查询
  8. javabean自定义组件
  9. Java中的HashMap和HashTable到底哪不同?(原文参考来自码农网)
  10. IOS 2D游戏开发框架 SpriteKit--续(创建敌对精灵)