1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 9及答案与解析 1 阅读以下说明和流程图,回答问题,将解答填入对应栏内。 流程图 说明 把指定区间上的所有整数分解质因数,每一整数表示为质因数按从小到大顺序排列的乘积形式。如果被分解的数本身是素数,则予以注明。例如, 90=23 35, 91=素数。 下面的流程图描述了分解质因数的过程。对每一个被分解的整数j,赋值给 b(以保持判别运算过程中 j不变 ),用 K (从 2开始递增 1取值 )试商,若不能整除,打印输出 “*k”, b除以 k的商赋给 b(b=b/k)后 继续用 k试商 (注意,可能有多个 k因数 ),直至不能整除, k增 1继
2、续。 将流程图中的 (1) (5)处补充完整。 2 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 函数 2.1说明 将一个正整数分解质因数。例如:输入 90,打印出 90=2335。 函数 2.1 fun 1 ( int n ) int i; for ( i=2;i =n; i+) while (1) if (n %i=0 ) printf ( “%d*“,i ); (2) else break; printf ( “%d“,n ) ; 函数 2.2说明 下面程序的功能是:海滩上有一堆桃子, 5只猴子来分。第 1只猴子把这堆桃子平均分为 5份,多了一个,这只猴子把多的
3、一个扔入海中,拿走了一份。第 2只猴子把剩下的桃子又平均 分成 5份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第 3、第 4、第 5只猴子都是这样做的,问海滩上原来最少有多少个桃子 ? 函数 2.2 main ( ) int i, m, j, k, count; for ( i=4;i 10000;i+=4 ) count=0; (3); for ( k=0;k 5;k+ ) (4); i=j; if ( j%4=0 ) (5); else break; i=m; if ( count=4 ) printf ( “%dn“, count) ; break; 3 阅读以下说明和 C语言
4、函数,将应填入 (n)处的字句写在对应栏内。 说明 完成以下中序线索化二叉树的算法。 函数 Typedef int datatype; Typedef struct node Int ltag, rtag; Datatype data; *lchild,* rchild; bithptr; bithptr pre; void inthread ( p ); if inthread ( p- lchild ); if ( p- lchild=unll ) (1); if ( P- RCHILD=NULL) p- rtag=1; if (2) if (3) pre- rchild=p; if (
5、p- 1tag=1 )(4); INTHREAD ( P- RCHILD ); (5); 4 阅读以下说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 说明 如图所示的一圆圈上分布 6个环,请在每个环中填一个数字,使得从任一环开始按顺时针所得的六位数与按逆时针所得的 6位数都为素数。 函数 main ( ) int i, j, a, b, k; long m,m1,n,t,u,v; for ( n=100001;n 999999;n+2 ) /* n穷举所有 6位奇数 */ a=0;(1); /* 设 m 为一个顺转 6 位数 */ for ( i=1; i =6; i+ ) t=-
6、m/1000000;(2); for ( v=u,m1=0,k=1;k =5;k+ ) b=v%10;v=v/10;m1=m1*m1* 10+b; (3); /*m1 为相应的逆转 6 位数 */ /* m 为顺圈数 , m1 为逆圈数 */ for ( j=2; j=999;j+ ) if ( m%j=0 .(4) /* 判别 m,m1 是否为素数 */ a= 1; break; (5); /*原m 转一环得新顺转数 m*/ /*原 m 转一环得新顺圈数 m*/ if (a=1) break; if ( a=0 ) prinff (“%1dn“,n ) ;break; 5 阅读以下说明及 V
7、isual Basic 程序代码,将应填入 (n)处的字句写在对应栏内。 程序 5.1说明 下列程序运行时,当单击窗体后,从键盘输入一个字符,判断该字符是字母字符、数字字符还是其他字符,并做相应的显示。窗体上无任何控件,并禁用 Ase和 Chr函数 , Select Case语句中禁用枚举值。 Visual Basic代码 Private Sub Form Load () Dim x As String*1 X=(1) (“请输入单个字符 ”, “字符 ”) Select Case UCase ( (2) ) Case (3)。 Print X+“是字母字符 ” Case (4) Print
8、X+ “是数字字符 ” Case Else Print X+“是其他字符 ” End Select 程序 5.2说明 在窗体上画一个名称为 Timer1的计时器和一个名称为 Labe11的标签。当运行程序后,将在标签中显示当前时间的数字时钟 (包括时:分:秒 )。 Visual Basic代码 Private Sub Fom_Load () Timer1.Interval=1000 EndSub Private Sub Timer1_ timer() (5) EndSub 6 阅读以下说明及 Visual Basic 程序代码,将应填入 (n)处的字句写在对应栏内。 说明 本程序将利用文本框
9、txtInput 输入的一行字符串中的所有字母加 密,加密,加密结果在文本 txtCode中显示。加密方法如下:将每个字母的序号移动 5个位置,即“A”- “F”“a”- “f”, “B”- “G”“Y” - “D”, “Z”- “E”。程序段如下: Visual Basic 代码 Private Sub Form_ Click() Dim strInput As String*70 ; 输入字符串 Dim Code as String*70 ;加密结果 Dim strTemp As String*1 ;当前处理的字符 Dim i as Integer Dim Length As Intege
10、r ;字符串长度 Dim iAsc As Integer ;第 i个字 ASCII码 (1) ;取字符串 i=1 Code=“” (2) ;去掉字符串右边的空格,求真正的长度 Do While(i =Length) (3) ;取第 i个字符 If (strTemp =“A“ And strTemp =“Z, ) Then iAsc= Asc (strTemp)+5 If iAsc Asc(“Z”)Then iAsc=iAsc-26 Code=Left (Code, i-1)+Chr (iAsc) ElseIf (strTemp =“a“ And strTemp =“z“) Then iAsc=
11、Asc(strTemp)+5 If iAsc Asc (“z”) TheniAsc=iAsc-26 Code=Left (Code,i-1)+Chr (iAsc) Else Code=Left (Code,i-1)+strTemp End If (4) Loop (5);显示加密结果 End Sub 7 阅读以下说明和 C+程序,将应填入 (n)处的字句写在对应栏内。 【说明】 找一个最小的自然数,使它等于不同的两组三个自然数的三次幂之和,即找最 小的 x,使得: x=a*a*a+b*b*b+c*C*c+d*d*d+e*e*e+f*f*f,其中, a、 b、 c、 d、 e、 f者是是自然数,
12、 abCdef; a,b,c!=d,e,f) 【 C+程序】 #include stdio.h #define N 100 void main () int i,j,il,ih,i0,j0,k0,il,j 1,k1; int j1N,jhN;/*第 i层平面的行的变化范围,自 jli至 jhi*/ int kNN;/*第 i层平面中,对应行 j,当前的列号值为 kij*/ int pN, min;/*pi=i*i*i*/ i1=1;j1=1;k1=1;/*首先只局限下三角棱体的顶点 */ i1=1;ih=1;/*预置 i的变化范围初值 i1 =i =ih*/ j11=1;jh1=1;/*对应
13、i层平面的行的变化 范围 */ ki1j1i1 =1;/*第 i层平面中 ,对应行的列的初值 */ p1=1; do min=pi1+pj1+pk1; i0=i1;j0=j1;k0=k1; if ( i1=ih ) /*当前候选者在 ih平面 , 则 ih增 1*/ ih+; (1); /*为 ih平面设定 j的变化范围和对应 k值 */ j1ih=1;jhih=1;kih1=1; if ( i1=i1/*在 i1平面最下角点找到候选者, i1增 1*/ else if ( k1=1 ki1jhi1 =1; if( k1=j1/*调整 i1平面当前行的列号 */ i1=i1;/*预定最上平面的
14、最小行的当前列为下一个候选者 */ j1=j1i1; k1=ki1j1; for ( i=i1;i =ih;i+ ) /*寻找最小值所在平面号、行号和列号 */ for ( j=j1i;j =jhi;j+ ) if ( pi+pj+pkij (4) i1=i;j 1=j;k1=kij; while ( pi1+pj1+pk1!=min if ( pi1+pj1+pk1=min ) printf ( “%4d=%2d3+%d3+%dA3=%2d3+%d3+%d3n“,min,i0,j0,k0,i1,j1,k1 ); else printf ( “The %d is too small.n“,N
15、); 8 阅读以下说明和 JAVA2代码,将应填入 (n)处的字句写在对应栏内。 【说明】 以下程序实现了利用鼠标任意移动该圆形的位置,仔细阅读代码和相关注释,将程序补充完整。 【代码 6】 import java.awt.*; import java.awt.event.*; public class CIUSAMPLE extends Frame implements MouseMotionListener, MouseListener static CIUSAMPLE frm=new CIUSAMPLE (); int x=70,y=60,posX=70,posY=60,dx,dy; p
16、ublic static void main ( String args) frm.setTitle (“Dragging a circle“); frm.setSize ( 200,150 ); (1) frm.addMouseMotionListener ( 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 ( d
17、x 0 (4) public void paint ( Graphics g ) g.setColor ( Color. pink ); / 设置绘图颜色为粉红 g.fillOval ( x,y,50,50 ); /以基准点为图形的左上角绘出圆形 (5) posY=y; public void mouseMoved ( MouseEvent e ) public void mouseReleased ( MouseEvent e ) public void mouseEntered ( MouseEvent e ) public void mouseExited ( MouseEvent e
18、) public void mouseClicked ( MouseEvent e ) 软件水平考试(初级)程序员下午(应用技术)模拟试卷 9答案与解析 1 【正确答案】 (1)for(j=m; j =n; j+) (2)b=b/k (3) k+ (4) w+ (5) 输出大于 j平方根的因数, printf (“%1dn“,b) 2 【正确答案】 (1) n!=i (2) n=n/i (3) m=i (4) j=i/4*5+1 (5) count+ 3 【正确答案】 (1) P- LTAG=0 (2) (PRE) (3) (PRE- RTAG=1) (4) P- LCHILD=PRE (5)
19、 PRE=P 4 【正确答案】 (1)m=n (2) u=m %100000 (3) m1=t*100000+m1 (4) m1% j=0 (5) m=u*10+t 5 【正确答案】 (1)InputBox (2)X (3)“A” To “Z” (4)“0”To“9” (5)Labe11.Caption=Time 6 【正确答案】 (1)strlnput=txtlnput. Text (2)Length=Len(RTrim(strInput) (3)strTemp=Mid(strInput, i, 1) (4)i=i+1 (5)txtCode.Text=Code 7 【正确答案】 (1)pih=ih*ih*ih (2) jhi1+ (3) ki1j1+ (4) pi1+pj1+pk1 (5) ih!=N 8 【正确答案】 题目中的程序实现了利用鼠标任意移动该圆形的位置 。分析代码可知: (1)实现了对鼠标位置的检测; (2)取得鼠标按下的点与基准点 X方向的距离; (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;
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1