快学scala第十三章习题答案
- 格式:doc
- 大小:43.00 KB
- 文档页数:4
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编程的学习和实践中取得丰硕的成果!。
第十三章例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);}注:在该程序的运行中,每复制一次就会产生一个乱码置于最后,并依次叠加。
---第一章统计总论一、单项选择题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. 社会经济统计的研究对) 象是(。
#!/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.堆栈类。
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,车牌为空串。
第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编程技能。
练习题一:求列表的和编写一个函数,接受一个整数列表作为参数,然后返回该列表所有元素的和。
解答:```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编程练习题的示例解答。
Scala学习⼿册(LearningScala)第四章习题---恢复内容开始---1、写⼀个函数,给定⼀个圆的半径,计算这个圆的⾯积。
scala> def area(r:Double):Double = r*r*3.14area: (r: Double)Doublescala> area(5)res30: Double = 78.5也可以使⽤math.pow(r,2)来计算平⽅2、对练习1中的函数提供⼀个替代形式,将半径作为⼀个String,如果调⽤这个函数时提供了⼀个空String会发⽣什么?scala> def ares(r:String):Double = {| r.isEmpty match {| case true => 0| case false => math.pow(r.toDouble,2)*math.Pi| }| }ares: (r: String)Doublescala> ares("534")res35: Double = 895843.994727051scala> ares("")res36: Double = 0.03、写⼀个递归函数,可以5、10、15....地打印从5到50的值,但不要使⽤for或while循环,可以实现尾递归吗?scala> @annotation.tailrec| def printnum(start:Int,max:Int):Unit = {| if(start <= max){| println(start)| printnum(start+5,max)| }| }printnum: (start: Int, max: Int)Unitscala> printnum(5,20)51015204、写⼀个函数,取毫秒值,返回⼀个字符串,按天、⼩时、分和秒描述这个值,输⼊值的最近类型是什么呢?object Point{def main(args: Array[String]): Unit = {val tm:String = "1502036122000"val a = tranTimeToLong(tm.toLong)println(a)}def tranTimeToLong(tm:Long) = {val secs = tm / 1000val days = secs / (24*60*60)val hours = (secs % (24*60*60)) / (60*60)val minutes = (secs % 3600 ) / 60val seconds = secs % 60s"$days days,$hours hours, $minutes minutes,$seconds seconds"}}5、写⼀个函数,计算第⼀个值以第⼆个值为指数的幂。