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
" ,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( "
" ) ;
}
程序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
" , 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.
") ;
scanf( "%s", s );
while ( __(1)__ ) {
if ( __(2)__ )
s[i3 = s[i] - A + a ;
i++ ;
}
printf( "%s
", 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
[1] [2] 下一页
其中函数 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.
m ) ;
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( "
" ) ;
试题六
阅读以下应用说明以及用VisualBasic开发过程中进行的属性设置和所编写的程序代
码,将应填入 __(n)__ 处的字句写在答题纸的对应栏内。
[应用说明]
本应用程序的运行窗口如下图所示:
用户只要在文本框中输入一个自然数 ( 例如 16 ),再用鼠标单击"倒计数"按钮或
直接按 Enter 键,都能使文本框中的数字每隔 0.3 秒逐次减 1 ( 倒计数 )。当减到 0
时,倒计数停止,文本框清空,鼠标定位在文本框中,以便于反复试验上述操作过程。
在开发过程中,需要设置有关的属性如下:
[属性设置]
对象 对象名 属性名 属性值设置
窗体 Frm 1 Caption 倒计数试验
标签 Lalel 1 Caption 请输入自然数
文本框 Text 1 Text (空白)
命令按钮 Commandl Caption 倒计数
__(1)__ True