Swift 算法练习
来源:互联网 发布:unity3d卡牌游戏教程 编辑:程序博客网 时间:2024/05/21 08:40
编写一个程序,能交换两个变量的数值
例如: 变量a值为20,变量b值为30,调用函数后,a的值变为30,b 的值变为20
答案: -func swap(a: inout Int , b:inout Int){ let temp = a a = b b = temp } var x = 20 , y = 30 swap(a:&x , b:&y) print(x,y)
编写一个程序,求1! + 2! + 3! + 4!的和
要求:使用嵌套定义函数实现
答案: func getSum(number: Int) -> Int { //求某个数阶乘的结果 func getFactorIal(num: Int) -> Int { var sum = 1 for _ in 1...num { sum += 1 } return sum } var total = 0 for item in 1...number { total += getFactorIal(num: item) } return total}print(getSum(number: 3))
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
答案:func getFinboNum(num: Int) ->Int{ if num == 1 || num == 2 { return 1 } return (getFinboNum(num: num - 1) + getFinboNum(num: num - 2))}for month in 1...10{ print("\(month):\(getFinboNum(num: month))")}
打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方
答案 :for number in 100...999{ var hunder = number / 100 var ten = number / 10 % 10 var num = number % 10 let sum = pow(Decimal(hunder), 3) + pow(Decimal(ten), 3) + pow(Decimal(num), 3) if sum == Decimal(number){ print(number) }}
编写一个程序,要求可以把一个字符串中的每一个字符,如果是大
写字母变小写字母,如果是小写字母变大写,如果是其他字符不变
例如: 字符串China23beiJing 经过程序转换为cHINA23BEIjING
答案:/* 函数,将大写字母变小写,小写字母变大写,其他不变 */func changeCharcter (chNum:Character) -> Character { //将字符转成整数 var chStr = String(chNum) //将字符转成字符串 var num:UInt32 = 0 //用于接受字符整数值的变量 for item in chStr.unicodeScalars { num = item.value //循环只执行一次,获取字符的整数的值 } /* 如果是大小写字母,转换数值 */ //如果是大写字母 if num >= 65 && num <= 90 { num += 32 } //如果是小写字母 else if num >= 97 && num <= 122 { num -= 32 } /* 将整数转换为字符 */ let newChNum = Character(UnicodeScalar(num)!) return newChNum}var str = "China23beiJing "var i = 0 //表示偏移量(循环变量初始值)while i < str.characters.count { //循环条件,包含循环变量的终止值 var str1 = str[str.index(str.startIndex, offsetBy: i)]// str1 = changeCharcter(chNum: str1) str.replaceSubrange(str.index(str.startIndex, offsetBy: i)...str.index(str.startIndex, offsetBy: i), with: String(changeCharcter(chNum: str1))) i+=1; //循环变量值变化}print(str)
编写一个程序,要求接收一个数字,程序会将这个数字以二进制方
式打印,例如:数字10 , 以1010的方式打印出来
答案 : func binaryPrintIntNumber(num : Int) { var remainderArr:[Int] = [] //int数组,存储余数 var quotient:Int = num //表示商的变量,初始值是num while quotient > 0 { //商的值是0 let remainderNum = quotient % 2 //获取余数的值 remainderArr.insert(remainderNum, at: 0) //插入数组 quotient /= 2 //商变换 } for item in remainderArr { print(item, terminator: "") } print("")}var a = 10binaryPrintIntNumber(num: a)print(a)
编写一个程序,判断101-200之间有多少个素数,并输出所有素数
答案: var isPreimNum = true //判断是否是素数,是就是true不是就是falsevar sum = 0for item in 101...200 { //遍历101到200中的任意数 for j in 2..<item { //判断item是不是素数 if item % j == 0 { isPreimNum = false break } } if isPreimNum { //如果是素数 print(item) //打印这个素数 sum += 1 } isPreimNum = true}print(sum)}
编写一个程序,查看1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
var sum1 = 0 //定义变量用于记录个数for hudder in 1...4 { //百位 for ten in 1...4 { //十位 for num in 1...4 { //个位 if hudder != ten && hudder != num && ten != num { print(hudder*100 + ten*10 + num) sum1 += 1 //计算个数 } } }}print(sum1)
阅读全文
0 0
- Swift 算法练习
- Swift 练习
- Swift练习
- Swift简单值练习
- Swift基础练习代码
- swift练习一
- swift 日历练习
- swift练习二
- swift 练习三
- 【练习】经典算法练习
- 算法练习
- 算法练习
- 算法练习
- 算法练习
- 【算法练习】
- 算法练习
- 算法练习
- 算法练习
- Gson
- Android TabLayout使用以及自定义TabLayout
- instanceof与class的等价性
- UVA12663 线段树+二分
- bzoj1260 [CQOI2007]涂色paint 区间DP
- Swift 算法练习
- JS中的同步和异步过程。
- tcp/ip<3>
- OpenStack源码分析 Neutron源码分析(一)-----------Restful API篇
- android 系统自带 回声消除
- 阿里巴巴Java开发手册学习笔记-编程规约
- HAAR特征+adaboost的实现原理
- 关于集合的习题(3)
- 【Java面试题】一次完整的Http请求过程(非常详细)