在考生文件夹下有一个工程文件sjt5.vbp,已给出了所有控件(如图3—141所示)和部分程序。程序运行时,请按以下顺序操作: 1)单击“读入文件”按钮,把考生目录下的文件in5.dat中的内容读入内存并显示在上面的文本框(Text1)中; 2)单击“加密

admin2019-05-14  22

问题 在考生文件夹下有一个工程文件sjt5.vbp,已给出了所有控件(如图3—141所示)和部分程序。程序运行时,请按以下顺序操作:
1)单击“读入文件”按钮,把考生目录下的文件in5.dat中的内容读入内存并显示在上面的文本框(Text1)中;
2)单击“加密”按钮,则可对Text1中的内容进行加密并显示在下面的文本框(Text2)中。
3)单击“存结果”按钮则把Text2中的内容存到out5.dat文件中。
加密规则:对于第奇数个字符,若是字母,则把它变为它后面的字符(若为“Z”则变为“A”),不是字母则不变;对于第偶数个字符,若是字母,则把它变为它前面的字符(若为“A”则变为“Z”),不是字母则不变。大小写字母都遵循此规则。例如:
若原有的字符是:AbbaZGHa-MnnKYzx
则加密后的字符是:BaczAFGb-NmoiXaw
已经给出“存结果”按钮的Click事件过程和函数isletter,函数isletter(aAsString)判断变量a中是否为一个字母,若是则返回True,否则返回False,可以直接调用。
请编写“读入文件”按钮和“加密”按钮的Click事件过程,以实现上述功能。(in5.dat文件中只含英文单词和空格,不分段落和行)
注意:考生不得修改已经存在的程序,必须用“存结果”按钮存储加密结果,否则无成绩。最后,按原文件名把程序存盘。

选项

答案步骤1:打开考生文件夹中的本题工程文件sjt5.vbp,在代码编辑窗口指定位置编写以下代码。 参考代码: Private Sub Command1_Click() Open"in5.dat"For Input As1 Line Input#1,s Close#1 Text1.Text=s End Sub Private Sub Command2_Click() Dim i As Integer,ss As String ss=" " For i=1To Len(s) If isletter(Mid(s,i,1))=True Then If i Mod2=0Then If Mid(s,i,1)="a"Then ss=ss&"z" ElseIf Mid(s,i,1)="A"Then ss=ss&"Z" Else ss=ss&Chr(Asc(Mid(s,i,1))-1) End If Else If Mid(s,i,1)="Z"Then ss=ss&"A" ElseIf Mid(s,i,1)="Z"Then ss=ss&"a" Else s=ss&Chr(Asc(Mid(s,i,1))+1) End If End If Else ss=ss&Mid(s,i,1) End If Next Text2.Text=ss End Sub 步骤2:按<F>键行程序,先单击“读入文件”按钮,接着单击“加密”按钮,然后单击“存结果”按钮保存结果,最后单击窗体右上角的关闭按钮结束程序。 步骤3:按要求将文件保存至考生文件夹中。

解析 分析题目可知,本题中“读入文件”命令按钮中首先使用For Input方式打开文件,然后通过Line Input#语句将打开文件中的数据读出到变量s中并且赋给文本框。
在“加密”按钮的单击事件中,利用For循环对字符串s进行遍历,依次取出s中的每一个字符;如果循环变量i的值为偶数,接下来就要判断取出的字符是不是字母,如果是字母则进行Chr(Asc(Mid(s,i,1))-1)的转换,但是要计意如果为字母“A”或者“a”要转换为“z”或者“z”。同理,如果循环变量的值为奇数,如果取出的宁符是字母,则进行Chr(Asc(Mid(s,i,1))+1)的转换,如果为字母“z”或者“z”要转换为“A”或者“a”。最后将转换得到的字母连接起来即得到结果。
转载请注明原文地址:https://jikaoti.com/ti/QSN0FFFM
0

最新回复(0)