1、初级程序员下午试题-80 及答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【说明】在一个矩阵中,如果其零元素的个数大大多于其非零元素的个数时,称这样的矩阵为稀疏矩阵。若直接用一个两维数组表示稀疏矩阵,会因存储太多的零元素而浪费大量的内存空间。通常采用三元组数组表示稀疏矩阵。稀疏矩阵的每个非零元素用一个二元组来表示:即非零元素的行号、列号和它的值。然后按某种顺序将全部非零元素的三元组存于一个数组中。例如对于以下两维数组。int x54=1,0,0,0,0,5,0,0,0,0,7,2,6,0,0,0,0,3,0,8;可用以下数组 a 来表示:in
2、t a3=5,4,7,0,0,1,1,1,5,2,2,7,2,3,2,3,0,6,4,1,3,4,3,8;其中三元数组 a 的第 1 行元素的值分别存储稀疏矩阵 x 的行数、列数和非零元素个数。下面的流程图描述了稀疏矩阵转换的过程。【流程图】(分数:15.00)填空项 1:_二、试题二(总题数:1,分数:15.00)2.1】void sort(char *s,int num)int i,j-num;char t;while(j-1)for(i=0;ij;i+)if(sisi+1)t=si;si=si+1;si+1=t;void main()char *s=“CEAedea“;sort(s,5)
3、;printf(“%s“,s);上述程序的结果是 (1) 【函数 2.2】void main()union int ig6;Char s12; try;try. ig0=0x4542; try.ig1=0x2049;try. ig2=0x494a; try.ig3=0x474e;try. ig4=0x0a21; try.ig5=0x0000;pintf(“%s“,try, s);上述程序的结果是 (2) 【函数 2.3】void main()char *letter5= “ab“,“efgh“,“ijk“,“nmop“,“st“;char *p;int i;p=letter;for(i=0;i
4、4;i+) .printf(“%s“,pi);上述程序的结果是 (3) 【函数 2.4】main()int i=4,j=6,k=8,*p=int x,y,z;x=p=y=3*-*p/(*q)+7;z=*(r=printf(“x=%d,y=%d,z=%d“,x,y,z);上述程序的结果是 (4) 【函数 2.5】int a=5,4,3,2,1 ;void main()int i;int f=a0;int x=2;for(i=0;i5;i+)f+=f*x+ai;printf(“%d“,f);上述程序的结果是 (5) (分数:15.00)填空项 1:_三、试题三(总题数:1,分数:15.00)3.【
5、说明】将 A,B,C,D,E,F 这 6 个变量排成如图(a)所示的三角形,这 6 个变量分别取1,6中的整数,且均不相同。求使三角形三条边上的变量之和相等的全部解。图(b)就是一个解。(分数:15.00)填空项 1:_四、试题四(总题数:1,分数:15.00)4.【说明】下面一段程序从给定的数组 b 中找出值最小的元素,并输出该元素的数组下标、内存地址 minaddr 以及元素值本身。函数 findmin 负责在给定的数组中查找最小值,并返回最小值所在的内存地址,函数有三个参数:array 是所要处理的数组;size 是数组的大小;index 负责从函数返回具有最大值的元素在数组中的数组下标
6、。请填充空白,使其成为一个合乎要求的完整程序。【程序】/程序开始#includeiostream.hint *findmin(int *array, int size, int void main()/* 变量定义部分 */int b10 = 34, 34, 23, 89, 1, 2, 13, 42, 5, 54;(1) ;int idx;/* 寻找最小值 */minaddr = findmin(b, sizeof(b)/sizeof(int), idx);/* 输出最小值的有关信息 */cout “Min value index: “idxend1“Min value address: “m
7、inaddrend1“Min value: “ (2) end1;/* 函数 findmin 的定义部分 *int *findmin(int *array, int size, int /max 是当前具有最小值的数组元素下标值for(int i = 1; (3) ; i+)if(arrayi (4) )min = i;(5) ;return array + min;/返回最小值所在内存地址(分数:15.00)填空项 1:_五、试题五(总题数:1,分数:15.00)5.【说明】在一些应用场合中,需要对用户的输入数据进行检查监控。以下 VisualBasic 程序实现了对新添加到 List 列表
8、的内容进行监控,拒绝向 List 列表添加重复信息。例如,在 List 列表中存在元素“a01001;a01002”,如果用户输入数据为“a01001”或“a01002”,系统则弹出提示信息,拒绝将新数据加入 List 列表;如果用户输入的数据不同于 List 列表中的任何一个元素,则作为新元素加入 List 中。VisualBasic 界面显示如图所示。根据程序功能说明,完成程序代码。(分数:15.00)填空项 1:_六、试题六(总题数:1,分数:15.00)6.【说明】以下程序实现了利用鼠标任意移动该圆形的位置,仔细阅读代码和相关注释,将程序补充完整。【代码 6】import java.a
9、wt.*;import java.awt.event.*;public class CIUSAMPLE extends Frame implements MouseMotionListener, MouseListenerstatic CIUSAMPLE frm=new CIUSAMPLE ();int x=70,y=60,posX=70,posY=60,dx,dy;public static void main ( String args)frm.setTitle (“Dragging a circle“);frm.setSize ( 200,150 );(1) frm.addMouseMo
10、tionListener ( frm );frm. setVisible ( true );public void mousePressed ( MouseEvent e )(2) dy=e.getY () -posY;public void mouseDragged ( MouseEvent e )(3) y=e.getY () -dy;if ( dx0 (4) public void paint ( Graphics g )g.setColor ( Color. pink ); / 设置绘图颜色为粉红g.fillOval ( x,y,50,50 ); /以基准点为图形的左上角绘出圆形(5)
11、 posY=y;public void mouseMoved ( MouseEvent e ) public void mouseReleased ( MouseEvent e ) public void mouseEntered ( MouseEvent e ) public void mouseExited ( MouseEvent e ) public void mouseClicked ( MouseEvent e ) (分数:15.00)填空项 1:_七、试题七(总题数:1,分数:15.00)7.【说明】以下代码实现了当用户退出界面时,判断 TextEdit 中的文字是否发生改变,弹
12、出对话框判断,让用户选择是否保存文件或取消退出界面操作。阅读下面的代码,将其补充完整。【代码 7-1】Begin VB.Form Forml/.窗体描述(略)Begin VB.TextBox TextEditHeight = 1830Left = 180Tablndex = 0Text = “TextEdit“Top = 360Width = 3885End/.窗体描述(略)End【代码 7-2】Dim txtchange As BooleanDim myval As StringPrivate Sub Form Load ()TextEdit.Text: “CIU, 中国软考联盟!“txtc
13、hange = FalseEnd Sub【代码 7-3】Private Sub TextEdit_Change ()Static notchange As Boolean(1) notchange = TreeEnd SubPrivate Sub Form_Unload ( Cancel As Integer )Dim myval As StringIf (2) Thenmyval = MsgBox ( “保存文件的更改吗?“, vbYesNoCancel, “提示信息“ )If (3) ThenMsgBox “保存成功“EndEnd IfIf (4) Then EndIf (5) Then
14、Cancel = 1End IfEnd Sub(分数:15.00)填空项 1:_八、试题八(总题数:1,分数:15.00)8.【说明】开发一个五笔编码查询系统,界面如图所示。(分数:15.00)填空项 1:_初级程序员下午试题-80 答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【说明】在一个矩阵中,如果其零元素的个数大大多于其非零元素的个数时,称这样的矩阵为稀疏矩阵。若直接用一个两维数组表示稀疏矩阵,会因存储太多的零元素而浪费大量的内存空间。通常采用三元组数组表示稀疏矩阵。稀疏矩阵的每个非零元素用一个二元组来表示:即非零元素的行号、列号和它
15、的值。然后按某种顺序将全部非零元素的三元组存于一个数组中。例如对于以下两维数组。int x54=1,0,0,0,0,5,0,0,0,0,7,2,6,0,0,0,0,3,0,8;可用以下数组 a 来表示:int a3=5,4,7,0,0,1,1,1,5,2,2,7,2,3,2,3,0,6,4,1,3,4,3,8;其中三元数组 a 的第 1 行元素的值分别存储稀疏矩阵 x 的行数、列数和非零元素个数。下面的流程图描述了稀疏矩阵转换的过程。【流程图】(分数:15.00)填空项 1:_ (正确答案:m,n,s (2) 1(3) 0,m, 1 (4) 0,n,1(5) i,j,xij )解析:二、试题二
16、(总题数:1,分数:15.00)2.1】void sort(char *s,int num)int i,j-num;char t;while(j-1)for(i=0;ij;i+)if(sisi+1)t=si;si=si+1;si+1=t;void main()char *s=“CEAedea“;sort(s,5);printf(“%s“,s);上述程序的结果是 (1) 【函数 2.2】void main()union int ig6;Char s12; try;try. ig0=0x4542; try.ig1=0x2049;try. ig2=0x494a; try.ig3=0x474e;try
17、. ig4=0x0a21; try.ig5=0x0000;pintf(“%s“,try, s);上述程序的结果是 (2) 【函数 2.3】void main()char *letter5= “ab“,“efgh“,“ijk“,“nmop“,“st“;char *p;int i;p=letter;for(i=0;i4;i+) .printf(“%s“,pi);上述程序的结果是 (3) 【函数 2.4】main()int i=4,j=6,k=8,*p=int x,y,z;x=p=y=3*-*p/(*q)+7;z=*(r=printf(“x=%d,y=%d,z=%d“,x,y,z);上述程序的结果是
18、 (4) 【函数 2.5】int a=5,4,3,2,1 ;void main()int i;int f=a0;int x=2;for(i=0;i5;i+)f+=f*x+ai;printf(“%d“,f);上述程序的结果是 (5) (分数:15.00)填空项 1:_ (正确答案:ACEdeea (2) BEI JING!(3) abefghijkmnop (4) x=1,y=5,z=24(5) 129)解析:三、试题三(总题数:1,分数:15.00)3.【说明】将 A,B,C,D,E,F 这 6 个变量排成如图(a)所示的三角形,这 6 个变量分别取1,6中的整数,且均不相同。求使三角形三条边
19、上的变量之和相等的全部解。图(b)就是一个解。(分数:15.00)填空项 1:_ (正确答案:b=a (2) c=ac=b(3) d=ad=bd=c (4) e=ae=be=ce=d(5) a+b+c=c+d+e void main()/* 变量定义部分 */int b10 = 34, 34, 23, 89, 1, 2, 13, 42, 5, 54;(1) ;int idx;/* 寻找最小值 */minaddr = findmin(b, sizeof(b)/sizeof(int), idx);/* 输出最小值的有关信息 */cout “Min value index: “idxend1“Min
20、 value address: “minaddrend1“Min value: “ (2) end1;/* 函数 findmin 的定义部分 *int *findmin(int *array, int size, int /max 是当前具有最小值的数组元素下标值for(int i = 1; (3) ; i+)if(arrayi (4) )min = i;(5) ;return array + min;/返回最小值所在内存地址(分数:15.00)填空项 1:_ (正确答案:int *minaddr (2) bidx(3)isize (4) arraymin(5) index = min)解析:
21、五、试题五(总题数:1,分数:15.00)5.【说明】在一些应用场合中,需要对用户的输入数据进行检查监控。以下 VisualBasic 程序实现了对新添加到 List 列表的内容进行监控,拒绝向 List 列表添加重复信息。例如,在 List 列表中存在元素“a01001;a01002”,如果用户输入数据为“a01001”或“a01002”,系统则弹出提示信息,拒绝将新数据加入 List 列表;如果用户输入的数据不同于 List 列表中的任何一个元素,则作为新元素加入 List 中。VisualBasic 界面显示如图所示。根据程序功能说明,完成程序代码。(分数:15.00)填空项 1:_ (
22、正确答案:为所有的列表个数;(2)、(3)实现了 List 列表的内容进行监控,避免重复;(4)为循环控制变量 i 更新;(5)Lis 列表的内容进行监控时数据合格,没有重复,接受。(1)List1.ListCount-1(2) List1.ListIndex = i(3) List1.Text = Text1.Text Then(4) Next i(5) List1.Addltem Text1.Text)解析:六、试题六(总题数:1,分数:15.00)6.【说明】以下程序实现了利用鼠标任意移动该圆形的位置,仔细阅读代码和相关注释,将程序补充完整。【代码 6】import java.awt.*
23、;import java.awt.event.*;public class CIUSAMPLE extends Frame implements MouseMotionListener, MouseListenerstatic CIUSAMPLE frm=new CIUSAMPLE ();int x=70,y=60,posX=70,posY=60,dx,dy;public static void main ( String args)frm.setTitle (“Dragging a circle“);frm.setSize ( 200,150 );(1) frm.addMouseMotion
24、Listener ( frm );frm. setVisible ( true );public void mousePressed ( MouseEvent e )(2) dy=e.getY () -posY;public void mouseDragged ( MouseEvent e )(3) y=e.getY () -dy;if ( dx0 (4) public void paint ( Graphics g )g.setColor ( Color. pink ); / 设置绘图颜色为粉红g.fillOval ( x,y,50,50 ); /以基准点为图形的左上角绘出圆形(5) pos
25、Y=y;public void mouseMoved ( MouseEvent e ) public void mouseReleased ( MouseEvent e ) public void mouseEntered ( MouseEvent e ) public void mouseExited ( MouseEvent e ) public void mouseClicked ( MouseEvent e ) (分数:15.00)填空项 1:_ (正确答案:题目中的程序实现了利用鼠标任意移动该圆形的位置。分析代码可知:(1)实现了对鼠标位置的检测; (2)取得鼠标按下的点与基准点 X
26、 方向的距离;(3)取得拖曳时的基准点的 X 坐标;(4)清空画面为背景颜色;(5)更新基准点的 X 坐标。(1) frm.addMouseListener(frm);(2) dx=e.getX()-posX;(3) x=e.getX()-dx;(4) update(g);(5) posX=x;)解析:七、试题七(总题数:1,分数:15.00)7.【说明】以下代码实现了当用户退出界面时,判断 TextEdit 中的文字是否发生改变,弹出对话框判断,让用户选择是否保存文件或取消退出界面操作。阅读下面的代码,将其补充完整。【代码 7-1】Begin VB.Form Forml/.窗体描述(略)Be
27、gin VB.TextBox TextEditHeight = 1830Left = 180Tablndex = 0Text = “TextEdit“Top = 360Width = 3885End/.窗体描述(略)End【代码 7-2】Dim txtchange As BooleanDim myval As StringPrivate Sub Form Load ()TextEdit.Text: “CIU, 中国软考联盟!“txtchange = FalseEnd Sub【代码 7-3】Private Sub TextEdit_Change ()Static notchange As Boo
28、lean(1) notchange = TreeEnd SubPrivate Sub Form_Unload ( Cancel As Integer )Dim myval As StringIf (2) Thenmyval = MsgBox ( “保存文件的更改吗?“, vbYesNoCancel, “提示信息“ )If (3) ThenMsgBox “保存成功“EndEnd IfIf (4) Then EndIf (5) Then Cancel = 1End IfEnd Sub(分数:15.00)填空项 1:_ (正确答案:完成了状态初始化。(2)文字发生了改动,txtchange=True
29、,向用户发出提示信息,弹出对话框。 (3)、(4)、(5)根据对话框的返回值做出相应的反应。 (1) txtchange = notchange(2) txtchange = True(3) myval = vbYes(4) myval = vbNo(5) myval = vbCancel)解析:八、试题八(总题数:1,分数:15.00)8.【说明】开发一个五笔编码查询系统,界面如图所示。(分数:15.00)填空项 1:_ (正确答案:m_cmbWord.SetCurSel(nSel)(2) UpdateDate(FALSE)(3) m_listHitHist.GetClientRect(rect)(4) m_listHitHist.GetCount()=nCount(5) m_cmbZi.Copy())解析: