快学scala第十三章习题答案

合集下载

scala练习题库

scala练习题库

scala练习题库Scala是一种多范式编程语言,它结合了面向对象编程和函数式编程的特性。

通过练习,我们可以更好地理解和掌握Scala的各种语法和用法。

本篇文章将为大家提供一个Scala练习题库,帮助大家进行实战练习,加深对Scala的理解。

1. 变量和数据类型1.1 请编写一个程序,声明两个整型变量并计算它们的和,并打印结果。

1.2 请编写一个程序,声明一个字符串变量并将其内容逆序输出。

2. 函数2.1 请编写一个函数,接收一个整数作为参数,并判断该整数是否为偶数。

如果是偶数,返回true,否则返回false。

2.2 请编写一个函数,接收一个字符串作为参数,并返回该字符串的长度。

3. 条件语句和循环3.1 请编写一个程序,接收一个整数作为参数,判断它是否为正数、负数还是零,并打印相应的提示信息。

3.2 请编写一个程序,打印1到100之间所有的偶数。

4. 集合4.1 请使用列表(List)存储10个整数,并编写程序打印出列表中所有的偶数。

4.2 请使用集合(Set)存储10个不重复的整数,并编写程序打印出集合中的最大值和最小值。

5. 类和对象5.1 请定义一个Person类,包含姓名和年龄两个属性,以及一个打印信息的方法。

5.2 请定义一个Circle类,包含半径属性和计算面积的方法。

6. 模式匹配6.1 请编写一个程序,接收一个整数作为参数,判断该整数是奇数、偶数还是0,并打印相应的提示信息。

6.2 请编写一个程序,接收两个整数和一个操作符作为参数,实现加、减、乘、除四则运算,并打印结果。

通过完成以上练习题,可以加深对Scala编程语言的理解和掌握。

通过实际操作,我们可以更加熟悉Scala的语法和常用功能,并提升自己在Scala编程方面的能力。

希望本篇Scala练习题库能够为大家提供有效的学习工具,帮助大家在不断练习和实践中掌握Scala编程的技巧和规范。

祝愿大家在Scala编程的学习和实践中取得丰硕的成果!。

c程序设计 第13章 文件 答案解析.

c程序设计 第13章 文件 答案解析.

第十三章例13.1 程序为:#include <stdio.h>#include <stdlib.h>void main(){FILE *fp;char ch,filename[10];scanf("%s",filename);if((fp=fopen(filename,"w"))==NULL){printf("cannot open file\n");exit(0);}ch=getchar();ch=getchar();while(ch!='#'){fputc(ch,fp);putchar(ch);ch=getchar();}putchar(10);fclose(fp);}例13.2 程序为:#include <stdio.h>#include <stdlib.h>void main(){FILE *in, *out;char ch,infile[10],outfile[10];printf("Enter the infile name:\n");scanf("%s",infile);printf("Enter the infile name:\n");scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL){printf("cannot open file\n");exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("cannot open file\n");exit(0);}while(!feof(in)) fputc(fgetc(in),out);fclose(in);fclose(out);}注:在该程序的运行中,每复制一次就会产生一个乱码置于最后,并依次叠加。

数据库13章习题参考答案

数据库13章习题参考答案

B
b a b
C
c f d
A B C
a c b b c d
A
a d
B
b a
A
a c
B
b b
A
a d
B
d a
13、设有属性A、B、C、D,以下表示中不是关系的 是( )。 A.R(A) B.R(A,B,C,D) C.R(AXBXCXD) D.R(A,B) 14.如果一个关系的元组个数是无限的,称为 ( )。 A.无穷关系 B.无限关系 C.有限关系 D.安全
第二章 习题
二、多项选择题
1、按照表达查询的方式不同,关系DML可分( ) A. 关系代数 B. 关系演算 C.元组演算 D.域 演算 2、相容关系满足的条件是( ) 。 A. 属性名相同 B. 关系度数相同 C.相应属性取自同一个域 D.关系元组个数相同 3.关系代数中专门的关系运算包括除法和( ) A. 投影 B. 选择 C.插入 D.联接 4、把关系看成二维表,下列说法正确的是( ) A. 表中允许出现相同的行 B.表中不允许出现相同 的列 C.行的次序可以交换 D.列的次序可以交换
第二章 习题
四、计算题 5、将关系代数中5种基本运算用域关系 演算表达式表示(假设R和S都为属性 名相同的二元关系)。 1>. RS= 2> R-S = 3> R x S = 4> 2 (R) = 5> F (R) =
第二章 习题
五、程序设计题
已知三个关系: EMP (ENO,ENAME,AGE,SEX) WORKS (ENO,CNO,SALAY) COMP (CNO,CNAME,CADDR) 1、写出下列要求的关系代数表达式和元组表达式。 1>、检索50岁以上男职工的工号和姓名。 2>、假设每一个职工只能在一个公司工作,检索工资 超过2000元的男职工的工号和姓名

统计学13章练习试题参考包括答案.docx

统计学13章练习试题参考包括答案.docx

---第一章统计总论一、单项选择题1. 属于统计总体的是(A. 某县的粮食总产量C. 某商店的全部商品销售额)B. 某地区的全部企业某单位的全部职工D. 人数B2. 构成统计总体的个别事物) 称为(。

A. 调查单位 B . 标志值 C. 品质标志 D .总体单位D3. 对某城市工业企业未安装设备进行普查,总体单位是()。

.工业企业全部未安装B.A设备工业企业每一台未安装设备.每个工业企业的未安装设.DC 备每一个工业企业B4. 工业企业的设备台数、产品产 值是()。

A. 连续变. 离散变量B量.前者是连续变量,后者是离.C散变量D前者是离散变量,后者是连续变量D5. 在全国人口普查中 ()。

.男性是品质标.BA 志人的年龄是变量C. 人口的平均寿命是数量标 志D . 全国人口是统计指标B6. 总体的变异性是指( )。

A .总体之间有B. 总体单位之间在某一标志表现上有差异差异C .总体随时间变化而D.变化总体单位之间有差异B7. 几位学生的某门课成绩分67 分、 78 分、 88 分、 89 分、 96 分,“学生成别是 绩”是 ()。

. 品质标.数量标志..标志A 志B C 值 D数量指标B---8.某年级学生四门功课的最高考98 分、 86 分、 88 分和 95 ,这四个数字分分别是A. 指标B.标志C.变量D.标志值是()D9.下列指标中属于质量指标的是(A. 社会总产 B . 产品合格值率C .本)。

产品总成D .人口总数B10.下列属于质量指标的是()A. 产品的产B. 产品的出口C产品的合格品数D. 产品的评价量额.量D11.下列属于离散型变量的是()A. 职工的工B. 商品的价粮食的亩产D. 汽车的产量资格 C. 量---D12. 标志的具体表现是指()A. 标志名称之后所列示的属性或数值B.如性别C. 标志名称之后所列示的属D.性 标志名称之后所列示的数值A13. 社会经济统计的研究对) 象是(。

Python 核心编程 第十三章习题答案

Python 核心编程 第十三章习题答案

#!/usr/bin/env python#-*-coding:utf-8-*-import sysclass MoneyFmt(object):"""13-3.对类进行定制。

"""def__init__(self,value=0.0):#constructorself.value=float(value)self.__str__()def update(self,value=None):#allow updatesif value is not None:try:self.value=float(value)except TypeError,e:print edef__repr__(self):#display as a floatreturn repr(self.value)def__str__(self):#formatted displayval=self.dollarize(self.value)return valdef__nonzero__(self):#boolean testreturn self.valuedef dollarize(self,value):val=str(round(abs(value),2)).split('.')if value<0:sym=1else:sym=0n_value=self.insertSym(val[0])return'-'*sym+'$'+n_value+'.'+val[1] def insertSym(self,value):num=len(value)%3List=list(value)if num>0:List.insert(num,',')for i in range(1,len(value)/3):List.insert(i*3+i+num,',')return''.join(List)def__getattr__(self,attr):return getattr(self.value,attr)import shelveimport timeclass UserData(object):"""13-4.用户注册."""def__init__(self,fn):self.op=shelve.open(fn)def__del__(self):self.op.close()def register(self):nm=self.cmdInput('User Name:')if self.isExit(nm):print'User name"%s"have been exited'%nmreturn Falsepwd=self.cmdInput('Passward:')c_pwd=self.cmdInput('Confirm:')if pwd!=c_pwd:print'Passward not match!'return Falseself.op[nm]=[pwd]print'Register new user successfully!'def login(self):nm=self.cmdInput('User Name:')if not self.isExit(nm):print'User name"%s"not exited!'%nmreturn Falsepwd=self.cmdInput('Passward:')if pwd==self.op[nm][0]:if len(self.op[nm])<2:List=self.op[nm]List.append(self.timer())self.op[nm]=Listprint'Welcome Login!'returnif self.checkLoginTime(nm):print'Welcome Back!you already logined at:%s.'\%(time.ctime(self.op[nm][1]))else:self.op[nm][1]=self.timer()print time.ctime(self.op[nm][1])print'Welcome Login!'else:print'Passward incorrect!'def checkLoginTime(self,nm):if(self.timer()-self.op[nm][1])/3600<=4:return Truereturn Falsedef timer(self):return time.time()def isExit(self,nm):if self.op:for name in self.op.keys():if nm==name:return Truereturn Falsedef updatePwd(self):nm=self.cmdInput('User Name:')if not self.isExit(nm):return Falsepwd=self.cmdInput('Origin Passward:')if pwd==self.op[nm][0]:npwd=self.cmdInput('New Passward:')List=self.op[nm]List[0]=npwdself.op[nm]=Listelse:print'Origin Passward incorrect!'def cmdInput(self,string,flag=True):try:if True==flag:reciever=raw_input(string).strip()else:reciever=raw_input(string).strip()[0].lower() except(KeyboardInterrupt,SystemExit):reciever='Error'print'Abort by manually!'return recieverdef admin(self):enter=ud.cmdInput('Delete user info?YES or NO?',False)if'n'==enter:print self.op.keys()elif'y'==enter:nm=ud.cmdInput('Enter user name:')try:self.op.pop(nm)except Exception,e:print nm,'not found!'returndef menu():prompt='''---------------------[R]egister[L]ogin[U]pdate Pwd[A]dminstrator---------------------'''ud=UserData('DBM')func={'r':ud.register,'l':ud.login,'u':ud.updatePwd,'a':ud.admin}while True:enter=ud.cmdInput(prompt,False)if'Error'==enter:breakif enter in'urla':func[enter]()class Point(object):"""13-5.几何."""def__init__(self,x=0,y=0):self.point_x=xself.point_y=ydef__str__(self):return str((self.point_x,self.point_y)) __repr__=__str__from math import sqrtclass StraightLine(object):"""13-6.几何."""def__init__(self,p1,p2):self.p1=p1self.p2=p2def__repo__(self):return repr((self.p1,self.p2))def length(self):return sqrt(abs(self.p1[0]-self.p2[0])**2\+abs(self.p1[1]-self.p2[1])**2) def slope(self):if0==self.p1[0]-self.p2[0]:return Nonereturn float(self.p1[1]-self.p2[1])\/(self.p1[0]-self.p2[0])import datetime,timeclass TimeFormat(object):"""13-7.数据类"""def__init__(self,t_string=None,fmt=None):"""[t_string]:'17/09/2012/11:40:00'"""self.update(t_string)self.fmt_mode={'MDY':self.__mdy,'MDYY':self.__mdyy,'DMY':self.__dmy,'DMYY':self.__dmyy,'MODYY':self.__modyy}def update(self,t_string=None):if t_string:self.date=datetime.datetime.strptime(t_string,'%d/%m/%Y/%H:%M:%S') self.local=self.date.strftime('%a%b%d%H:%M:%S%Y') else:self.local=time.ctime()self.date=datetime.datetime.strptime(self.local,'%a%b%d%H:%M:%S%Y') return self.datedef display(self,fmt=None):if fmt is None:print self.localelse:print self.fmt_mode[fmt]()def__mdy(self):return self.date.strftime('%m/%d/%y%H:%M:%S')def__mdyy(self):return self.date.strftime('%m/%d/%Y%H:%M:%S') def__dmy(self):return self.date.strftime('%d/%m/%y%H:%M:%S') def__dmyy(self):return self.date.strftime('%d/%m/%Y%H:%M:%S') def__modyy(self):return self.date.strftime('%b%d,%Y%H:%M:%S') class Stack(object):"""13-8.堆栈类。

快学scala第五章习题答案

快学scala第五章习题答案

6 类6.1 改进5.1节的Counter类,让它不要在Int.MaxValue时变成负数6.2 编写一个BankAccount类,加入deposit和withdraw方法,和一个只读的balance属性6.3 编写一个Time类,加入只读属性hours和minutes,和一个检查某一时刻是否早于另一时刻的方法before(other:Time):Boolean。

Time对象应该以new Time(hrs,min)方式构建。

其中hrs以军用时间格式呈现(介于0和23之间)6.4 重新实现前一个类中的Time类,将内部呈现改成午夜起的分钟数(介于0到24*60-1之间)。

不要改变公有接口。

也就是说,客户端代码不应因你的修改而受影响6.5 创建一个Student类,加入可读写的JavaBeans属性name(类型为String)和id(类型为Long)。

有哪些方法被生产?(用javap查看。

)你可以在Scala中调用JavaBeans的getter和setter方法吗?应该这样做吗?javap -c Student 后显示如下6.6 在5.2节的Person类中提供一个主构造器,将负年龄转换为06.7 编写一个Person类,其主构造器接受一个字符串,该字符串包含名字,空格和姓,如new Person("Fred Smith")。

提供只读属性firstName和lastName。

主构造器参数应该是var,val还是普通参数?为什么?必须为val。

如果为var,则对应的此字符串有get和set方法,而Person中的firstName和lastName为只读的,所以不能重复赋值。

如果为var则会重复赋值而报错6.8 创建一个Car类,以只读属性对应制造商,型号名称,型号年份以及一个可读写的属性用于车牌。

提供四组构造器。

每个构造器fc都要求制造商和型号为必填。

型号年份和车牌可选,如果未填,则型号年份为-1,车牌为空串。

C#网络应用编程基础第13章 习题解答

C#网络应用编程基础第13章 习题解答

第13章 Web应用程序开发习题13 参考解答1. 在画线处填上合适的内容,使程序变得正确完整。

//这是一个用户窗体的代码,用户控件名为WebUserControl1.ascxpublic DateTime newdate=DateTime.Now;private bool Tag=true;protected void Page_Load(object sender, System.EventArgs e){if ((!Page.IsPostBack) && Tag){//初始化表示年月日的三个下拉框列表DropDownListYear.SelectedValue=newdate.Year.ToString();DropDownListMonth.SelectedValue=newdate.Month.ToString() ;DropDownListDay.SelectedValue=newdate.Day.ToString() ;}}public void init(DateTime DT){//将下拉框列表表示为初始化的时间DropDownListYear.SelectedValue=DT.Year.ToString();DropDownListMonth.SelectedValue=DT.Month.ToString();DropDownListDay.SelectedValue=DT.Day.ToString();Tag=false;}//这是一个页面的代码,页面名字为WebForm1.aspxprotected void Page_Load(object sender, System.EventArgs e){Response.Write("将一个日期值输入文本框中");}protected void Button1_Click(object sender, System.EventArgs e){try{DateTime dt =DateTime.Parse(TextBox1.Text);Response.Redirect(string.Format("WebForm2.aspx?time={0}&timetext={1}",dt,this.TextBox1.Text));Session["datetime"]= TextBox1.Text;}catch{Response.Write("<script>alert('"+ "输入了无效的日期,请重新输入!"+"');</script>");}}//这是另一个页面的代码,页面名字为WebForm2.aspxprotected WebUserControl1 WebUserControl11;protected void Page_Load(object sender, System.EventArgs e){Response.Write("通过在Url后直接加入参数的方法传递的用户输入的时间为:<br>");Response.Write( _____________________________________ );1第13章 Web应用程序开发2Response.Write("通过Session对象传递的方法传递的用户输入的时间为:<br>");Response.Write( _____________________________________ );Response.Write("WebUserControl11接收到的用户输入的时间为:<br>");//在用户控件中显示时间____________________________________________ ;}【解答】Request.QueryString["timetext"]Session["datetime"].ToString()WebUserControl11.init(DateTime.Parse(Request.QueryString["time"].ToString()))2. 分析统计用户登录次数的例子,回答下列问题。

scala编程练习题

scala编程练习题

scala编程练习题Scala是一种功能强大的编程语言,其结合了面向对象编程和函数式编程的特性。

对于学习和掌握该语言,进行编程练习是非常重要的。

在本文中,我们将介绍一些Scala编程练习题,旨在帮助读者提高他们的Scala编程技能。

练习题一:求列表的和编写一个函数,接受一个整数列表作为参数,然后返回该列表所有元素的和。

解答:```scaladef sumList(list: List[Int]): Int = {list.sum}```练习题二:计算列表中的偶数个数编写一个函数,接受一个整数列表作为参数,然后返回该列表中偶数的个数。

解答:```scaladef countEven(list: List[Int]): Int = {list.count(_ % 2 == 0)}```练习题三:查找列表中的最大值编写一个函数,接受一个整数列表作为参数,然后返回该列表中的最大值。

解答:```scaladef findMax(list: List[Int]): Int = {list.max}```练习题四:翻转列表编写一个函数,接受一个整数列表作为参数,然后返回一个翻转后的列表。

解答:```scaladef reverseList(list: List[Int]): List[Int] = {list.reverse}```练习题五:计算阶乘编写一个函数,接受一个正整数作为参数,然后返回该数的阶乘。

解答:```scaladef factorial(n: Int): Int = {if (n == 0) 1 else n * factorial(n-1)}```练习题六:判断字符串是否是回文编写一个函数,接受一个字符串作为参数,然后判断该字符串是否是回文。

解答:```scaladef isPalindrome(str: String): Boolean = {str == str.reverse}```以上是一些Scala编程练习题的示例解答。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
val prices = List(5.0,20.0,9.95)
val quantities = List(10,2,1)
println((prices zip quantities) map { Function.tupled(_ * _) })
14.8编写一个函数。将Double数组转换成二维数组。传入列数作为参数。举例来说,Array(1,2,3,4,5,6)和三列,返回Array(Array(1,2,3),Array(4,5,6))。用grouped方法。
14.3编写一个函数,从一个整型链表中去除所有的零值。
def removeZero(nums : List[Int]):List[Int]={
nums.filter(_ != 0)
}
println(removeZero(List(3,5,0,2,7,0)))
14.4编写一个函数,接受一个字符串的集合,以及一个从字符串到整数值的映射。返回整型的集合,其值为能和集合中某个字符串相对应的映射的值。举例来说,给定Array("Tom","Fred","Harry")和Map("Tom"->3,"Dick"->4,"Harry"->5),返回Array(3,5)。提示:用flatMap将get返回的Option值组合在一起
为什么这样做得不到正确答案?如果他用如下方式实现呢:
import scala.collection.JavaConversions.asScalaConcurrentMap
val frequencies:scala.collection.mutable.ConcurrentMap[Char,Int] = newjava.util.concurrent.ConcurrentHashMap[Char,Int]
val str = "abcabcac"
val frequencies = str.par.aggregate(HashMap[Char,Int]())(
{
(a,b) =>
a + (b -> (a.getOrElse(b,0) + 1))
}
,
{
(map1,map2) =>
(map1.keySet ++ map2.keySet).foldLeft( HashMap[Char,Int]() ) {
val frequencies = new scala.collection.multable.HashMap[Char,Int] with scala.collection.mutable.SynchronizedMap[Char,Int]
当读到字母c时,他调用
frequencies(c) = frequencies.getOrElse(c,0) + 1
var i = 0
str.foreach{
c=>
map.get(cபைடு நூலகம் match{
case Some(result) => result += i
case None => map += (c-> ListBuffer{i})
}
i += 1
}
map
}
println(indexs("Mississippi"))
println(strMap(a,m).mkString(","))
14.5实现一个函数,作用与mkString相同,使用reduceLeft。
import collection.mutable
trait MyMkString{
this:mutable.Iterable[String]=>
def myMkString = if( this != Nil) this.reduceLeft(_ + _)
14.2重复前一个练习,这次用字符到列表的不可变映射。
import collection.immutable.HashMap
import collection.mutable.ListBuffer
def indexs(str:String):Map[Char,ListBuffer[Int]]={
var map = new HashMap[Char, ListBuffer[Int]]()
def strMap(strArr : Array[String],map : Map[String,Int]) : Array[Int] = {
strArr.flatMap(map.get(_))
}
val a = Array("Tom","Fred","Harry")
val m = Map("Tom"->3,"Dick"->4,"Harry"->5)
import collection.mutable.{Map,HashMap,SortedSet}
def indexs(str:String):Map[Char,SortedSet[Int]]={
var map = new HashMap[Char, SortedSet[Int]]();
var i = 0;
for(c <- str.par) frequencies(c) = frequencies.getOrElse(c,0) + 1
为什么说这个想法很糟糕?要真正地并行化这个计算,他应该怎么做呢?(提示:用aggregate)并行修改共享变量,结果无法估计。
import scala.collection.immutable.HashMap
def divArr(arr:Array[Double],i:Int)={
arr.grouped(i).toArray
}
val arr = Array(1.0,2,3,4,5,6)
divArr(arr,3).foreach(a => println(a.mkString(",")))
14.9 Harry Hacker写了一个从命令行接受一系列文件名的程序。对每个文件名,他都启动一个新的线程来读取文件内容并更新一个字母出现频率映射,声明为:
得到的结果和lst相同
val lst = List(1,2,3,4,5)
println((lst :\ List[Int]())(_ :: _))
println((List[Int]() /: lst)((a,b) => b :: a))
14.7在13.11节中,表达式(prices zip quantities) map { p => p._1 * p._2}有些不够优雅。我们不能用(prices zip quantities) map { _ * _},因为_ * _是一个带两个参数的函数,而我们需要的是一个带单个类型为元组的参数的函数,Function对象的tupled方法可以将带两个参数的函数改为以元俎为参数的函数。将tupled应用于乘法函数,以使我们可以用它来映射由对偶组成的列表。
str.foreach{
c=>
map.get(c) match{
case Some(result) => map(c) = result + i
case None => map += (c-> SortedSet{i})
}
i += 1
}
map
}
println(indexs("Mississippi"))
(result,k) =>
result + ( k -> ( map1.getOrElse(k,0 ) + map2.getOrElse(k,0) ) )
}
}
)
println(frequencies)
并发问题,并发修改集合不安全.修改后的代码和修改前的代码没有什么太大的区别.
14.10 Harry Hacker把文件读取到字符串中,然后想对字符串的不同部分用并行集合来并发地更新字母出现频率映射。他用了如下代码:
val frequencies = new scala.collection.mutable.HashMap[Char,Int]
}
var a = new mutable.HashSet[String] with MyMkString
a += "1"
a += "2"
a += "3"
println(a.myMkString)
14.6给定整型列表lst,(lst :\ List[Int]())(_ :: _ )得到什么?(List[Int]() /: lst)(_ :+ _)又得到什么?如何修改它们中的一个,以对原列表进行反向排序?
14.1编写一个函数,给定字符串,产出一个包含所有字符的下标的映射。举例来说:indexes("Mississippi")应返回一个映射,让'M'对应集{0},'i'对应集{1,4,7,10},依此类推。使用字符到可变集的映射。另外,你如何保证集是经过排序的?
更新scala到版本2.10.0。有可变的可排序的Set,实际上还是TreeSet
相关文档
最新文档