swift3.0 基础练习-构造对象并按要求进行排序(struct)

写在前面 弄了下个人站...防止内容再次被锁定...所有东西都在这里面 welcome~ 个人博客

struct练手 构造10个学生(要求有学生的姓名、数学成绩、英语成绩),按照学生英语和数学平均分的成绩从小到大输出学生的姓名、数学成绩、英语成绩及平均分 创建一个学生构造体,包含 姓名 name 数学成绩 mathScore英语成绩 englishScore 平均分average 并在创建时求出平均分

struct Student{
    var name:String
    var mathScore:Int
    var englishScore:Int
    var average:Float

        //MARK: - 初始化并求平均值
    init(name:String,mathScore:Int,englishScore:Int) {
        self.name = name
        self.mathScore = mathScore
        self.englishScore = englishScore
        self.average = Float(self.mathScore + self.englishScore) / 2
    }
}

排序我这里使用的是喜闻乐见的冒泡法

func sortWithAverage(students:[Student]) -> [Student] {
        var result = students
        for i in 0..<result> result[j].average) {
                    let tmp = result[i]
                    result[i] = result[j]
                    result[j] = tmp
                }
            }
        }
        return result
    }

下面我们来构造对象并输出结果

//构造10个学生对象
var student01 = Student(name: "st01", mathScore: 67, englishScore: 98)
var student02 = Student(name: "st02", mathScore: 87, englishScore: 56)
var student03 = Student(name: "st03", mathScore: 47, englishScore: 86)
var student04 = Student(name: "st04", mathScore: 65, englishScore: 88)
var student05 = Student(name: "st05", mathScore: 85, englishScore: 97)
var student06 = Student(name: "st06", mathScore: 85, englishScore: 94)
var student07 = Student(name: "st07", mathScore: 92, englishScore: 76)
var student08 = Student(name: "st08", mathScore: 93, englishScore: 66)
var student09 = Student(name: "st09", mathScore: 63, englishScore: 93)
var student10 = Student(name: "st10", mathScore: 99, englishScore: 82)

//调用排序方法
var result = sortWithAverage(students: [student01,
                                        student02,
                                        student03,
                                        student04,
                                        student05,
                                        student06,
                                        student07,
                                        student08,
                                        student09,
                                        student10])

print("英语和数学平均分的成绩从小到大排列为:")
//遍历结果数组并打印
for i in 0..<result.count{
    print("姓名:\(result[i].name),数学成绩:\(result[i].mathScore),英语成绩:\(result[i].englishScore),平均分:\(result[i].average)")
}

结果就出来了

struct.png

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏醒者呆

融会贯通——最常用的面向对象设计原则“合成复用原则”

复用一个类的时候,多使用对象的组合/聚合的关联关系,而不是继承。 之前提到的“依赖倒转原则”,是以里氏代换原则为基础的实现开闭原则目标的手段,这一条路线涉及到的...

2988
来自专栏懒人开发

(2.5)James Stewart Calculus 5th Edition: Continuity

如果在一个区间中,不包括a, 则在 a点不连续(f is discontinuous at a)

1074
来自专栏更流畅、简洁的软件开发方式

《你必须知道的.net》读书笔记 002——1.2 什么是继承

    1.2 什么是继承     “对于继承,就应该着手从这些容易误解与引起争论的话题来寻找关于全面认识和了解继承的答案。一点一滴摆出来,最后在对分析的要...

1889
来自专栏java一日一条

Java面试题:多继承

招聘和面试对开发经理来说是一个无尽头的工作,虽然有时你可以从HR这边获得一些帮助,但是最后还是得由你来拍板,或者就像另一篇文章“Java 面试题:写一个字符串的...

1664
来自专栏C/C++基础

设计模式(6)——抽象工厂模式(Abstract Factory Pattern,创建型)

使用设计模式可以提高代码的可复用性、可扩充性和可维护性。抽象工厂模式(Abstract Factory Pattern)属于创建型模式,为创建一组相关或者相互依...

1011
来自专栏玄魂工作室

如何学python 第十七课 类-面向对象的概念

欢迎回来。今天要说的东西将会改变我们写程序的方式。今天我们介绍‘类’(class)。 概述 什么叫‘类’?类,类型。变量类型。从日常生活的感觉来说,‘类’其实...

2714
来自专栏学习力

《Java从入门到放弃》JavaSE入门篇:运算符

1646
来自专栏程序员叨叨叨

5.5 类型转换

Cg 中的类型转换和 C 语言中的类型转换很类似。C 语言中类型转换可以是强制类型转换,也可以是隐式转换,如果是后者,则数据类型从低精度向高精度转换。在 Cg ...

952
来自专栏猿人谷

O(n)时间的排序

题目:某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间。      题目特别强调是对一个公司的员工的年...

2148
来自专栏IT 指南者专栏

Java 数据结构与算法系列之冒泡排序

相信大部分同学都已经学过数据结构与算法这门课了,并且我们可能都会发现一个现象就是我们所学过的数据结构与算法类的书籍基本都是使用 C 语言来写的,好像没见过使用 ...

3602

扫码关注云+社区

领取腾讯云代金券