填空题
1-1
函数返回值的类型是由在定义函数时所指定的函数类型。
T
F
1-2
可以在一个函数中定义另一个函数 。
T
F
1-3
在代码中,对于某个自己设计的函数,那么该函数声明、函数调用、函数定义(亦称函数的实现)三者在代码中的先后位置关系通常为:“函数声明”先于“函数调用”,“函数调用”先于 “函数定义”。
T
F
1-4
一个被调函数的函数体中,又可以出现函数调用语句,这种调用现象称为函数的嵌套调用。
T
F
1-5
1-7.print()函数是输出函数。
T
F
1-6
递归函数是指函数定义中调用函数自身的函数,在其递归链中必定以一个或多个基例结尾。
T
F
1-7
在创建自定义函数时,若函数名称与内置函数相同,则会代替内置函数。
T
F
选择题
2-1
99.对于下述代码,哪个描述是正确的?
val one: PartialFunction[Option[Int], String] = { case Some(_) => "one" } A. one.isDefinedAt(Some(1)) == true B. one.isDefinedAt(1) == true C. one.isDefinedAt(Some(100)) == false D. one.isDefinedAt(None) == true
2-2
关于函数def sum(args:Int*) = {var r = 0 ; for(arg <- args) r += arg ; r}} 输出结果不一致的是?
Sum是求和功能,所以D不一致; Scala允许你指明函数的最后一个参数可以是重复的,即我们不需要指定函数参数的个数,可以向函数传入可变长度参数列表。Scala 通过在参数的类型之后放一个星号来设置可变参数(可重复的参数)
A.
sum(1,2,3)
B.
sum(6)
C.
sum(2,4)
D.
sum(1,1,1,2)
2-3
下列表达式不是过程的是?
C是单纯取值,其他有打印的过程
A.
def foo(num:Int) = {println(num * 2)}
B.
def foo() {println("Hello World")}
C.
def foo(num:Int) = {num * 2}
D.
def foo():Unit = {println("Hello World")}
2-4
对于函数
def getGoodsPrice(goods:String) = { val prices = Map(“book” -> 5, “pen” -> 2, “sticker” -> 1) prices.getOrElse(goods, 0) }
结果说法错误的是?
A.
getGoodsPrice("book") // 等于 5
B.
getGoodsPrice("pen") // 等于 2
C.
getGoodsPrice("sticker") // 等于 1
D.
getGoodsPrice("sock") // 等于 “sock”
2-5
关于函数def fac(n:Int, x:String="x", y:Int=0) = {println(x*(n+y))} 输出结果不一致的是?
A.
fac(2)
B.
fac(1, y=1)
C.
fac(1, "x")
D.
fac(1, "x", 1)
2-6
scala 中,以下说法错误是?
A.
scala 中, 可以在类中定义类。
B.
scala 中, 可以在函数中定义函数。
C.
scala 中, 不可以在类中定义object。
D.
scala 中, 可以在函数中定义类。
2-7
scala中def mul(x:Int)(y:Int) = x*y称作
A.
柯里化函数
B.
匿名函数
C.
高阶函数
D.
偏应用函数
2-8
如果需要使用scala库中的sqrt函数,如sqrt(2),下列引用包的方式错误的是?
A.
import scala.math._
B.
import sqrt
C.
import math._
D.
import math.sqrt
2-9
h0313. 关于函数def fac(n:Int) = { var r = 1 ; for(i <- 1 to n) r = r * i ; r} fac(5)输出结果正确的是?
A.
15
B.
120
C.
200
D.
300
2-10
编写一个函数,返回Int数组中最大最小的数字?
A.
def maxmin(nums:Array[Int]){
val max = nums.max
val min = nums.min
(max, min)
}
B.
def maxmin(nums:Array[Int]) = {
nums.max -> nums.min}
C.
def maxmin(nums:Array[Int]) = {
val max = nums.max
val min = nums.min
max,min
}
D.
def maxmin(nums:Array[Int]) = {
val max = nums.sorted.head
val min = nums.sorted.last
(max,min)
}
2-11
对于拉链操作
val key = Array(1, 2)
val value = Array(“one”,”two”)
val m = key.zip.toMap
返回结果正确的是?
A.
m(1) 等于 “one”
B.
m(2) 等于 “one”
C.
m(“one”) 等于 “1”
D.
m(“two”) 等于 1
2-12
h0314. 以下关于闭包描述错误的是
A.
闭包是一个函数,其返回值依赖于声明在函数包部的一个或多个变量。
B.
通常来讲,可以将闭包看作是可以访问一个函数里面局部变量的另一个函数。
C.
对于def mulBy(factor: Double) = (x: Double) => factor * x; val triple = mulBy(3);,函数triple是一个闭包。
D.
对于def mulBy(factor: Double) = (x: Double) => 3 * x; val triple = mulBy(3);,函数triple是一个闭包。
2-13
h0315. 有关柯里化描述错误的是
A.
柯里化是指将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数作为参数的函数。
B.
有时,使用柯里化将某个函数参数单拎出来,可以提供更多用于类型推断的信息。
C.
将函数def add(x: Int, y: Int) = x + y,变形为def add(x: Int)(y: Int) = x + y的过程是一个柯里化过程。
D.
柯里化是多参数列表函数的特例。
2-14
h0316. 高阶函数是指?
A.
在程序中应该首先被定义的函数。
B.
将函数作为参数,并返回结果为函数的函数。
C.
函数参数为函数或返回结果为函数的函数。
D.
执行时间长的函数。
填空题
4-1
主函数的值
主函数的值是程序的
入口代码、出口代码
1 分
,通常为
零值、非零值
1 分
,表示程序正常结束;否则表示程序异常结束。
请填:入口代码、出口代码,零值、非零值。
4-2
设在主函数中有以下定义和函数调用语句,且fun函数定义为:
void fun( double b[10][22]){……}
则下面主函数调用上面函数,请在横线上完成调用语句。
1. main() 2. {double s[10][22]; 3. int n; 4. …
fun(s)
2 分
;//调用函数fun … }
4-3
某函数有返回值,某次调用该函数结束后,该函数能够返回的值的个数为
1
2 分
个(填数字)。
4-4
函数重载就是一种
多态
2 分
,相同的函数名,对应多个不同的函数体。
4-5
已知如下函数
int oddeven(int n) { int i=0,j=0; while(n) { if(n%10%2) i++; else j++; n/=10; } if(i&&j) return 1; else if(i&& !j) return 2; else return 3; }
函数调用oddeven(2008);返回值是
3
2 分
函数调用oddeven(1002);返回值是
1
2 分
函数调用oddeven(33557);返回值是
2
2 分
4-6
下列代码运行结果是
c
2 分
1. a = 'a' 2. print a > 'b' or 'c'
4-7
完成程序,将列表list1转为Series序列x,x索引序列为默认值。
from pandas import Series
x =
Series(list1)
3 分
4-8
有定理显示:如果散列表长度TableSize是某个
4*k + 3
2 分
(其中k是正整数,表达式不能含空格)形式的素数时,平方探测法就可以探查到整个散列表空间。
4-9
分数 2
作者 陈春晖
单位 浙江大学
列表加元组可以表示二维表。
下面程序用三种不同方式打印表格内容,请填空完成与第一种方式输出一样的后面两种方式,不要加无用空格。
students=[(3180102988,"褚好"), (3170102465,"王凯亮"), (3160104456,"李永"), (3171104169,"陈鑫"), (318400429,"徐杭诚")] for row in students: #按行存取 print(row[0],row[1]) print() for id,name in students: #按行拆包存取 print(
id,name
1 分
) print() for index in range(len(students)): #按索引存取 print(
students[index][0],students[index][1]
1 分
)