请教一道VB 二级题目,

窗体上有两个名称分别为text1和text2的文本框,text1的keyup的事件过程如下:
private sub text1_keyup(keycode as integer, shift as integer)
dim C as integer
text2.text=Chr(Asc(c)+2)
End sub
当向文本框text1中输入小写字母a时,文本框text2中显示的是( )
答案有, A ,a,C,c

1.题目抄错了。理由:①变量C未与text1_keyup事件截获的形参keycode、shift中的任何一个相联系,因此text2.text显示的Chr(Asc(C)+2)的运算结果与“在文本框text1中输入字母时”(确切地说,是“抬起按下的某个键时”)无关,所以text2.text的显示不可能是“A,a,C,c”中的任何一个;②“dim C as integer”将变量C定义为integer(同时VB将自动将未显式赋值的integer变量初始化为数值0),而紧随其后的“Text2.Text = Chr(Asc(c) + 0)”语句却对C求“ASC(C)”,犯了数据类型错误,该过程中的这个ASC(C)函数是无法执行的;③要使“当向文本框text1中输入小写字母a时,文本框text2中显示的是C”,则应修改该“private sub text1_keyup(keycode as integer, shift as integer)”过程为:

Private Sub text1_keyup(keycode As Integer, shift As Integer)
Dim C As String
C = Chr(keycode)
Text2.Text = Chr(Asc(C) + 2)
End Sub

2.“求解1102”的解释可能不妥(I'm sorry!)。理由:①正如“lsj136183”所说,如果C的值是"a"(注意:C是String型),则Asc(C)+2=99,Chr(Asc(C)+2)的结果是"c",不可能是"a";②dim C as integer 和 text2.text=Chr(Asc(c)+2) 中的两个c打没打错无所谓,因为VB中变量名大小写等效(实际上VB会自动将后续的同名变量名调整为与DIM语句的大小写一致),这点与VF相似而与VC不同;③VB的ke系列事件过程(包括keydown、keypress和keyup事件过程)中,形参keycode略有差异:keypress事件过程中的keycode包含了组合键(包括shift键、ctrl键、alt键)信息(这也许是keypress事件过程中只有形参keycode,没有形参shift的原因 );而keydown和keyup事件过程中keycode只管单一键,不管组合键,是当前所down或up的键的键码(请参看VB帮助中的“Keycode 常数”),对于字母键,形参Keycode的值等于当前所down或up的键的大写字母的ASCII码,所以,只要你down或up的是A键,不管是小写字母a或大写字母A,形参Keycode的值都是65,即大写字母A的ASCII码值,因此,变量C的值是Chr(keycode)=Chr(65)="A"(注意:C是String型),从而 Chr(Asc(C)+2)=Chr(65+2)=Chr(67)="C",所以,答案是"C"。追问

哇,你是学计算机的吧,解释得很详细,没注意看,题目还真抄错了,确实是Dim C As String,但题目没 C = Chr(keycode),我昨晚把题目打在VB6里面想验证是否答案为"C",但提示错误,我就奇怪了,我照着卷子上的题目,一个字一个字的打,怎么就有问题呢,原来是差一句C = Chr(keycode)。唉,坑爹的卷子。
谢谢你哦,高手
忘了给悬赏分了,追加给你吧,分不多但是心意哈

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-31
keyup事件是在键盘弹起时触发的,asc函数返回的是ASCii的值,而Chr函数可以将对应的ASCII的值转化为字符。你可以在vb中试试看,我觉得是a追问

呃 a肯定错了吧,Asc(c)+2等于97了,Chr(97)为c啊,但答案是大写的C 不明白是怎么回事

追答

dim C as integertext2.text=Chr(Asc(c)+2)你确定两个c没打错?要么就是你把c设为变量后,系统认为大小写的c是一样的。当你按下并弹起a键的时候,keyup事件会得到keycode的值,而定义变量c后,就把这个值赋值给变量c因此,c代表的是A的ASCII的值为97,在加2,通过chr转换为大写c。明白了吗?我是搞懂了。

追问

我太笨了,还是没懂,
但chr(67)="C" chr(99)="c" 哦,
刚才打错了不是 97 是99

第2个回答  2011-09-01
题目有问题,修改一下:
private sub text1_keyup(keycode as integer, shift as integer)
dim c as integer
c=keycode
text2.text=Chr(Asc(c)+2)
End sub

答案是小写字母c
第3个回答  2011-09-01
1DCBA2345
相似回答