




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
附录A 同步练习参考答案为了更好的学习本书中内容,我们在本附录中给出书中各章同步练习参考答案。A.1 第1章 准备起航1介绍说明Xcode界面中各个区域的作用。解答:参考书中第1.2.1节。其中号区域是工具栏,其中的按钮可以完成大部分工作。号区域是导航栏,主要是对工作空间中的内容进行导航。号区域是代码编辑区,我们的编码工作就是在这里完成的。2 请使用Xcode中API帮助文档,找“UIViewController”关键字的相关帮助信息。解答:打开Xcode的菜单HelpDocumentation and API Reference,打开API帮助文档窗口,在搜索栏中输入“UIViewController”,敲键盘回车键搜索。A.2 第2章 第一个Swift程序1请使用Xcode的Playground编写一个输出Hello Swift的字符串Swift程序。并解释代码的含义。解答:首先参考2.2节(编写HelloWorld过程)使用Xcode创建Playground文件。然后编写Playground文件内容,代码如下。print(Hello Swift)2.请使用Xcode创建macOS工程,并编写一个输出Hello Swift字符串的Swift程序,并解释代码的含义。解答:首先参考2.3节(编写HelloWorld过程)使用Xcode创建macOS工程。然后编写代码如下。print(Hello Swift)A.3 第3章 Swift基本语法1. 下面哪些是Swift合法标识符: A. 2variableB.variable2C._whatavariableD._3_E.$anothervarF.#myvarG.体重H. I. class答案:BCDGHI解释:其中答案G“体重”是中文采用Unicode编码,Swift的字母包含Unicode编码的中文字符。答案H也是采用Unicode编码的字符。答案I中class是关键字不能作为标识符,但是使用重音符号()括起来,就可以作为标识符使用了。2下面哪些不是Swift关键字的: A.ifB.thenC.gotoD.whileE.caseF.#columnG.whereH. Class答案:BCH解释:其中F是关键字,这种#符号开头的关键字还有:#column、#file、#function和#line。H答案Class不属于关键字。3. 描述下列代码的运行结果:let _Hello1 = Hello_Hello1 = Hello, Worldprint(_Hello1)var _Hello2 = Hello_Hello2 = Hello, Worldprint(_Hello2)答案:上述代码第行有编译错误。解释:_Hello1是常量,只能在声明的时候初始化,此后,不能能够被赋值。而第行代码给_Hello2赋值没有错误,因为_Hello2是变量。4. 下面有关Swift注释使用正确的是?A.if x 1 /注释1 else return false /注释2B./let _Hello1 = Hello/_Hello1 = Hello, World/print(_Hello1)C./*let _Hello1 = Hello_Hello1 = Hello, Worldprint(_Hello1)*/D./*let _Hello1 = Hello_Hello1 = Hello, Worldprint(_Hello1)*/答案:ABCD5. 下列表达式哪些不正确?A. var n1: Int = 10;B. var n1: Int = 10C. var n1 = 10D. var n1: Int = 10; var str: String = 20E. var n1: Int = 10; var str: String = 20F. var n1: Int = 10; var str: String = 20 答案:DFA.4 第4章 运算符1.下列程序段执行后t5的结果是( )。var t1 = 9, t2 = 11, t3=8var t4, t5: Intt4 = t1 t2 ? t1: t2+t1t5 = t4 t3 ? t4: t3A. 8 B. 20 C. 11 D. 9答案:B解释:var t1 = 9, t2 = 11, t3=8代码是正确的,多个变量或常量可以在一行中声明,var t4, t5: Int代码也是正确的。?是三元运算符。2设有定义var x=3.5, y=4.6, z=5.7,则以下的表达式中,值为true的是( )。A. x y | x z B. x != yC. z ( y + x ) D. x z )答案:BD解释:答案B不用解释,选择答案D是考察读者运算符的优先级,运算优先级如下从左到右逐渐变低:括号 一元运算符 二元运算符+、*、/和%等算术运算符 关系运算符 逻辑运算符3. 下列程序段执行后 b3 的结果是( )。var b1 = true, b2, b3: Boolb3 = b1 ? b1: b2A. 0 B. 1 C. true D. falseE. 无法编译答案:E解释:b2没初始化不能位于等号的右边。4. 下面关于使用操作符的哪些结果是对的?A. 1010 0000 0000 0000 4 的结果是0000 1010 0000 0000B. 1010 0000 0000 0000 4 的结果是1111 1010 0000 0000 C. 0000 1010 0000 0000 2的结果是0010 1000 0000 0000 D. 0000 1010 0000 0000 2B. 16/22C. 16*4D. 162)计算结果是4,答案B计算过程是先计算16/2结果为8,再与2进行异或运算,运算结果为10。答案D 162计算结果是64。6.执行下列程序段后,输出结果是( )。E提示:String是结构体,结构体是值类型。var a :String = 123, b :String = 123print(a = b)a = bprint(a = b)A.false false B.false trueC.true true D.true falseE.编译错误答案:E解释:=恒等于不能比较结构体等值类型,只能比较引用类型,在Swift中引用类型只有类。print(a = b)语句会有编译错误。7.执行下列程序段后,输出结果是( )。提示:NSString是类,它是引用数据类型。var a :NSString = 123, b :NSString = 123print(a = b)a = bprint(a = b)A.false false B.false trueC.true true D.true falseE.编译错误答案:B解释:NSString是Cocoa框架提供的类,可以进行=恒等于的比较,=是比较两个引用是否指向一个对象,换句话说是比较是否为同一个对象。在a = b赋值之前,即便是a和b的内容完全相等,但是print(a = b)输出false,这是时候a和b不是同一个对象,当a=b之后它们具体相同的引用了,print(a = b)输出true。8.执行下列程序段后,输出结果是( )。var a1: String = 123, b1: String = 123var a2: NSString = 123, b2: NSString = 123print(a1 = b1)print(a2 != b2)A.false false B.false trueC.true true D.true falseE.编译错误答案:CA.5 第5章 Swift原生数据类型1. 下列数据哪些是值类型?A. 元组B. 枚举C. 结构体D. 类答案:ABC解释:整型、浮点型、布尔型、字符串、元组、集合、枚举和结构体属于值类型,而类属于引用类型。2. 下列数据哪些是引用类型?DA. 字符串B. 枚举C. 结构体D. 类E. 集合答案:D3. 下列说法正确的?ABCA. Int是与平台相关有符号整型。B. UInt是与平台相关无符号整型。C. UInt16是与平台相关无符号整型。D. Int8是与平台无关的有符号整型。答案:ABD4. 下列表示数字正确的是?ACDEA. 29B. 0X1CC. 0x1AD. 1.96e-2E. 9_600_000答案:ACDE解释:答案B中的x大写了,表示十六进制x字母小写。5. 判断对错?错Swift中的整数可以从小范围数到大范围数转换是自动的。答案:错解释:必须通过函数才能转换。6. 判断对错?Swift中的整数从大范围数到小范围数需要强制类型转换,有可能造成数据精度的丢失。答案:错解释:必须通过函数才能转换。7. 语句中能够正常运行的有哪些?A. let f:UInt8 = 10.0let i:UInt16 = 10let total = UInt16(f) + iprint(total)B. let f:Double = 10.0let i:UInt16 = 10let total = UInt16(f) + iprint(total)C. let n:UInt8 = 90let i:UInt16 = 10let total = UInt16(n) + iprint(total)D. let n:UInt8 = 90let i:UInt16 = 10let total = UInt8(i) + nprint(total)答案:BCD解释:答案A中let f:UInt8 = 10.0语句会有编译错误,因为10.0是浮点类型不能赋值给整数类型。8. 请描述元组类型,并举例说明?答案:元组类型是一种数据结构,在数学中有很大应用,在计算机中元组是关系数据库中的基本概念,元组表中的一条记录,每列就是一个字段。 在二维表里,因此元组也称为记录。例如:老师元组类型,老师有姓名和年龄元素,那么张老师可以表示为:(张三, 30) (name:张三, age:30)9. 有语句var 张老师 = (张三, 30),下面语句有语法错误的是?CA. let (name,age) = 张老师B. print(张老师.0) (张老师.1)C. print(张老师.name) (张老师.age)D. var (name,age) = 张老师答案:C解释:如果要使C选项也能正确编译,可以修改元组的定义:var 张老师 = (name: 张三, age: 30)10. Swift中的布尔值表示正确的是?ABA. trueB. falseC. 1D. 0答案:ABA.6 第6章 Swift原生字符串1. 关于Swif中的字符表示方式正确的是?A. u0001f603 B. u0001f603C. D. 答案:AC解释:答案B使用了单引号,在Swift不能使用单引号将字符括起来。答案D是标识符。2. 请说明下面转义符代表的含义?t n r 答案:t 水平制表符tabn 换行回车r 双引号 单引号 反斜线3. 下列表达式正确的是?A. let andSign1: Character = &B. let andSign2 = u26C. let lamda1: Character = D. var lamda2: String = u03bbE. let 熊: String = F. let 猫: Character = 答案:ABCDEF4. 判断对错: Character类型比较不能使用=或!=运算符。String类型比较可以使用=或!=运算符。答案:错5. 判断对错: Character和String类型都能使用=和!=运算符。答案:对A.7 第7章 控制语句1. 编程题:水仙花数是一个三位数,三位数各位的立方之和等于三位数本身。(1)使用while循环计算水仙花数。(2)使用repeat-while循环计算水仙花数。(3)使用for循环计算水仙花数。参考答案:(1)var i = 100, r = 0, s = 0, t = 0while i 1000 r = i / 100 s = ( i - r * 100 ) / 10 t = i - r * 100 - s * 10 if ( i = r * r * r + s * s * s + t * t * t ) print ( i = ( i ) ) i += 1 运行结果:i = 153 i = 370 i = 371 i = 407(2)参考答案:var i = 100, r = 0, s = 0, t = 0repeat r = i / 100 s = ( i - r * 100 ) / 10 t = i - r * 100 - s * 10 if ( i = r * r * r + s * s * s + t * t * t ) print ( i = ( i ) ) i += 1 while i 1000运行结果:i = 153 i = 370 i = 371 i = 407(3)参考答案:var r = 0, s = 0, t = 0for i in 100 . 1000 r = i / 100 s = ( i - r * 100 ) / 10 t = i - r * 100 - s * 10 if ( i = r * r * r + s * s * s + t * t * t ) print ( i = ( i ) ) 运行结果:i = 153 i = 370 i = 371 i = 4072. 编程题:编写程序输出以下形式的金字塔图案。 * * *参考答案:var i,j: Intfor i in 1.4 j = 1 while j = 4 - i print( , terminator: ) j += 1 j = 1 while j = 2*i - 1 print(*, terminator: ) j += 1 print()解释说明:在Swift 2之后print函数带有两个参数,第一个是要输出的内容,第二参数是结束符号,默认情况下是回车符号,print()表示回车。3.能从循环语句的循环体中跳出的语句是( )。A. for 语句 B. break 语句 C. while 语句 D. continue语句答案:B4. 若有如下循环语句,则循环体将被执行( )。var x=5, y=20repeat y -= x x += 1 while(x 3A. 16 B. 8 C. 4 D. 2答案:D6.给出下面代码段: let m = ?switch mcase 0: print(case 0)case 1: print(case 1)case 2: print(case 2) fallthroughdefault: print(default)下列m的哪些值将引起default的输出? A. 0 B. 1 C. 2 D. 3 答案:CD解释:Switch中的 switch语句默认每一个case是不能贯穿的,但是使用了fallthrough语句是贯通case。如果m = 2进入case 2分支,由于有fallthrough语句程序会进入到default分支,所以m = 2情况下也可以输出default。7.下列语句执行后,x 的值是( )。var a=3, b=4, x=5if a b a += 1 x += 1A. 5 B. 3 C. 4 D. 6答案:D8.下列语句序列执行后,k 的值是( )。var i=6, j=8, k=10, n=5, m=7if ij | m 0 j += i i -= 1A. 5 B. 6 C. 7 D. 8答案:B11.下列语句序列执行后,i的值是( )。var i = 10repeat i -= 2 while i 6A. 10 B. 8 C. 6 D. 4答案:C 12.能构成多分支的语句是( )。A. for 语句 B. while 语句 C. switch 语句 D. repeat-while 语句答案:C13.以下由repeat-while语句构成的循环执行的次数是( )。Bvar k = 0repeat k += 1 while k j | m k k += 1 else k -= 1A. 12 B. 11 C. 10 D. 9答案:B16.下列语句序列执行后,k的值是( )。var j=8, k=15for i in 2 . j j -= 2 k += 1A. 21 B. 15 C. 16 D. 17答案:A17.下列语句序列执行后,j 的值是( )。var j=3, i=2while i != i/j j = j+2 i -= 1A. 2 B. 4 C. 6 D. 7答案:D18.下列代码执行的结果是?var x = 1, y = 6while y = 6 x -= 1 y -= 1print(x= (x) ,y = (y)A程序能运行,输出结果:x=0,y=5B程序能运行,输出结果:x=-1,y=4C程序能运行,输出结果:x=0,y=4D程序不能编译答案:A19.下列语句序列执行后,k 的值是( )。var x=6, y=10, k=5switch x % y case 0: k = x*y case 6: k = x/y fallthrough case 12: k = x-y fallthrough default: k = x*y-xA. 60 B. 5 C. 0 D. 54答案:D20.简答题:请例举在switch中使用范围匹配。解答:let testscore = 80var grade: Characterswitch testscore case 90.100: grade = 优case 80.90: grade = 良case 60.80: grade = 中case 0.60: grade = 差default: grade = 无print(Grade = (grade)21.简答题:请例举在switch中使用元组类型。解答:var student = (id:1002, name:李四, age:32, ChineseScore:80, EnglishScore:89)var desc: Stringswitch student case (_, _, _, 90.100, 90.100): desc = 优case (_, _, _, 80.90, 80.90): desc = 良case (_, _, _, 60.80, 60.80): desc = 中case (_, _, _, 60.80, 90.100), (_, _, _, 90.100, 60.80): desc = 偏科case (_, _, _, 0.80, 90.100), (_, _, _, 90.100, 0.80): desc = 严重偏科default: desc = 无print(说明:(desc)A.8 第8章 Swift原生集合类型1. 以下定义数组的语句中,不正确的是: A. let a: Array = 1,2B. let a: Int = 1,2C. var b: String = 张三,李四D. int Array a1,a2E. int a3=1,2,3,4,5答案:DE2.在一个应用程序中有如下定义:let a = 1,2,3,4,5,6,7,8,9,10为了打印输出数组a的最后一个元素,下面正确的代码是( )。A. print(a10)B. print(a9)C. print(aa.count )D. print(a(8)答案:B解释:D不对,是因为数组引用下标要使用中括号。3.下列语句序列执行后,打印输出结果是( )。var ages = 张三: 23, 李四: 35, 王五: 65, 董六: 19var copiedAges = agescopiedAges张三 = 24print(ages张三!)A. 65 B. 35 C. 24 D. 23答案:D4.下列语句序列执行后,打印输出结果是( )。var n1 = 900, 200, 300var n2 = n1var n3 = n1n10 = 1000print(n10)print(n20)print(n30)A. 900 900900B. 800 900900C. 1000 900900D. 1000 800900答案:C5.判断对错:数组的元素是不能重复的。答案:错6.判断对错:字典由键和值两个集合构成,键集合中的元素不能重复,值集合中的元素可以重复。答案:对7. 编程题:编写一个程序说明Swift数组的使用。参考答案:var a = String()a.append(艾米)a.append(卡尔)a.append(埃里卡)var b = String()b.append(鲍勃)b.append(新格)b.append(佛朗斯)b.append(格里亚)b += aprint(b)/删除元素b.removeAtIndex(3)/更新元素b4 = 约翰print(b)/遍历for item in b print (item)8. 编程题:假设有下面一个类的定义:class Employee var name: String / 姓名 var salary: Double / 工资 init (n: String) name = n salary = 0 编写一个程序说明Swift字典的使用。参考答案:class Employee var name: String / 姓名 var salary: Double / 工资 init(n: String) name = n salary = 0 var emps = Dictionary()emps144-25-5464 = Employee(n: Amy Lee)emps567-24-2546 = Employee(n: Harry Hacker)emps157-62-7935 = Employee(n: Gary Cooper)emps456-62-5527 = Employee(n: Francesca Cruz)/ 打印所有的条目print(emps)/ 删除一个条目eValue(forKey: 567-24-2546)/或 emps567-24-2546 = nil/ 替换一个条目eValue(Employee(n: Francesca Miller), forKey: 456-62-5527)/或 emps456-62-5527 = Employee(n: Francesca Miller)/ 查询一个值print(emps157-62-7935!)print(-遍历-)/遍历for (id, emp) in emps print(key: (id) - value :()A.9 第9章 函数1. 下列函数定义不正确的是?() A. func count(string: String) - (vowels: Int, consonants: Int, others: Int) return (1, 2, 3)B.func count(string: String) - () C.func count2(string: String) D.func count3(String string) 答案:D解释:Swift中参数是要在数据类型之前,之间是冒号(:)连接。2. 关于函数参数列表下列写法正确的是?()A.func rectangleArea(W width: Double, H height: Double) - Double let area = width * height return areaB.func rectangleArea(width: Double, height: Double) - Double let area = width * height return areaC.func rectangleArea(#width: Double, #height: Double) - Double let area = width * height return areaD.func rectangleArea(Double width, Double height) - Double let area = width * height return area答案:AB解释:答案C中#形式参数Swift 2.0已经不用了。D的参数形式有误。3. 简单题:请写一个最简单形式的函数。答案:func test() 4. 填空题:请在下列代码横线出填写一些代码使之能够正确运行。func test1_ test1(Ravi)答案:(_ str: String)5. 有下列函数toLower定义代码,哪些调用语句正确的是。 () func toLower(string: String) -String return A. toLower(string:Ravi)B. toLower(String:Ravi)C. toLower(#:Ravi)D. toLower(Ravi)答案:A6. 有下列函数join定义代码:func join(str1: String, str2: String, with: String = ) - String return str1 + with + str2下列调用语句正确的是()。A. var out1 = join(str1: Hello, str2: World, with: ,)B. var out2 = join(Hello, str2: World)C. join(str1: Hello, str2: World, with: -)D. join(Hello, World, with: #)答案:AC解析:答案B和D调用是缺少参数标签str1。7. 有下列函数sum定义代码,哪些调用语句正确的是。 () func printNumbers(numbers: Int.) for number in numbers print(number) A. printNumbers(numbers: 1, 2)B. printNumbers(1, 2, 3, 4, 5, 6)C. printNumbers(numbers: 100.0, 20, 30)D. printNumbers(30.0f)答案:A解析:答案B没有标签名。答案C是传递参数的类型不对,不能是Double类型。答案D的30.0f是错误的表示形式。8. 有下列函数swapNumbers定义代码: func swapNumbers( x: inout Int, y: inout Int ) let temp = x x = y y = tempvar x: Int = 1var y: Int = 2下列调用语句正确的是()。A. swapNumbers(x: x, y: y)B. swapNumbers(x: &x, y: &y)C. swapNumbers(inout:&x, inout:&y)D. swapNumbers(inout:x, inout:y)答案:B解析:swapNumbers是输出参数类型的函数,传递参数时候前面要加&。所以答案A有误,答案B是正确的。swapNumbers参数中的inout不是参数标签名,而是声明输入输出参数类型,答案C和D都是错误的。9.填空题:请在下列代码横线出填写一些代码使之能够正确运行。func addNumber(a: Int, b: Int) - Int return a + bvar mathFunction: _mathFunction = addNumbervar sum = mathFunction(1,2)答案: (Int,Int) - Int解析:(Int,Int) - Int是函数类型,函数类型可以作为数据类型使用。10. 填空题:请在下列代码横线出填写一些代码使之能够正确运行。func log_ log(1, Ravi)答案: (_ numb: Int, _ str: String )11. 填空题:请在下列代码横线出填写一些代码使之能够正确运行。func addNumber( a: Int, b: Int ) - Int return a + bfunc add() -_ return addNumbervar out = add()(1, 2)答案: (Int,Int) - Int解析:(Int,Int) -Int是函数类型,函数类型可以作为返回类型使用。12. 下列程序运行结果是?()func addNumber(a: Int, b: Int) - Int func log() print(a:(a) b:(b) log() return a + bprint(addNumber(10, b: 20)A. a:10 b:20B. 30C. a:10 b:2030D. 30a:10 b:20答案:C解析:log是嵌套函数,它是在addNumber函数内部声明的。13.编程题:给定一个无序数值,编写一个函数对数组进行排序。参考答案:func mySort( numbers: inout Int ) var tmp: Int let n = for i in 0 . n for j in 0 . numbersj + 1) tmp = numbersj numbersj = numbersj + 1 numbersj + 1 = tmp var numbers = 49, 38, 65, 97, 76, 13, 27, 49mySort(numbers: &numbers)print(numbers)A.10 第10章 闭包1. 下列选项中,哪个是标准的闭包定义的是? A. (参数列表) -返回值类型 语句组B. (参数列表) -返回值类型 in 语句组C. (参数列表) - in 返回值类型 语句组D. (参数列表) in 语句组答案:B2. 下面选择项中闭包表达式正确的是? A.var testEquality1: (Int, Int) - Bool = return $0 = $1B.var testEquality2: (Int, Int) - Bool = $0 = $1C.var testEquality3: (Int, Int) - Bool = (a: Int, b: Int) - Bool in return a = bD.var testEquality4: (Int, Int) - Bool = (a: Int, b: Int) - Bool return a = b答案:ABC3.使用闭包表达式实现两个数相减?()A.var DoMath: (Int, Int) - Int = (a:Int, b:Int) - Int in return a-bB.var DoMath: (Int, Int) - Int = (a, b) return a-bC.var DoMath: (Int, Int) - Int = (a, b) in return a-bD.var DoMath: (Int, Int) - Int = $0-$1答案:ACD解析:答案B缺少in关键字。4.下面是一个函数的定义:func applyMutliplication(value: Int, multFunction: (Int) - Int) - Int return multFunction(value)下面能正确地调用applyMutliplication函数语句有哪些?()A.applyMutliplication(value: 2, multFunction: value in value * 3)B.applyMutliplication(value: 2, multFunction: value in return value * 3)C. applyMutliplication(value: 2, multFunction: $0 * 3)D.applyMutliplication(value: 2) $0 * 3答案: ABCD解析:答案 D使用尾随闭包写法。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 德州数学新课标考试题及答案
- 天文系考试题目及答案
- 时空量子纠缠-洞察及研究
- 2025年公需科目人工智能与健康试题及答案
- 2025年公需科目考试试题集及答案
- 2025年公需科目《专业技术人员创新能力培养》题库(含答案)
- 2025年高级电工证考试试题含答案
- 系统实施与管理办法
- 人道救助管理办法无锡
- 蜀绣地标保护管理办法
- 内镜中心课件
- 脑血管造影进修汇报总结
- 2025年运城社区专职工作人员招聘真题
- 钢材供货方案及保证措施范本
- 急性出血性疾病的早期识别与处理
- 皮肤感染的护理
- JJF 2258-2025关联法天然气发热量测定仪校准规范
- 2025秋统编版(2024)道德与法治一年级上册教学计划
- 2024中国地质大学(武汉)辅导员招聘笔试真题
- 科创板开户测试题及答案
- 智能书柜阅读活动方案
评论
0/150
提交评论