30. 有以下程序段: int i,n; for(i=0;i<8;i++) { n=rand()%5; switch(n) { case 1: case 3:printf(:%d\n",n);break; case 2: case 4:printf("%d\n",n);continue; case 0:exit(0); } printf("%d\n",n); } 以下关于程序段执行情况的叙述,正确的是______
A.for循环语句固定执行8次
B.当产生的随机数n为4时结束循环操作
C.当产生的随机数n为1和2时不做任何操作
D.当产生的随机数n为0时结束程序运行
A B C D
D
[解析] 当产生的随机数n为0时,执行case 0: exit(0)这条语句,结束程序的运行。
31. 在窗体上画一个命令按钮和两个文本框,其名称分别为Command1、Text1和Text2,在属性窗口中把窗体的KeyPreview属性设置为True,然后编写如下程序: Dim S1 As String, S2 As String Private Sub Form_Load() Text1.Text="":Text2.Text="":Text1.Enabled=False:Text2.Enabled=False End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) S2=S2 & Chr(KeyCode) Print S2 End Sub Private Sub Form_KeyPress(KeyAscii As Integer) S1=S1 & Chr(KeyAscii) Print S1 End Sub Private Sub Command1_Click() Text1.Text=S1:Text2.Text=S2:S1="":S2="" End Sub 程序运行后,先后按“a”、“b”、“c”键,然后单击命令按钮,在文本框Text1和Text2中显示的内容分别为______。
A.abe和ABC
B.空白
C.ABC和abc
D.出错
A B C D
A
[解析] 常见的键盘事件有:KeyDown、KeyUp和KeyPress。当用户按下并释放一个可打印的键盘字符时,KeyDown、KeyPress、KeyUp事件将依次发生,KeyPress事件过程中不能识别键盘的按下与释放。 KeyDown(KeyCode As Integer, Shift as Integer)和KeyUp(KeyCode As Integer Shift as Integer)有两个参数,其中,KeyCode参数是表示所按键的位置信息的代码(将A和a作为同一个键返回,而从大键盘上输出的“1”和右侧小键盘上输入的“1”将被视作不同的字符);Shift参数代表按键时<shift>、<Ctrl>、<Alt>键的状态。KeyPress(KeyAscii As Integer)事件中KeyAscii参数是所按键的ASCII的代码,该参数不显示键盘的物理状态,而只是传递一个字符。KeyPress将每个字符的大、小写形式作为不同的键代码解释,即作为两种不同的字符。 本题Form_KeyDown事件过程的作用是:在按下键盘上的键后,将该键对应位置的字符(大写)连入字符串变量S2中。Form_KeyPress事件过程的作用是:在按下键盘上的键后,将该键键码对应的字符(区分大小写)连入字符串变量S1中。程序运行后,输入“abc”后单击命令按钮,S2="ABC",S1="abc"。
38. 在窗体上有一个名称为Command1的命令按钮,并编写有如下程序: Private Sub Command1_Click() Dim I As Integer,J As Integer Dim a(10,10)As Integer For I=1 To 3 For J=1 To 3 a(I,J)=(I-1)*3+J Print a(I,J); Next J Print Next I End Sub 程序运行后,单击命令按钮,窗体上显示的是______。