为图1-19对话框中的【退出】按钮新增如下的功能:运行图1-19窗体时,该按钮上显示有“退出(C)”的字样
为图1-19对话框中的【退出】按钮新增如下的功能:运行图1-19窗体时,该按钮上显示有“退出(C)”的字样信息,按【Alt+C】组合键或按【ESC】键,都相当于单击该按钮。
要完成以上新增功能需要将[退出]按钮(cmdExit)的Cancel属性和Caption属性分别设置什么样的值?
为图1-19对话框中的【退出】按钮新增如下的功能:运行图1-19窗体时,该按钮上显示有“退出(C)”的字样信息,按【Alt+C】组合键或按【ESC】键,都相当于单击该按钮。
要完成以上新增功能需要将[退出]按钮(cmdExit)的Cancel属性和Caption属性分别设置什么样的值?
第1题
阅读以下应用说明及Visual Basic程序代码,根据要求回答问题1至问题4。
【说明】
某学期成绩管理系统的“增、删、改数据表中的记录”对话框如图1-19所示。
图1-19对话框中共定义了6个标签、6个文本框、4个命令按钮和1个Data数据控件。其中Data数据控件是Visual Basic的标准控件。利用它能方便地创建应用程序与数据库之间的连接,并实现对数据资源的访问。【添加】(cmdAdd)按钮用于向学生成绩数据表添加一条空记录:【修改】(cmdEdit)按钮用于修改当前所显示的一条数据记录:命令按钮【删除】(cmdDelete)用于删除当前显示的一条数据记录;单击【退出】(cmdExit)按钮,系统将退出图1-19所示的对话框。
表1-13是学生成绩表结构的示例;表1-14是学生成绩表的示例。
图1-19将表1-14数据库中的记录信息显示到相应的文本框中。要在各文本框(txtStu(i),i=0,1,2,3,4,5)中显示Data数据控件所连接的数据表中的数据,必须将文本框与Data数据控件进行绑定。
【Visual Basic程序】
Private Sub Form_Load()
For i = 0 To 5
txtStu(i).Locked = True
Next i
End Sub
Private Sub cmdAdd Click()
cmdEdit.Enabled = Not cmdEdit.Enabled
(1)
For i = 0 To 5
txtStu(i) .Locked = Not txtStu(i).Locked
Next i
If cmdAdd. Caption = "添加" Then
(2)
Datal.Caption = "新记录"
cmdAdd.Caption = "保存"
cmdExit.Caption = "取消"
txtStu(0).SetFocus
Else
Datal.Recordset.Update
(3)
cmdAdd.Caption = "添加"
End If
End Sub
Private Sub cmdEdit_Click()
cmdAdd. Enabled = Not cmdAdd. Enabled
cmdDelete. Enabled = Not cmdDelete. Enabled
For i = 0 To 5
txtStu(i).Locked = Not txtStu(i).Locked
Next i
If cmdEdit.Caption = "修改" Then
Datal.Recordset.Edit
cmdEdit.Caption = "保存"
cmdExit.Caption = "取消"
Else
(4)
cmdEdit.Caption = "修改"
End If
End Sub
Private Sub cmdDelete_Click()
answer = MsgBox("确实删除该记录吗?", vbYesNo + vbQuestion, "警告")
If answer = vbYes Then
Datal.Recordset.Delete
(5)
If Datal.Recordset.EOF Then
(6)
End If
End If
End Sub
Private Sub cmdExit_Click()
If cmdExit.Caption = "退出" Then
End
Else
(7)
cmdAdd. Enabled= True
cmdEdit.Enabled = True
cmdDelete. Enabled= True
For i = 0 To 5
txtStu(i).Locked = Not txtStu(i).Locked
Next i
cmdExit.Caption = "退出"
cmdAdd.Caption = "添加"
cmdEdit.Caption = "修改"
(8)
End If
End Sub
Private Sub Datal_Reposition()
Datal.Caption = "第" &(9).AbsolutePosition + 1& "条记录"
End Sub
请根据【说明】和图1-19的显示结果,从以下备选答案中为(1)~(9)空缺处选择正确的答案。(以下部分选项可重复选择) 【备选答案】A.Datal.Refresh
B.Datal.Recordset.Update
C.Datal.Recordset
D.Datal.Recordset.CancelUpdate
E.Datal.Recordset.AddNewF.Datal.Recordset.MoveNextG.Datal.Recordset.MoveLastH.cmdDelete.Enabled=NotcmdDelete.Enabled
第2题
空缺处的语句填写完整。
【说明】
某绘图系统定义了一个抽象类Ishape,现有3个类Cpoint,CLine和Ccircle,它们都具有IShape界面。相应的类图关系如图5-11所示。
已知某第三方库已经提供了XCircle类,且完全满足CCircle图元显示时所需的功能。【Visual Basic代码6-1】是抽象类IShape类模块内容。【Visual Basic代码6-2】实现了类CCircle的IShape界面,并使用了XCircle提供的显示功能。
XCircle提供的显示功能方法接口为displayIt。
【Visual Basic代码6-1】
Publie Color As Long
Sub draw()
'方法体不包括可执行语句
End Sub
Sub move(stepx As Single, stepy As Single)
'方法体不包括可执行语句
End Sub
【Visual Basic代码6-2】
(1)
Private color As Long
… '其他定义省略
Private ridged As (2)
Private Sub Class_Initialize()
Set bridged=(3)
End Sub
Private Property (4) ()As Long
IShape_Color=color
End Property
Private Property (5) (ByVal newColor As Long)
Color=newColor
End Property
Private Sub IShape_draw() 使用XCircle提供的显示功能
(6)
End Sub
Private Sub IShape_move(stepx As Single, stepy As Single)
… '省略描述
End Sub
第3题
阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。
【说明】
某超市集团为发展业务向社会公开招聘N个工种的工作人员,每个工种各有不同的编号(1至M)和计划招聘人数。每位应聘者需申报两个工种,并参加集团组织的考试。该集团公司将按应聘者的成绩从高分至低分的顺序进行排队录取。具体录取原则是:从高分到低分依次对每位应聘者先按其第一志愿录取;当不能按其第一志愿录取时,便将他的成绩扣去5分后,重新排队,并按其第二志愿录取。
以下C程序为输出各工种实际招聘的应聘人员,每个工种都保留一个录取者的有序队列。录取处理循环直至招聘额满或已对全部应聘者都作了录取处理后跳出。
C程序中,类型STU包含有应聘者的基本信息:编号、成绩、志愿、排队成绩和录取志愿号。数组 rzl)的每个元素对应一个工种,包含有计划招聘人数和已录取的人数。
【C程序】
include
define N 36
define EDMARK 5
typedef struct stu {
int no, total, z[2], sortm, zi;
struct stu *next;
} STU;
struct rznode {
int lmt, count;
STU *next;
} rz [N];
STU *head = NULL, *over = NULL;
int all
FILE *fp;
char dataf [ ] = "zp2008.dat" ;
print(STU *p)
{ for (;p!=NULL; p = p->next)
printf( "%d(%d) \t" , p->no, p->total
}
insert(STU **p, STU *u)
{ STU *v, *q;
for (q = *p;q != NULL; v = q , (1) )
if (q-> sortm < u->sortm)
break;
if ( q == *p)
(2);
else
(3);
u->next = q ;
}
main ( )
{ int zn, i, no, total, zl, z2 ;
STU *p, *v, *q;
fp = fopen(dataf, "r" );
if (fp == NULL)
{ printf ("Can't open file %s.kn" ,dataf);
exit (0);
}
fscanf (fp, "%d" ,&zn);
for (all = 0, i = 1; i <= zn; i++)
{ fscanf (fp, "%d", &rz [ i ].lmt ;
rz[i].count = 0;
rz[i].next = NULL;
all +=(4);
}
for (;;)
{ if (( fscanf(fp, "%d%d%d%d" ,&no,&total,&zl,&z2)) != 4 )
break;
p = ( STU *) malloc (sizeof (STU));
p->no = no;
p->total = p->sortm = total;
p->zi = 0;
p->z[0] = z1;
p->z[1] = z2;
(5);
}
fclose (fp);
for (;all && head != NULL;)
{ p = head;
head = head->next;
if (rz[p->z[p->zi]].count <(6))
{ rz[p->z[p->zi]].count ++;
insert(&rz[p->z[p->zi]].next,p);
all--;
continue;
}
if (p->zi >= 1 )
{ p->next = over;
ver = p;
continue;
}
p->sortm -= DEMARK;
(7);
insert(&head,p);
}
for (i = 1; i <= zn; i++ )
{ printf("%d:\n" ,i);
print( rz[i ].next);
printf(" \n");
}
printf( "over:\n" );
print(head);
print(over);
printf(" \n");
}
第4题
阅读以下函数说明和C程序,将C程序中(1)~(6)空缺处的语句补充完整。
【说明】
喜迎2008年北京奥运会!以下【C程序】能将一个给定汉字(例如,奥运会的“会”字)的点阵逆时针旋转90°,并输出旋转前后的点阵数据及字形。
图1-15是汉字“会”字的16×16点阵字形,用数字0表示空白位置,用数字1表示非空白位置,“会”字的第1行即可表示成如下的{0,1}序列:
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
如果把它看做一个字的16个位,“会”字的第1行可以用十六进制数0100来表示。同理,“会”字的第2行可以用十六进制数0240表示,第3行可以用十六进制数0420表示……依此类推,用16个双字节整型数即可存放一个汉字点阵字形。“会”字的点阵数据及字形如图1-15的左半部分所示。
将一个汉字逆时针旋转90°,就是把该汉字点阵的最右列作为旋转后新点阵的第1行,次最右列作为旋转后新点阵的第2行……依此类推来形成一个旋转后的点阵字形。图1-15的右半部分就是将“会”字逆时针旋转90°后的点阵数据和字形(提示:读者可将书本顺时针旋转90°,以查看旋转90°后的点阵字形)。
在【C程序】中,数组old存放着“会”字的16个双字节整型点阵数据。函数turnleft能将该点阵数据逆时针旋转90°,旋转后的点阵数据存放在数组new中。函数display能将旋转前后的点阵数据加以编辑,用字符“.”表示值为0的位,用字符“x”表示值为1的位,从而将旋转前后的点阵按行输出其十六进制的数据和字形,如图1-15所示。
【C程序】
include <stdio.h>
define EMPTY '.'
define NONEMPTY 'x'
define LEFT 0
define RIGHT 1
main ()
{ static unsigned old[16]=
{ 0x0100,0x0240,0x0420,0x0810,0x1004,0x23c2,
0x4001,0x8ff8,0x0100,0x0200,0x0400,0x0800,
0xl000,0x2004,0x7ffe,0x0001
};
unsigned new[16];
turnleft (old, new);
display (old,new);
}
turnleft (old,new)
unsigned old[],new[];
{ int row, k;
for (row=0;row<16;row++)
for ((1);k<16;k++)
new[row]|=((old[k]>>(2))&1) <<(3);
}
display (old, new)
unsigned *old,*new;
{ char out[2] [17],letter[2];
int row, col;
letter[O] = EMPTY;
letter[1] = NONEMPTY;
out[LEFT] [16]=out[RIGHT] [16]=(4);
for (row = 0;row<16;row++,old++,new++)
{ for (col = 0;co1<16;++col)
{ out[LEFT] [col] = letter[ ((5)) &1];
out[RIGHT] [col] = letter[ ((6)) &1];
}
printf("\n %4x %s",*old,&out[LEFT] [0]);
printf("%4x %s",*new,&out[RIGHT] [0]);
}
}
第5题
阅读以下说明及Visual Basic程序代码,将应填入(n)处的字句写在对应栏内。
【说明】
以下程序为求行列式X(5,5)的值S。
【Visual Basic代码】
Private Function col ( byval x ( 5,5 ) as integer ) as long
dim fesult as long
dim temp as long
dim I as integer
dim j as integer
dim k as imeger
result = 0
for I = to 5
(1)
for j = 1 to 5
if I+j>6 then
k= ( 1+j ) mod 5
else
k=1
endif
temp=temp*x ( k,j )
(2)
result=(3)
(4)
(5)
End function
第6题
阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。
【程序】
include < stdio. h >
main( )
{ FILE * fp;
char str[100]; int i=0;
if((fp=fopen("text.txt"(1))) ==NULL)
{ printf("can't open this file. \n") ;exit(0) ;}
printf(" input astring: \n" ); gest(str);
while( str[i] )
{ if(str[i] >='a' && str[i] <='z')
str[i]=(2);
fputc(str[i],(3));
i++;
}
fclose(fp);
fp=fopen(" test.txt",(4));
fgets(str, 100, fp);
printf("%s\n" ,str);
(5);
}
第7题
阅读以下说明及Visual Basic程序代码,将应填入(n)上处的字句写在对应栏内。
[说明]
字符组合:程序界面如图示,在文本框Text1中输入若干个任意字符,单击“颠倒”按钮,将这些字符按相反的顺序显示在标签Lable1 中,并在标签Labs1 2处显示字符的个数。例如:输入abcabc2,显示为 2cbabca,组成字符数为4。
[Visual Basic 代码]
Private Sub cmdshow_ Click (
Dim n As Integer
Dim I As Integer
Dim str1 As String
N=Len ( Text1.Text )
For I=n To Step- 1
Str1=(1)
Next I
Labe11. Caption=Str1
End Sub
Private Sub cmdcount_ Click ( )
Dim n As Integer
Dim in As Integer
Dim i As Integer
Dim j As Integer
Dim flag As Integer
Dim str1 As Integer
Dim str2 As Integer
N=(2)
Str1 =Mid$ ( Text1.Text, i. 1
For I =2 To n
Str2=mid$ ( Text1,Text,I,1
M=Len (str1)
(3)
For j=1 To m
If (4) Then flag= 1; Exit For
Next j
If flag<>1 then str1=str1& str2
Next I
Lable2.Caption=(5)
End Sub
第8题
阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
函数diff的功能是:根据两个由整数(都大于-32768)按升序构成的单链表L1和L2(分别由A,B指向)构造一个单链表L3(由*r指向),要求13中的所有整数都是L1,并且不是 L2中的整数,还要求L3中的所有整数都两两不等。
【函数】
include < malloc. h >
typedef struct node {
int d;
struct node * next
} Node;
void diff(Node *A,Node * B,Node * * r)
{
int lastnum;
Node * p;
*r = NULL;
if( ! A) return;
while((1))
if(A->d < B ->d)
{
lastnum =A -> d;
p= ( Node * ) malloc( sizeof(Node) );
p->d = lastnum;
p->next= *r;(2);
do
A = A -> next;
while((3));
}
else if(A->d > B->d)
B=B- >next;
else {
(4);
lastnum=A -> d;
while ( A && A->d = = lastnum) A=A-> next;
}
while(A)
{
lastnum=A->d;
p=( Node * ) malloc( sizeof(Node) );
p-> d = lastnum;
(5);
*r=p;
while (A && A->d = = lastnum) A=A->next;
}
}
第9题
阅读以下说明和流程图,填补流程图中的空缺(1)~(5),将解答填入对应栏内。
【说明】
下面流程图的功能是:在已知字符串A中查找特定字符串B,如果存在,则输出B串首字符在A串中的位置,否则输出-1。设串A由n个字符A(0),A(1),…,A(n-1)组成,串B由m个字符B(0),B(1),…,B(m-1)组成,其中n≥m>0。在串A中查找串 B的基本算法如下:从串A的首字符A(0)开始,取子串A(0)A(1)…A(m-1)与串B比较;若不同,则再取子串A(1)A(2)…A(m)与串B比较,依次类推。
例如,字符串“CABBRFFD”中存在字符子串“BRF”(输出3),不存在字符子串“RFD”(输出-1)。
在流程图中,i用于访问串A中的字符(i=0,1,…,n-1),j用于访问串B中的字符(j=0,1,…,m-1)。在比较A(i)A(i/1)…A(i+m-1)与B(0)B(1)…B(m-1)时,需要对 A(i)与B(0)、A(i+1)与B(1)、…、A(i+j)与B(j)等逐对字符进行比较。若发现不同,则需要取下一个子串进行比较,依此类推。
【流程图】
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!