|
2003年度初级程序员级下午试卷
试题一
阅读下列说明和流程图l将应填入__(n)__处的字句写在答题纸的对应栏内。 [说明]
流程图1描述了自然数1到N(N≥1)之和的计算步骤。 [流程图1]

·完善流程图1。(a)处应是__(l)__;(b)处应是__(2)__。
·为了使流程图1能计算1’+2’+…+N2,应将c框改成__(3)__。
·如果输入的N是奇数,为了使流程图1能计算
1+3+5+…+(2k-1)+·…+N (1≤k≤(N+1)/2) 应将d框改成__(4)__。
·如果流程图1中c框的内容改为“S+I*(I+1)→S”,则流程图1实现__(5)__计算。
|
从下列的 2 道试题(试题二至试题三)中任选 1 道解答。如果解答的试题数超过 1
道,则题号小的 1 道解答有效。 |
试题二
阅读下列函数说明和C代码,将应填入__(n)__处的字句写在答题纸的对应栏内。 [函数2.1说明]
函数voidprintd(int
n)的功能是将整数n转换为字符串并输出。转换的方法是从低位到高位依次取得整数n的各位数值,将其转换成数字字符后存入字符数组s中,然后输出。 [函数2.1]
void printd(int n)
{
char s[lO]; int i;
if
(n < O) {
putchar('-'); n = -n;
}
i=9;
s[i] = '\0';
do
s[--i] = __(l)__ + '0';
while((n /= 10) > 0);
printf('%s\n', __(2)__);
} [函数2.2说明]
函数void revstr(char*s)将字符串s逆置。例如字符串“abcde”,经过逆置后变为“edcba”。 [函数2.2]
void revstr(char *s)
{
char *p, c'
if(s == NULL) return;
p =
__(3)__; /* p指向字符串s的最后一个有效字符 */
while ( s < p ) {
/*
交换并移动指针 */
C =
*S;
__(4)__ = *p;
__(5)__ = c;
}
}
试题三
以下是用 VisualBasic 开发应用有关的 5 个问题。对每一个问题,请将解答填入答题纸的对应栏内。
(1)复选框(CheckBox)的状态有哪些?
(2)若命令按钮cmdOK初始时是灰色的,表示用户当前不能使用。在应用程序运行时,为使该命令按钮变成可用的,应使用什么语句?
(3)若主窗口内有一个按钮“自定义…”,单击该按钮就会弹出一个自定义对话框(另一窗体frmD),用户必须在其中做出响应,程序才能继续运行。请写出该命令按钮的单击事件过程中的程序代码。
(4)设一个名称为fraInput的框架(Frame)控件包含了两个文本框(名称分别为txt1和txt2),请写出使fralnput的两个子控件txt1和txt2不可见的程序代码。
(5)已知某窗体中有两个文本框(名称分别为txt1和txt2),现要求在txt1中输入完毕后按回车键就能使焦点(当前光标)跳到txt2,而不用Tab键进行切换。请补充下面txt1的KeyDown(按键)事件过程中程序代码的空缺。
If
KeyCode = 13 Then
txt2.________
End
If
|
从下列的 2 道试题(试题四至试题五)中任选 1 道解答。如果解答的试题数超过 1
道,则题号小的 1 道解答有效。 |
试题四
阅读下列函数说明和 C 代码,将应填入__(n)__处的字句写在答题纸的对应栏内。 [函数4.1说明]
函数int factors(int n)的功能是判断整数n(n≥2)是否为完全数。如果n是完全数,则函数返回0,否则返回-1。
所谓“完全数”是指整数n的所有因子(不包括n)之和等于n自身。例如28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28是“完全数”。 [函数4.1]
int
faetors(int n)
{
int i, s;
for
(i = l, s = O; i (= n/2' i++)
if
(n % i == O)__(1)__;
if
(__(2)__) return O;
return -1;
} [函数4.2说明]
函数int maxint(int a1],int
k)的功能是用递归方法求指定数组中前k个元素的最大值,并作为函数值返回。 [函数4.2]
int
maxint(int a[], int k)
{
int
t;
if(__(3)__) return__(4)__;
t =
maxint(a+l, __(5)__)'
return (a[0] > t) ? a[0] : t;
}
试题五
阅读以下应用说明以及用Visual
Basic开发过程中进行的属性设置和所编写的程序代码,将应填入__(n)__处的字句写在答题纸的对应栏内。 [应用说明]
在窗体中建立一个文本框Txtl、框架Fral、复选框Chkl及两个命令按钮Cmdok和Cmdcancel。Fral中的两个单选按钮的名称分别为Optsong和Opthei,相关的属性设置如下表所示:
|
对象 |
对象名 |
属性名 |
属性值 |
|
窗体 |
Frm1 |
Caption |
框架应用示例 |
|
框架 |
Fral |
Caption |
字体 |
|
单选按钮 |
0ptsong |
Caption |
宋体 |
|
单选按钮 |
0pthei |
Caption |
黑体 |
|
复选框 |
Chk1 |
Caption |
斜体 |
|
命令按钮 |
Cmdok |
Caption |
确定 |
|
命令按钮 |
Cmdcancel |
Caption |
取消 |
|
文本框 |
Txt1 |
Text |
字体字形 |
应用程序的运行窗口如下图所示:
用户在选择“宋体”或“黑体”以及设置或取消“斜体”字形后,单击“确定”按钮,文本框中的文字就会按所选字体和字形显示。
若运行时使文本框不接收用户的输入,则需要设置Txtl的__(1)__属性值为False;若按下Esc键时就能执行命令按钮Cmdcancel的单击事件过程,则应设置Cmdcancel的Cancel属性值为__(2)__。 [程序代码]
Private Sub Cmdol__(3)__()
If
__(4)__=True Then
Txtl.FontName="宋体"
Else
Txtl.FontName="黑体"
End
lf
lf
__(5)__ Then
Txtl.Fontltalic=True
Else
Txtl.Fontltalic=False
End
lf
End
Sub
|
从下列的 2 道试题(试题六至试题七)中任选 1 道解答。如果解答的试题数超过 1
道,则题号小的 1 道解答有效。 |
试题六
阅读下列说明和 C 代码,将应填入__(n)__处的字句写在答题纸的对应栏内。 [程序6说明]
本程序从正文文件test.txt中读入一批整数,并将它们按照递增的顺序存放在一个链表中。
其中,函数insertChain(struct Link*head,struct
Link*k)用来寻找结点k在链表head中的插入位置,并插入该结点。 [程序6]
#include <stdio.h>
#include <stdlib.h>
struct Link {
int
number;
struct Link *next;
};
struct Link * insertChain(struct Link *head, struct Link *k);
void main()
{
struct Link *ptr, *head;
FILE *fd;
int
hum;
if((fd = fopen("test.txt"', "r")) == NULL) { /*打开一个文件 */
printf('Cannot open this file!\n"); return ;}
head = NULL;
while(fscanf(fd, "%d", &hum) == 1) {
ptr
= __(1)__;
if
(!ptr) return;
ptr->number = hum;
ptr->next = NULL;
head = insertChain(head, ptr);
}
__(2)__;
return ;
}
struet Link * insertChain(struet Link *head, struct Link *k)
{
struct Link *ptr, *u;
ptr
= head;
while (ptr ~d~ k->number > ptr->number)
{ u
=ptr; __(3)__; }
if(ptr == head) head = k;
else __(4)__
__(5)__;
return head;
}
试题七
阅读以下应用说明以及用VisualBasic开发过程中进行的属性设置和所编写的程序代码,将应填入
__(n)__处的字句写在答题纸的对应栏内。 [应用说明]
设某应用程序运行时窗口中有两个文本框(txtNumber和txtChinese)和一个命令按钮(cmdChange)。当单击cmdChange时,txtChinese中将显示txtNumber中数值的中文大写格式。例如,若在txtNumber中输入“012340”,单击命令按钮后,txtChinese中将显示“壹万贰仟叁佰肆拾”,如下图所示。

程序中调用的函数CChinese(Strdigit As
String)的功能是先删除数字串Strdigit的所有前导0,再调用函数Transfer(Strdigit As
String),将数字串Strdigit转换为中文大写格式。
文本框txtNumber响应按键事件的过程是以空字符代替所输入的非数字有形字符。 [程序代码]
Private Sub cmdChange_Click()
txtChinese. Text= CChinese(__(1)__) '调用CChinese函数
End
Sub
Private Function CChinese(Strdigit As String) As String
intLen = Len(Strdigit)
If
Strdigit () "' Then
intCounter = 0
Do '过滤数字串Strdigit的前导0
intCounter = intCounter + 1
Loop Until Mid(Strdigit,__(2))__ <> "0"
intLen = __(3)__
Strdigit =__(4)__(Strdigit, intLen)
CChinese = Transfer(Strdigit)
Endif
End
Function
Private Sub txtNumber_KeyPress(KeyAscii As Integer)
Select Case KeyAscii '按输入字符的ASCII码值分情况处理
Case KeyAscii < 32 '保留输入的控制字符
Case 48 To 57
'保留输入的数字字符
Case
Else
'其他情况以空字符代替
__(5)__= 0
End
Select
End
Sub
|