首页

软考 - 初级_程序员

类型:
选择方向:
选择考试:
题型:
为你找到 191 个题目。

() (共15分)
    阅读以下说明和算法,完善算法并回答问题,将解答写在答题纸的对应栏内。
【说明】
    假设以二维数组G[1. . m, 1. . n]表示一幅图像各像素的颜色,则G[i, j]表示区域中点(i,j)处的颜色,颜色值为0到k的整数。
    下面的算法将指定点(i0, j0)所在的同色邻接区域的颜色置换为给定的颜色值。约定所有与点(i0, j0)同色的上、下、左、右可连通的点组成同色邻接区域。
    例如,一幅8*9像素的图像如图1-1所示。设用户指定点(3,5),其颜色值为0,此时其上方(2,5)、下方(4,5)、右方(3,6)邻接点的颜色值都为0,因此这些点属于点(3,5)所在的同色邻接区域,再从上、下、左、右四个方向进行扩展,可得出该同色邻接区域的其他点(见图1-1中的阴影部分)。将上述同色区域的颜色替换为颜色值7所得的新图像如图1-2所示。
 


 

【算法】
    输入:矩阵G,点的坐标(i0, j0),新颜色值newcolor。
    输出:点(i0, j0)所在同色邻接区域的颜色置换为newcolor之后的矩阵G。
    算法步骤(为规范算法,规定该算法只在第七步后结束):
    第一步:若点(i0, j0,)的颜色值与新颜色值newcolor相同,则   (1)   ;
    第二步:点(i0, j0)的颜色值→oldcolor;创建栈S,并将点坐标(i0,j0)入栈;
    第三步:若   (2)   ,则转第七步;
    第四步:栈顶元素出栈->(x, Y),并   (3)   ;
    第五步:1)若点(x, y-1)在图像中且G[x, y-1]等于oldcolor,则(x, y-1)入栈S;
    2)若点(x, y+1)在图像中且G[x, y+1]等于oldcolor,则(x, Y+ I)入栈S;
    3)若点(x-1, y)在图像中且G[x-1, y]等于oldcolor,则(x-1, y)入栈S;
    4)若点(x+1, y)在图像中且G[x+l, y]等于oldcolor,则(x+1, y)入栈S;
    第六步:转   (4)   ;
    第七步:算法结束。
【问题】
    是否可以将算法中的栈换成队列?回答:   (5)   。

()(共15分)
  阅读以下说明和Java代码,请回答问题1和问题2,将解答写在答题纸的对应栏内。
【说明】
  已知类 Stock 和类 cxyjava 都定义在cxyjava.java文件中,类Stock的定义中第14行前共有四行出现了错误,将下面代码修改正确并完善后的输出结果为:
  0:0  
  1:23   

【问题1】
  请指出错误所在行号并给出该行修改后的完整结果。
【问题2】
  请补齐第21行代码中的空缺。
【Java代码】


  阅读以下应用说明、Visual  Basic 开发说明以及程序代码,将应填入   (n)   的字句写在答题纸的对应栏内。
【应用说明】
  某交通灯演示程序启动后,其运行窗口中包括红绿灯标志以及当前红绿灯状态剩余秒数的动态显示(如下图)。红灯与绿灯持续的时间分别为30秒与40秒。持续时间结束时,立即变更红绿灯,并重新显示剩余秒数。


【Visual Basic开发说明】
  在开发过程中,先在窗体内制作形状“红绿灯框架”(长方形,透明),在该框架中,上部制作形状 “红灯”(ShpRed,圆形), 默认属性为透明; 下部制作形状 “绿灯”(ShpGreen,圆形),初始设置其填充方式属性FillStyle为实心,填充颜色属性FillColor为绿色。
  再设置两个图像框(Image1在左,Image2在右),使其能分别装入数字图像文件,以显示当前红绿灯状态剩余的秒数。10 个数字图像文件 N0.bmp~N9.bmp 分别用于显示数字 0、1、…、9,这些文件存放在该应用程序所在目录中,以便在程序运行时按需要选择装入这两个图像框。为使图像文件装入图像框时能自动改变大小以适应图像框,这些图像框的 Stretch 属性都应设置成 (1) 。为使这些数字能每秒变化一次,开发窗体中设置了计时器Timer1,其Enable属性设置成True,其Interval属性设置成1000。
  程序中,全局变量Light用以标志当前红灯(0)或绿灯状态(1),RedT和GreenT分别表示红灯或绿灯状态剩余的秒数。
  计时器 Timer1 的定时过程是在该程序启动1秒后首次执行的,以后每隔1秒执行1次。开发者应考虑对以下四种情况的处理:绿灯持续、绿灯转红灯、红灯持续、红灯转绿灯。
  过程LoadNumber的功能是:将红绿灯剩余秒数N(2位整数)分离出两个一位数i与j,再将其变换成字符,删除前面可能产生的空格,再将数字图像文件Ni.bmp与Nj.bmp装入两个图像框(其中i与j应以相应的数字字符代替)。
 

【Visual Basic程序代码】

()(共15分)
  阅读下列说明和C++代码,请回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
  已知下列程序运行时的输出应为:
    1:1
    1:1
    1:1

【问题1】
  请补齐下述代码中的空缺1和2。
【问题2】
  类Stock的定义中有两处错误,请指出错误所在行号并给出该行修改后的完整结果。
【问题3】
指出该代码是否存在内存泄漏。
【C++程序】

()(共15分)
  阅读以下应用说明以及用 Visual Basic 开发过程中所编写的程序代码,将应填入(n)处的字句写在答题纸的对应栏内。
【应用说明】
  某应用的登录界面如下:


  登录界面中的文本框txtUserID和txtPassword分别用于接受用户输入的用户名和口令,命令按钮为确定(cmdOk)和取消(cmdCancel) 。ADO 数据控件 Adodc1 与数据库EmployeeData连接。在EmployeeData中,表“Users”的字段“UserID”和“Pswd”分别记录了所有的合法用户名和口令。
  在登录界面中,输入正确的用户名和口令并单击“确定”按钮后,就会打开应用程序的主窗口frmApp。用户名或密码输入错误时,给出提示信息并返回登录界面。
 

【Visual Basic程序代码】

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

链表的结点类型定义如下:

   typedef struct Node {
         int data;
   struct Node *next;
  }NODE;

【C语言函数】
 

()(共15分)
  阅读以下说明和C语言函数,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
  函数 count_ months(DATE start, DATE end)的功能是:计算两个给定日期之间所包含的完整月份数。
  该函数先算出起止日期中所含的完整年数,再计算余下的完整月份数。
规定两个相邻年份的同月同日之间的间隔为 1 年。例如,2007.5.30~2008.5.30的间隔为 1 年。若相邻两年中前一年是闰年,并且日期是 2 月 29 日,则到下一年的 2月28日为1年,即2008.2.29~2009.2.28的间隔为1年。
  规定两个相邻月份的相同日之间的间隔为1个月,但需要特别考虑月末的特殊情况。例如,2007.1.29~2007.2.28 的间隔为 1 个月,同理,2007.1.30 30~2007.2.28、2007.1.31~2007.2.28的间隔都是1个月。
  计算起止日期间隔不足一年的完整月份数时,分两种情况:
  1)起止日期不跨年度。先用终止日期的月号减去起始日期的月号得到月份数,然后再根据情况进行修正。例如,起止日期为2008.3.31~2008.9.20,通过月号算出月份数为 6。修正时,通过调用函数 makevalid 将 2008.9.31 改为 2008.9.30,与终止日期2008.9.20比较后,将月份数修正为5。
  2)起止日期跨年度。计算方法如下例所示:对于起止日期2008.7.25~2009.3.31,先计算 2008.7.25~2008.12.25的月份数为 5,再算出 2008.12.25~2009.3.25 的月份数为3,因此2008.7.25~2009.3.31之间的完整月份数为8。
  日期数据类型定义如下:
   typedef struct {
      int year;   int month;   int day; /*日期的年号(4位)、月和日号*/
   }DATE;
  程序中使用的函数cmp_date()、isLeapYear()和makevalid()说明如下:

 

【C语言函数】

()(共15分)
  阅读以下说明和C语言函数,将解答填入答题纸的对应栏内。
【说明】
  下面待修改的C 程序完成的功能是:对于给定的一个长正整数,从其个位数开始,每隔一位取一个数字(即取其个位、百位、万位等数字),形成一个新的整数并输出。例如,将该程序修改正确后,运行时若输入“14251382”,则输出的整数为“4532”。
下面给出的C 程序代码中有五个错误,请指出所有的错误。 
 

【C程序代码】

()(共15分)
  阅读以下说明和流程图,回答问题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”表示之。例如,信息处理技术员考试大纲的标准书号为: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,请写出其校验码。

()(共15分)
  阅读下列说明、图和Java代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
  已知四个类之间的关系如图7-1所示,分别对每个类的方法进行编号,例如Shape的perimeter()为1号,表示为“1:perimeter()”,Rectangle类的perimeter()为2号,表示为“2:perimeter()”,依此类推,其中,每个类的perimeter方法签名相同。


【Java 代码】
  Triangle tr = new Triangle();
  Square sq = new Square();
 

【问题1】 关于上述Java代码中sh 和 tr的以下叙述中,哪两个是正确的(写出编号)。
  ① sh 和 tr分别引用同一个对象;
  ② sh 和 tr分别引用同一类型的不同的对象;
  ③ sh 和 tr分别引用不同类型的不同对象;
  ④ sh 和 tr分别引用同一个对象的不同拷贝;
  ⑤ sh 和 tr所引用的内存空间是相同的。
【问题2】 写出下面消息对应的方法编号(如果该消息错误或者没有对应的方法调用,请填写“无”)。
  tr.height()    (1)   
  sh.perimeter()  (2)   
  sq.height()    (3)   
  sq.perimeter()  (4)   
  sh.height()    (5)   
  tr.perimeter()   (6)   
【问题3】 下列赋值语句中哪两个是合法的(写出合法赋值语句的编号)。
  ① sq = sh;  ② sh = tr;  ③ tr = sq;  ④ sq = tr;  ⑤ sh = sq; 

上一页

第 4 页