swift4基础学习(2)- 循环、元组、条件语句

本文介绍了Swift语言中的循环结构,包括for循环、while循环的不同用法及特点,并详细讲解了条件语句如if和switch的使用方法。此外,还展示了如何通过元组和字典进行迭代。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

import UIKit

var str = "Hello, playground"

//1.for循环
//1.1 index 的声明周期只存在for循环内
//...指闭区间 1~10
for index in 1...10{
    print("num=\(index)")
}

//1.2开区间1-4
for index in 1..<5 {
    print("kai=\(index)")
}

//1.3 使用 _ 忽略索引
for _ in 1...5 {
    
}

//1.4 遍历数组
let names = ["小明", "小方" , "李四"]
for name in names where name == "小方"{   //where与sql中的where中用法类似
    print(name)
}

//1.5带有索引的数组遍历
for (index,name) in names.enumerated() {
    
    print("index=\(index): name=\(name)")
}

//2 元组
//定义:使用()并以 “,” 区分,多个值组合而成的复合组。
//元组中的值可以是任意类型,每一个元素的类型可以是不同的
let httpError = (404, "error network")

//2.1获取元组中的值
print(httpError.0,httpError.1)

//2.2元组赋值
let (statusCode,statusDes) = httpError

//2.3忽略元组中的某个值
let (statusCodeTwo,_) = httpError

//2.4元组中的元素定义名字
let http200Status = (status: 200, des: "sucess")
print(http200Status.status,http200Status.des)


//3.1字典遍历
let vegetables = ["鸡蛋": 1, "黄瓜": 4, "番茄": 2]

for (key,value) in vegetables {
    print(key,value)
}
//字典元素遍历顺序和插入顺序可能不同,因为字典内容在内部是无序的,所有遍历元素不能保证顺序


//3.2字符串中的字符也是可以
for char in "hello swift"{
    print(char)
}

//3.3数组  倒叙
for name in names.reversed(){
    print(name)
}

//4.while循环
var count = 0
//第一种
while count < 5 {
    count = count + 1
    print(count)
}

//第二种
repeat{
    count = count + 1
    print("浏览数: \(count)")
}while count < 10


let numberOfTag = [
    "vivo":[24,42,12,49,10],
    "小米":[21,25,12,9,30],
    "华为":[18,43,29,19,10],
]

var lastBig = 0
var valuekey = ""
var valueIndex = 0
for (key,values) in numberOfTag{
    
    //带有索引的数组遍历
    for (index, number) in values.enumerated() {
        if number > lastBig {
            lastBig = number
            valuekey = key
            valueIndex = index
        }
    }
}

print("最大值: \(lastBig) 位置:\(valuekey) \(valueIndex)")


//5. 条件语句
// 在 if语句中,条件必须是一个布尔值表达式,不会隐式的与0做对比

var testC = true

if testC {
    print("YES")
}

//由于if中的必须是bool表达式,那么有两种方式判断一个对象是否为空
var testCondition:String? = "2"

//testCondition 必须声明optional
//如果有值就赋值给condition
// 使用 if 和 let 来处理值缺失情况, 如果变量的值为nil,条件会判断为 false
//oc中 对象为nil时直接为false
if let condition = testCondition {
    print("有值:\(condition)")
}else{
    print("没有值:")
}

//第二种
if testCondition != nil {
    print("testCondition有值")
}

//6. switch
// switch  与oc相比不需要写break
// case 执行完,就会终止switch预计
//case 从一个case与领一个case关联使用fallthrough
//每一个case 分支必须包含一条语句

let characterTest = "a"

switch characterTest {
case "a":
    print("值为a")
    print("------")
    fallthrough
case "b","B":            // 可以包含多个模式,用逗号把他们分开
    print("值为b")
     print("------")
case "c":
    print("值为c")
     print("------")
default:
    print("未知")
}

//区间匹配
let num = 1000
var countType:String?
switch num {
case 1...9:
    countType = "ge"
case 10...99:
    countType = "时"
case 100...999:
    countType = "百"
case 1000...9999:
    countType = "千"
default:
    countType = "未知"
}
print(countType!)

//7.1元组值可忽略
let point = (1,1)

switch point {
case (0,0):
    print("原点")
case (0,_):
    print("y轴")
case (_,0):
    print("x轴")
case (-2...2, -2...2):
    print("在以原点为0,0,边长2根号2的正方形中")
default:
    print("不在轴上")
}

//7.2值绑定
switch point {
case (let x,0):
    print("x点 \(x)")
case (0, let y):
    print("y轴 \(y)")

case (let x, let y):
    print(" \(x) \(y)")

}

//7.3case可以使用 where 语句来判断额外的套件

let anotherPoint = (2,2)

switch anotherPoint {
case let(x,y) where x == y:
    print("位置对称")
case let(x,y) where x == -y:
    print("反对称")
default:
     print("没有对称")
}

 

资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 行列式是线性代数的核心概念,在求解线性方程组、分析矩阵特性以及几何计算中都极为关键。本教程将讲解如何用C++实现行列式的计算,重点在于如何输出分数形式的结果。 行列式定义如下:对于n阶方阵A=(a_ij),其行列式由主对角线元素的乘积,按行或列的奇偶性赋予正负号后求和得到,记作det(A)。例如,2×2矩阵的行列式为det(A)=a11×a22-a12×a21,而更高阶矩阵的行列式可通过Laplace展开或Sarrus规则递归计算。 在C++中实现行列式计算时,首先需定义矩阵类或结构体,用二维数组存储矩阵元素,并实现初始化、加法、乘法、转置等操作。为支持分数形式输出,需引入分数类,包含分子和分母两个整数,并提供与整数、浮点数的转换以及加、减、乘、除等运算。C++中可借助std::pair表示分数,或自定义结构体并重载运算符。 计算行列式的函数实现上,3×3及以下矩阵可直接按定义计算,更大矩阵可采用Laplace展开或高斯 - 约旦消元法。Laplace展开是沿某行或列展开,将矩阵分解为多个小矩阵的行列式乘积,再递归计算。在处理分数输出时,需注意避免无限循环和除零错误,如在分数运算前先约简,确保分子分母互质,且所有计算基于整数进行,最后再转为浮点数,以避免浮点数误差。 为提升代码可读性和可维护性,建议采用面向对象编程,将矩阵类和分数类封装,每个类有明确功能和接口,便于后续扩展如矩阵求逆、计算特征值等功能。 总结C++实现行列式计算的关键步骤:一是定义矩阵类和分数类;二是实现矩阵基本操作;三是设计行列式计算函数;四是用分数类处理精确计算;五是编写测试用例验证程序正确性。通过这些步骤,可构建一个高效准确的行列式计算程序,支持分数形式计算,为C++编程和线性代数应用奠定基础
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值