[计算机类试卷]2007年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc

上传人:rimleave225 文档编号:492654 上传时间:2018-11-30 格式:DOC 页数:16 大小:189.50KB
下载 相关 举报
[计算机类试卷]2007年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc_第1页
第1页 / 共16页
[计算机类试卷]2007年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc_第2页
第2页 / 共16页
[计算机类试卷]2007年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc_第3页
第3页 / 共16页
[计算机类试卷]2007年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc_第4页
第4页 / 共16页
[计算机类试卷]2007年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、2007年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析 1 阅读以下说明和流程图,回答问题 1和问题 2。【说明】 为便于管理,每本正式出版的图书都印有国际标准书号。标准书号由 “ISBN”和 10个数字组成,其格式为: ISBN组号 -出版者号 -书名号 -校验码。其中,校验码是根据前面 9个数字计算得到的,用于计算机自动校验。假设标准书号的 10个数字依次是 a(1), a(2), ,a(10),则校验码 a(10)的设置应使 S=10*a(1)+9*a(2)+8*a(3)+1*a(10) 能被 11整除。如果校验码 a(10)应设置成 10,则规定以 “X”表

2、示之。例如,信息处理技术员考试大纲的标准书号为: ISBN 7-302-11191-X。第 1段上的数字 “7”是国际 ISBN中心分配给中国 ISBN中心管理的组号。第 2段上的 “302”表示清华大学出版社。标准书号的校验过程如图 1-1所示,计算校验码的过程如图 1-2所示,其中,Mod(S, 11)表示 S除以 11得到的余数。【流程图】1 请填补流程图中的空缺 (1) (4)。 2 设 “程序员考试大纲 ”标准书号前 9个数字为 7-302-08493,请写出 其校验码。 3 阅读以下说明和 C语言函数,将解答填入对应栏内。 【说明】 下面待修改的 C程序完成的功能是:对于给定的一个

3、长正整数,从其个位数开始,每隔一位取一个数字 (即取其个位、百位、万位等数字 ),形成一个新的整数并输出。例如,将该程序修改正确后,运行时若输入 “14251382”,则输出的整数为“4532”。 下面给出的 C程序代码中有五个错误,请指出所有的错误。 【 C程序代码】 01 #include stdio.h 02 03 int main() 04 05 long n, num; 06 int i; 07 08 do 09 printf(“请输入一个正整数: “); 10 scanf(“%ld“, n); 11 while(n = 0); 12 k = 1; 13 for (i = 1; n

4、= 0; i+) 14 if (i % 2 = 1) 15 num= num+ (n % 10) * k; 16 k = k * 10; 17 18 n = n / 10; 19 20 printf(“新数据为 : %d n“,num); 21 return 0; 22 4 阅读以下说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。【说明】 函数 count months(DATE start, DATE end)的功能是:计算两个给定日期之间所包含的完整月份数。 该函数先算出起止日期中所含的完整年数,再计算余下的完整月份数。 规定两个相邻年份的同月同日之间的间隔为 1年。例如, 20

5、07.5.302008.5.30的间隔为 1年。若相邻两年中前一年是闰年,并且日期是 2月 29日,则到下一年的 2月 28日为 1年,即 2008.2.292009.2.28的间隔为 1年。 规定两个相邻月份的相同日之间的间隔为 1个月,但需要特别考虑月末的特殊情况。例如,2007.1.292007.2.28的间隔为 1个月,同理, 2007.1.302007.2.28、 2007.1.312007.2.28的间隔都是 1个月。 计算起止日期间隔不足一年的完整月份数时,分如下两种情况。 (1)起止日期不跨年度。先用终止日期的月号减去起始日 期的月号得到月份数,然后再根据情况进行修正。例如,起

6、止日期为 2008.3.312008.9.20,通过月号算出月份数为 6。修正时,通过调用函数 makevalid将 2008.9.31改为2008.9.30,与终止日期 2008.9.20比较后,将月份数修正为 5。 (2)起止日期跨年度。计算方法如下例所示:对于起止日期 2008.7.252009.3.31,先计算2008.7.252008.12.25的月份数为 5,再算出 2008.12.252009.3.25的月份数为 3,因此 2008.7.252009.3.31之间的完整月份数为 8。 日期数据类型定义如下: typedef struct int year; int month;

7、int day; /*日期的年号 (4位 )、月和口号 */ DATE; 程序中使用的函数 cmp_date()、 isLeap Year()和 makevalid()说明如下。【 C语言函数】 int count_months (DATE start, DATE end) int years = 0, months = 0; DATE r; if (cmp_date(start,end) 0) r = start; start = end; end = r; years = end.year - start.year; /*计算年数 */ r = start; r.year = end.ye

8、ar; if (cmp_date(r, end) 0) /*修正年数 */ (1); r.year-; if (r.year end.year) /*跨年度时,先计算到 12月的月份数 */ months =(2); r.month = 12; months += (end.month + 12 - r.month) % 12; r.year = end.year; r.month = end.month; makevalid (3); /*将日期 r修正为有效日期 */ if (cmp_date(r,end) 0) /*修正月份数 */ (4); months +=(5); /*计算总月份数

9、 */ return months; 使用的函数 cmp_date()、 isLeap Year()和 makevalid()说明如下。 5 阅读以下说明和 C语言函数,将应填入 (n)处 的字句写在对应栏内。【说明】 函数 sort (NODE *head)的功能是;用冒泡排序法对单链表中的元素进行非递减排序。对于两个相邻结点中的元素,若较小的元素在前面,则交换这两个结点中的元素值。其中, head指向链表的头结点。排序时,为了避免每趟都扫描到链表的尾结点,设置一个指针 endptr,使其指向下趟扫描需要到达的最后一个结点。例如,对于图 4-1(a)的链表进行一趟冒泡排序后,得到图 4-1(

10、b)所示的链表。 链表的结点类型定义如下: typedef struct Node int data; struct Node *next; NODE;【 C语言函数】 void sort (NODE *head) NODE *ptr,*preptr, *endptr; int tempdata; ptr = head - next; while (1) /*查找表尾结点 */ ptr = ptr - next; endptr = ptr; /*令endptr指向表尾结点 */ ptr =(2); while(ptr != endptr) while(3) if (ptr- data ptr-

11、 next- data) tempdata = ptr- data; /*交换相邻结点的数据 */ ptr- data = ptr-next- data; ptr- next- data = tempdata; preptr =(4); ptr = ptr - next; endptr =(5); ptr = head- next; 6 阅读以下应用说明以及用 Visual Basic开发过程中所编写的程序代码,将应填入(n)处的字句写在对应栏内。【应用说明】 某应用的登录界面 如下: 登录界面中的文本框 txtUserID和txtPassword分别用于接受用户输入的用户名和口令,命令按钮为

12、 “确定 (cmdOk)”和“取消 (cmdCancel)”。 ADO数据控件 Adodc1与数据库 EmployeeData连接。在EmployeeData中,表 “Users”的字段 “UserID”和 “Pswd”分别记录了所有的合法用户名和口令。 在登录界面中,输入正确的用户名和口令并单击 “确定 ”按钮后,就会打开应用程序的主窗口 fxmApp。用户名或密码输入错误时,给出提示信息并返回登录界面。【 Visual Basic程序代码】 Private Sub cmdOK Click() Adodcl.ConnectionString = “Provider=Microsoft.Jet

13、.OLEDB.4.0;Data Source=D:dataEmployeeData.mdb;Persist Security Info=False“ Adodcl.RecordSource = “select *(1)“ Adodcl.Refresh Do usrname =(2) pwd = Adodc1.Recordset(“Pswd“) Adodc1.Recordset.MoveNext Loop Until (usrname =(3) Or (Adodc1.Recordset.EOF) If usrname txtUserID.Text Then MsgBox “无效的用户 ID, 请

14、重新输入 !“, , “提示信息 “ Else If (4)Then MsgBox “欢迎进入系统主界面 !“, , “提示信息 “ Unload me (5) Else MsgBox “无效的用户密码 , 请重新输入 !“, , “提示信息 “ End If End If End Sub 7 阅读以下应用说明、 Visual Basic开发说明以及程序代码,将应填入 (n)的字句写在对应栏内。 【应用说明】 某交通灯演示程序启动后,其运行窗口中包括红绿灯标志以及当前红绿灯状态剩余秒数的动态显示 (如下图 )。红灯与绿灯持续的时间分别为 30秒与 40秒。持续时间结束时,立即变更红绿灯,并重新

15、显示剩余秒数。【 Visual Basic开发说明】 在开发过程中,先在窗体内制作形状 “红绿灯框架 ”(长方形,透明 ),在该框架中,上部制作形状 “红灯 ”(ShpRed,圆形 ),默认属性为透明;下部制作形状 “绿灯 ” (ShpGreen,圆形 ),初始设置其填充方式属性 FillStyle为实心,填充颜色属性 FillColor为绿色。 再设置两个图像框 (Image1在左, Image2在右 ),使其能分别装入数字图像文件,以显示当前红绿灯状态剩余的秒数。 10个数字图像文件 N0.bmp N9.bmp分别用于显示数字 0、 1、 、 9,这些文件存放在该应用程序所在目录中,以便在

16、程序运行时按需要选择装入这两个图像框。为使图像文件装入图像框时能自动改变大小以适应图像框,这些图像框的 Stretch属性 都应设置成 (1)。为使这些数字能每秒变化一次,开发窗体中设置了计时器 Timcr1,其 Enable属性设置成 True,其 Interval属性设置成 1000。 程序中,全局变量 Light用以标志当前红灯 (0)或绿灯状态 (1),RedT和 GreenT分别表示红灯或绿灯状态剩余的秒数。 计时器 Timer1的定时过程是在该程序启动 1秒后首次执行的,以后每隔 1秒执行 1次。开发者应考虑对以下四种情况的处理:绿灯持续、绿灯转红灯、红灯持续、红灯转绿灯。 过程L

17、oadNumber的功能是:将红绿灯剩余秒数 N(2位整数 )分离出 两个一位数 i与 i,再将其变换成字符,删除前面可能产生的空格,再将数字图像文件 Ni.bmp与Nj.bmp装入两个图像框 (其中 i与 j应以相应的数字字符代替 )。【 Visual Basic程序代码】 Public Light AS Integer, RedT As Integer, GreenT As IntegerPrivate Sub Form_Load() Light = 1 : GreenT = 40 : RedT - 0 初始化设置 End SubPrivate Sub Timer1_Timer() 计 时

18、器定时过程 If Light = 1 Then 绿灯状态时 (2) If GreenT 0 Then 绿灯持续时 Call LoadNumber (GreenT) 调用过程,显示数字 GreenT Else 绿灯转红灯时 ShpRed.FillStyle = 0 置红灯形状实心 ShpRed.FillColor = vbRed 为红灯形状填充红色 ShpGreen.FillStyle = 1 置绿灯形状透明 Call LoadNumber(30) Light = 0 : RedT = 30 End IfElse 红灯状态时 RedT = RedT - 1 If RedT 0 Then 红灯持续

19、时 Call LoadNumber(RedT) Else 红灯转绿灯时 ShpRed.FillStyle = 1 ShpGreen.FillStyle = 0 ShpGreen.FillColor = vbGreen (3) Light = 1 : GreenT = 40 End IfEnd IfEnd SubSub LoadXumber (N As Integer) 根据剩余秒数 N将数字图 象装入图像框 Dim i As Integer, j As Integer i = Int( (4) ) j = (5) Image1.Picture = LoadPicture(“N“ 03 clas

20、s Stock 04 protect: 05 (1) ; 06 Stock(iht n, int pr=1) 07 shares = n; share_val=pr; 08 ; 09 void Stock(); 10 public: 11 /成员函数 12 void output() 13 (2) shares “:“ share val endl; 14 15 private: 16 /成员变量 17 int shares; 18 int share_val; 19 ; 20 21 void main() 22 Stock a(1); a.output(); 23 Stock b; b.ou

21、tput(); 24 Stock c = Stock(); c.output(); 25 8 请补齐下述代码中的空缺 1和 2。 9 类 Stock的定义中有两处错误,请指出错误所在行号并给出该行修改后的完整结果。 10 指出该代码是否存在内存泄漏。 11 阅读以下说明和 Java代码,请回答问题 1和 问题 2。 【说明】 己知类 Stock和类 cxyjava都定义在 cxyjava.java文件中,类 Stock的定义中第 14行前共有四行出现了错误,将下面代码修改正确并完善后的输出结果为: 0:0 1:23 【 Java代码】 01 public class Stock 02 stat

22、ic 03 shares = 0; 04 share val = 0.0; O5 06 public Stock()getData(); 07 public Stock(int n, iht pr=0) 08 shares = n; 09 share val = pr; 10 getData(); 11 12 public void getData() 13 System.out.println(shares + “:“+share_val); 14 15 private int shares; 16 private int share_val; 17 ; 18 19 public class

23、 cxyjava 20 public static void main(String args) 21 Stock a = (1) ; 22 Stock b = new Stock(1,23); 23 /其他无输出代码省略 24 25 11 请指出错误所在行号并给出该行修改后的完整结果。 12 请补齐第 21行代码中的空缺。 2007年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷答案与解析 1 【正确答案】 (1)(11-I)*aI(或 I*a(11-I) (2)9 (3)S+(11-I)*aIS( 或 S+(I+1)*a(10-I)S) (4)MOD(11-R, 11) 2

24、【正确答案】 9 【试题解析】 制订标准书号的目的是实现图书的国际统一编码,以便于实现计算机化的图书管理信息系统,使出版社内的图书管理、书库中的图书管理以及书店的图书销售管理具有更高的工作效率和管理水平。 标准书号采用分段编码,总长度是统一的,而段的长度是不统一的。例如,中国的出版者号规定为 2 7位数字。 对较大的出版社分配比较短的码,留出较长的书名号为较多的书进行编码。 标准书号的最后一位是校验码。设置校验码可以大大减少录入错误造成的管理混乱。 校验码一般由计算机程序产生。当操作人员录入前 9个数字后,计算机就会自动启动计算校验码的过程,输出正确的校验码。 在书店 (或书库 ),不论是建库

25、还是查询检索,在手工输入带校验码的标准书号后,计算机就会自动启动校验过程,判断是否输入错误。 计算校验码的过程中,首先要计算S=10*a(1)+9*a(2)+8*a(3)+2*a(9) ,这就要采用循环。在循环前应设置初始值S=0,在循环体内应执行 S+(11-I)*a(1)S 或 S+ (I+1)*a(10-I)S( 其中的乘号 “*”不要丢失 )。该循环应对循环变量 I=1 9进行 (步长默认为 1),因此, (2)处应填 9,(3)处填 S+(11-I)*a(I)S 或 S+(I+1)*a(10-I)S 。 接着再计算该 S值除以 11的余数R。显然 0 R 10。由于 R与校验码之和应

26、能被 11整除,因此,校验码应等于MOD(11-R, 11)(填 11-R者没有考虑 R=0的情况 )。从而 (4)处应填 MOD(11-R,11)。在校验码等于 10的情况,还应以 符号 X表示之。 对标准书号的校验过程中,首先要将校验码为 x的情况转换成数据 10,以便于后续计算。为了计算S=10*a(1)+9*a(2)+8*a(3)+1*a(10) ,需要采用循环。在循环前,应设置初始值S=0,对循环变量 I从 1到 10(步长默认为 1),执行语句 S+(10-I+1)*a(I)S 或S+I*a(11-I)S ,因此, (1)处填 (11-I)*a(I)或 I*a(11-I)。 计算出

27、 S的值后,还应判断 S除以 11的余数是否为 0。若余数为 0,说明 S能够被 11整除,表示校验结果正确:若余数非 0,则说明 输入的标准书号有错 (可能是校验码输入有错,也可能是前面的数字输入有错 )。这时计算机会输出错误信息,请操作人员仔细校对改正。 3 【正确答案】 错误 1:变量 k没有声明 (或定义 )。 错误 2:变量 num没有初始化,或者 num应初始化为 0。 错误 3:第 10行 scanf函数参数错,或者 “scanf(“%1d“,n);”中的 n应该为 “”。由于变量 num没有赋初值,该语句运行的结果导致 num的值是不确定的。 在本题给出的程序中,出现了如下错误

28、。 (1)使用的变量 k没有定义 (语法错误,编译程序报告: k是未定义的标识符 )。 (2)变量 num没有赋初始值就直接使用 (动态语义错误 ),应将其初始值设为 0。由于 num是局部变量,使用变量 num的语句为 “num=num+(n%10)*k”,系统不保证对其进行初始化,导致程序的运行结果不确定。 (3)第 14行,误把 “=”作为关系运算符 “等于 ”(语法错误 ), (4)第 10行,输入变量时忘记使用地址符号 (动态语义错误 ),运行时变量 n不能正确接收输入的数据。 (5)第 13行,循环条件错误,导致无穷循环。 考生应多上机调试程序,这样就可以熟悉常见的程序错误,从而提

29、高编程水平和效率。 4 【正确答案】 (1)years-,或其等价形式 (2)12 - r.month,或其等价形式 (3) /*计算年数 */ 显然,上式算出的年份数可能产生误差 (多算一年,即 end的月号和日期要小于start的日期 ),因此可能需将 years减去 1后进行修正。因此,空 (1)处应填入“years-”。 接下来计算月份数。由题目中的说明,计算起止日期间隔不足一年的完整月份数时,分如下两种情况。 (1)起止日期跨年度。计算方法如下例所示:对于起止日期 2008.7.252009.3.31,先计算 2008.7.252008.12.25的月份数为 5,再算出 2008.1

30、2.252009.3.25的月份数为 3,因此 2008.7.252009.3.31之间的完整月份数为 8。以下代码处理该情况: if (r.year end.year) /*跨年度时,先计算到 12月的月份数 */ months = (2) ; r.month = 12; 因此,空 (2)处应填入 “12-r.month”。 (2)起止日期不跨年度。先用终止日期的月号减去起始日期的月号得到月 份数,然后再根据情况进行修正。例如,起止日期为 2008.3.312008.9.20,通过月号算出月份数为 6。修正时,通过调用函数 makevalid将 2008.9.31改为 2008.9.30,与

31、终止日期 2008.9.20比较后,将月份数修正为 5。以下代码处理该情况: months += (end.month + 12 - r.month) % 12; r.year = end.year; r.month = end.month; makevalid( (3) ); /*将日期 r修正为有效日期 */ if (cmp_date(r,end) 0) /*修正月份数 */ (4) ; 根据函数 makevalid的接口说明,其实参应取变量 r的地址,因此空 (3)处填入“ while ( (1) ) /*查找表尾结点 */ ptr = ptr - next; endptr = ptr;

32、 /*令 endptr指向表尾结点 */ 显然,空 (1)处应填入 “ptr- next”,这样循环结束时, ptr指向表尾结点。若填入 “ptr”,则循环结束时, ptr为空指针。 进行冒泡排序时,从头至尾依次比较逻辑上相邻的两个结点的数据,如果小元素在前大元素在后,则交换。这样,经过一趟扫描,就将最大元素交换到了表的最后。下一趟可将次大元素交换到最大元素之前。显然,空 (2)处应填入 “head-next”。 由于程序设置的 endptr用于指示出每趟扫描需到达的最后一个结点, ptr用于依次扫描链表中的结点,因 此空 (3)处的循环条件为 “ptr != endptr”。 显然,指针 p

33、reptr起的作用是指向 ptr的前驱结点,因此, ptr每向后修改一次,相应地 preptr就要修改一次,空 (4)处应填入 “ptr”。本趟循环结束后,下一趟扫描也就确定了,因此在空 (5)处填入 “preptr”。 6 【正确答案】 (1)from Users (2)Adodc1.Recordset(“UserID“) (3)txtUserID.Text (4)txtPassword.Text=pwd (5)frmApp.Show 【试题解析】 本题考查 VB开发数据库应用能力。 代码中的空 (1)处是典型的 SQL查询语句,应填入 “from Users”。 一般情况下,用户登录某系统

34、时,都要输入用户名和口令,与系统记录的用户名和口令进行比较,通过后才能登录系统。参照“pwd=Adodc1.Recordset(“Pswd“)”,空 (2)处应填入“Adodc1.Recordset(“UserlD“)”,从数据库中取出用户名与用户在登录界面输入的用户名 txtUserlD.Text进行比较,若相同,则再取出该用户的口令进行比对,因此空 (3)处应填入 “txtUserID.Text“。空 (4)处用于比较口令,填入 “txtPassword.Text= pwd“,空 (5)处填入 “frmApp.Show“。 7 【正确答案】 (1)True (2)GreenT=GreenT

35、-1 (3)Call LoadNumber(40),或 LoadNumber(40) (4)N/10 (5)N-i*10 【试题解析】 试题中对开发过程以及所用的技术都已做了详细描述。 将图像文件装入图像框时,一般都需要注意图像人小的匹配问题。如果图像框的 Stretch(伸展 )属性的值设置为 True,则待装的图像文件就会自动改变大小以适应图像框。因此, (1)处应填 True。 题中的程序代码有三个过程块。 第一个过程是公共模块,用于定义全局变量。由于红绿灯标志 Light、红灯剩余时间 RedT和绿灯剩余时间 GreenT,在计时器的每次定时过程中都要使用,而且退出该过程后依然需要保持

36、其值,下次再进入该过程时将继续在此基础上使用,所以,这三个整型变量都需要在该公共模块中定义成全局变量,并进行初始化:灯的标志为绿色 (1),绿灯持续时间为 40秒,红灯持续时间为 0秒。 第二个过程是计时器的定时过程,每秒执行一次。因此,需要根据当前红绿灯的状态,对图像框中的数字图像文件进行更新,有时,还需要转变红绿灯的显示。 该过程的执行逻辑可以先用结构化的文字描述如下 (注意用缩格体现层次 )。 如果当前为绿灯,则 绿灯剩余时间减 1 如果绿灯时间非 0(绿灯持续 ) 则按绿灯剩余时间更新图像框 如果绿灯剩余时间为 0(绿灯转红灯 ) 则关闭绿灯而显示红灯,并设置红灯标志以及红灯剩余时间

37、如果当前为红灯,则 红灯剩余时间减 1 如 果红灯时间非 0(红灯持续 ) 则按红灯剩余时间更新图像框 如果红灯剩余时间为 0(红灯转绿灯 ) 则关闭红灯而显示绿灯,并设置绿灯标志以及绿灯剩余时间 从以上分析可以知道, (2)处应填 GreenT=GreenT-1(绿灯剩余时间减 1)。 在程序中,红灯与绿灯用两个圆的形状宋实现。如果红灯形状的风格属性设置成实心,且填充属性设置成红色,则红灯形状就会在运行时亮起红色。如果红灯形状的风格属性设置成空心,且填充属性设置成透明,则运行时红灯就不亮了。绿灯的情况也是这样。 程序中,按照红 绿灯的剩余时间更新图像框采用了子过程 LoadNumber来实现

38、。该子过程的参数就是当前灯的剩余时间。 绿灯持续时,就应该用调用语句 Call LoadNumber (GreenT)来更新图像框; 红灯持续时,就应该用调用语句 Call LoadNumber (RedT)来更新图像框; 红灯刚亮时,就应该用调用语句 Call LoadNumber (30)来更新图像框; 绿灯刚亮时,就应该用调用语句 Call LoadNumber (40)来更新图像框。 因此, (3)处应填写 Call LoadNumber (40)。调用语句中的 Call也可以省略。 程序中的第三个过程就是子过程 LoadNumber。形式参数 N就是灯的剩余时间, N的数值就是在图像

39、框中显示的两位数字所表示的值。 因此,在该过程中,应先根据数值 N求出其十位数字 (可能为 0)和个位数字。 N/10的整数部分 Int(N/10)就是 N的十位数。因此, (4)处应填 N/10。 已知 N的十位数为 i,则 N的个位数 j便是 N-i*10。因此, (5)处应填写 N-i*10。 在图像框 Image1中装入指定图像文件的语句是: Image1.Picture=LoadPicture(“图像文件名 “) 对指定的 i,需要装入图像文件 Ni.bmp。其中的 i应该用数值 i所对应的字符来代替。 数值变量 i所对应的字符为 str(i),但其中可能含有空格,而文件名中,有没有

40、空格将会改变所指的文件。所以,还需要删除其中的空格。函数 Trim能删除字符串前后的所有空格 (当然本题中只要删除前导空格就可以了,因为尾部并不存在空格 )。 “N“ 或 share_val=(int)0.0; 错误 4:第 7行,修改为: public Stock(int n,int pr) 12 【正确答案】 new Stock(),或者 new Stock(0,0) 【试题解析】 Java代码中,一个文件只能有一个和文件同名的公共类,因此第一行的 Stock类不能为公共类,需 要去掉 public修饰符。因为静态的初始化区域只能对类的静态变量进行 初始化,而 shares和 share_val不是静态变量,因此需要把第二行的 static去掉,并且静态初始化区只在加载类的时候初始化一次。因为 Java是强类型的语言,share_val是整形变量,因此第 4行给 share_val赋值 0.0会出现类型错误,因此需要增加强制类型转换或把 0.0更改为 0。第 7行 Stock类的构造函数没有默认值的语法,因此需要将默认值去掉。 程序输出的第一行为 0:0,而成员变量的初始化值都为 0,因此仅需要调用构造函数 Stock()即可,也可明确指定初始化构造函数的参数值 Stock(0,0)。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1