2001年度初级程序员级下午试题
试题一 阅读以下 C 代码,将应填入 __(n)__ 处的字句写在答题纸的对应栏内。 [程序1.Il] #include main ( ) { int x, p, i , s = 0 ; for (x = 1 ; x < 5 ; x++) { for (p= i = 1 ; i <= x ; i++) p *= x ; s += p ; } printf( P%d\n" ,s) ; } 程序1.1的输出结果是 __(1)__ 。
[程序1.2] #include void s( int b[ ] ,int n ) { int i ,j ,t ,flg ; for ( i = 0 ; i < n-1 ; i++ ) { for ( flg = O,j = 0 ; j < n-i-1 ; i++ ) if (b[j] > b[j+l] ) { t = b[j] ; b[j] = b[j+1] ; b[j+l] = t ; flg = 1 } if ( !flg ) break } } main( ) {int i , a[] = { 11,9,2,5,3,7 } ; s( a,6 ) ; for ( i = O ; i < 6 ; i++ ) printf( "%4d", a[i] ) ; printf( "\n" ) ; } 程序1.2的输出结果是 __(2)__ ;函数 s(int b[],int n) 的功能是 __(3)__
[程序1.3] #include int m( unsigned k ) { int s = 1 ; do { s *= k % 10 ; k /== 10 ; } while (k) ; return s ; }
main() { printf( " %d,%d\n " , m(1234), m(43209)) ; } 程序 1.3 的输出结果是 __(4)__ ; 函数 m(unsigned k) 的功能是 __(5)__ 。
试题二 以下是用 Visual Basic 开发应用有关的 5 个问题。对每一个问题,请将解答填入答题纸 的对应栏内。 (1)为使用户单击某窗口 ( 窗体名为 frm1 )时,会显示一行信息:“欢迎光临!”, 应在 该窗体的哪个事件过程中,编写什么样的程序代码? 请写出相应的事件过程名以及该过程内的 程序代码。 (2)若某窗口内的命令按钮“加倍”具有如下的功能: 将文本框 txt1 中输入的数值加倍 后,在文本框 txt2 中显示其结果,请写出该命令按钮的单击事件过程内的程序代码? (3)若某窗口 ( 窗体名为 frm1 ) 中,有一个文本框和一个命令按钮,只要在文本框中输 入一个图像文件名(包括路径),单击该命令按钮后,该图像就会成为此窗口的背景图像。请写 出该命令按钮单击事件过程内的程序代码。 (4)为使某窗口中的命令按钮“取消[C]”,具有如下的功能:按键 Alt+C 或按键“ESC”, 都相当于单击该按钮,应怎样实现? (5)请说明如下语句的功能: MsgBox "请检查修改输入数据!",vbOKOnly+vbCritcal+vbDefaultBUtton1,_ "数据错"
试题三 阅读下列说明和 C 代码,将应填入 __(n)__ 处的字句写在答题纸的对应栏内。 [程序3.1说明] 本程序输入一字符串,并将其中的大写字母改变成小写字母。 [程序3.1] #include void main( ) { int i = 0 ; char s[120] ; printf ( "Enter a string.\n") ; scanf( "%s", s ); while ( __(1)__ ) { if ( __(2)__ ) s[i3 = s[i] - ’A’ + ’a’ ; i++ ; } printf( "%s\n", s ); }
[函数3.2说明] 本函数用二分法,在已按字母次序从小到大排序的字符数组 list[len] 中,查找字符 c , 若 c 在数组中,函数返回字符 c 在数组中的下标,否则返回 -1。 所谓二分法查找是:初始查找区间的下界为 0,上界为 len-1,查找区间的中后 k = (下界+上界)/2 ; 若 list[k] 等于 c ,查找成功;若 list[k] > c, 则新的查找区间的下界不变,上界改为 k-1; 否则新的查找区间的下界改为 k+1, 上界不变。在新区间内继续用二分法查找。 [函数3.2] int search( char list[ ] , char c ,’ int len ) {int low = 0 , high = len-1 , k ; while ( __(3)__ ) { k = ( low + high) / 2 ; if ( __(4)__ ) return k ; else if ( __(5)__ ) high = k-1 ; else low = k+l ; } return -1 ; }
试题四 阅读下列 Visual Basic 程序,将应填入 __(n)__ 内的字句写在答题纸的对应栏内。 [程序代码4.1] 设应用程序窗体中有一个文本框 txt ,还有一个复选框 ck1 。这个复选框单击事件的 程序代码如下: Private Sub ckl_Click( ) If ckl.Value= vbChecked Txt.FontBold = True Else Txt.FontBold = False End if End Sub 该应用程序中,复选框ck1的功能是: __(1)__
[程序代码4.2] Function gcd ( ByVal x As Integer, ByVal y As Integer ) As Integer Do while y <> 0 Reminder = x mod y y = reminder Loop Gcd = x End Function 该函数过程的功能是 __(2)__ ; gcd(16,24)的值是 __(3)__ 。 [程序代码4.3] Dim location As Integer ,n As Integer,source As String,target As String Source = "East and west ,home is best! " : target = "st" Location = 1 : n = 0 Location = InStr( location,Source,target ) + l Do While location > 1 n=n+l Location = InStr( location,Source,target ) + l Loop Print n 其中函数 InStr 的功能是在给定的字符串( 第 2 个参数给出 )中,从指定的序号位置 ( 第 1 个参数给出 )开始,查找目标字符串( 第 3 个参数给出)。若找到,则返回找到之 处的序号位置;若未找到,则返回 0 。 上述程序代码的功能是: __(4)__ ;上述程序代码运行的结果是: __(5)__ 。
试题五 阅读下列程序说明和 C 代码,将应填入 __(n)__ 处的字句写在答题纸的对应栏内4 [程序 5 说明] 本程序找出正文文件 "st.dat" 中的各个不同整数。该正文文件中各整数间以空格字符、 TAB 符 (制表符)、回车符分隔。程序中用数组 b[] 存储不同的整数,变量 k 为已存入数 组 b 中的不同整数的个数,并假定文件中的不同整数个数不超过 1000 个。 [程序 5] #include #define N 1000 main( ) { FILE __(1)__ ; int b[N] , d, i, k ; if ( ( fpt = __(2)__ ) == NULL) { /*以读方式打开文件*/ printf( ’Cannot open file.\nm ) ; return ; } k=O; while ( fscanf( __(3)__ ) == 1 ) { /*从文件中读一个整数*/ b[k] = d ; for ( i = 0 ;b[i] != d ; i*+ ) ; if ( __(4)__ ) k++ ; (5) ; for ( i = 0 ; i < k ; i++) printf( "%d",b[i] ) ; printf( "\n" ) ;
试题六 阅读以下应用说明以及用VisualBasic开发过程中进行的属性设置和所编写的程序代 码,将应填入 __(n)__ 处的字句写在答题纸的对应栏内。 [应用说明] 本应用程序的运行窗口如下图所示: 
用户只要在文本框中输入一个自然数 ( 例如 16 ),再用鼠标单击“倒计数”按钮或 直接按 Enter 键,都能使文本框中的数字每隔 0.3 秒逐次减 1 ( 倒计数 )。当减到 0 时,倒计数停止,文本框清空,鼠标定位在文本框中,以便于反复试验上述操作过程。 在开发过程中,需要设置有关的属性如下: [属性设置]
|
对象 |
对象名 |
属性名 |
属性值设置 |
|
窗体 |
Frm 1 |
Caption |
倒计数试验 |
|
标签 |
Lalel 1 |
Caption |
请输入自然数 |
|
文本框 |
Text 1 |
Text |
(空白) |
|
命令按钮 |
Commandl |
Caption |
倒计数 |
|
|
|
__(1)__ |
True |
|
定时器 |
Timer 1 |
enabled |
False |
|
|
|
interval |
__(2)__ | [程序代码]
Private Sub Commandl_Click ( )
__(3)__
End Sub
Private Sub Timerl_Timer ( )
If Val( Textl.Text) = 0# Then
Textl.text = " "
Timerl. Enabled = False
__(4)__
Else
Textl.Text = __(5)__
End If
End Sub
试题七
阅读下列程序说明和C代码,将应填入 __(n)__ 处的字句写在答题纸的对应栏内。
[程序 7 说明]
设一个环上有编号为 0~n-1 的 n 粒不同颜色的珠子 ( 每粒珠子颜色用字母表示,n
粒珠子的颜色由输入的字符串表示)。将环中某两粒珠子间剪开,环上珠子形成一个序列,然
后按以下规则从序列中取走珠子:首先从序列左端取走所有连续同包珠子;然后从序列右端
在剩下珠子中取走所有连续同色珠子,两者之和为该剪开处可取走珠子的粒数。在不同位置
剪开,能取走的珠子数不尽相同。
本程序所求的是在环上哪个位置剪开,按上述规则可取走的珠子粒数最多。程序中用数
组存储字符串。例如,10 粒珠子颜色对应字符串为“aaabbbadcc”,从 0 号珠子前剪开,
序列为 aaabbbadcc,从左端取走 3 粒 a 色珠子,从右端取走 2 粒 c 色珠子,共取走 5
粒珠子。若在 3 号珠子前剪开,即 bbbadccaaa 共可取走 6 粒珠子。
【程序7】
#include
int count(char*s,int start,int end)
{ int i,c = 0,color = s[start],step = ( start > end ) ?-1; 1;
for ( i = start; s[i] = color ; i += step ) {
if ( step > O && i ) end || __(n)__ ) break;
__(n)__
}
return c ;
}
void main() {
char t,s[120]; int i,j,c,len,maxc,cut=0 ;
printf( "请输入环上代表不同颜色珠子字符串:" ) ;
scanf( "%s",s) ;
len = strlen(s) ;
for ( i = maxc = 0 ; i < len ; i++ ) { /*尝试不同的剪开方式*/
c = count(s,0,len-1) ;
if ( c < len ) c += count( __(n)__ );
if ( c > maxc) { cut = i ; maxc = c; }
/*数组s的元素循环向左移动一个位置*/
t = s[0] ;
for ( j = 1; j < len ; j++ ) __(4)__ ;
__(5)__ ;
}
printf( "在第 %d 号珠子前面剪开,可以取走制个珠子.\n" , cut,maxc ) ;
}
试题八
阅读以下应用说明以及用 Visual Basic 开发过程中所编写的程序代码,将应填人
__(n)__ 处的字句写在答题纸的对应栏内。
[应用说明]
本应用程序的运行窗口如下图所示:
 只要用户在字体列表框、字号列表框中选择所需的字体、字号,在预览框中就能看到示
例文字按所需的字体、字号显示。
设字体列表框、字号列表框的名称分别为 Listl 和 List2,示例文字为标签 Labell,
其 BorderStyle 属性设置为 1 (有单边线)。
字体列表框中的字体与字号列表框中的字号都需要在该窗口加载时装入。
已知屏幕对象 Screen 的属性 Fonts 中存放着系统所具有的一系列字体名,可从
Fonts(0),Fonts(1),Fonts(2),...,中获得各个字体名。Screen 对象的属性 FontCount
存放着这些字体名的总数。
字号列表框中,列出的字号依次是:8,9,10,11,12,以及14,16,18,...,72。
Addltem 是在列表框中增项的方法,列表框的属性 Text 表明了该列表框当前所选中
的数据项。标签的字体显示取决于属性 FontName 的值( 字符串 ),标签的字号显示取决
于属性 FontSize 的值( 数值 ) 。
[程序代码]
Private Sub FormLoad ( )
Dim i As Integer
For i = 0 To = __(1)__
Listl. AddItem __(2)__
Next i
For i = 8 To 12
List2. AddItem Trim ( Str (i) )
Next i
For i = __(3)__
List2. AddItem Trim ( Str (i) )
Next i
End Sub
Private Sub Listl_Click ( )
Labell.FontName = __(4)__
End Sub
Private Sub List2Click ( )
Labell.FontSize = __(5)__
End Sub
|