Private Sub Form_Click()
Dim s As String, i As Integer, flag As Boolean
s = "THIS IS A BOOK"
s = LCase(s)
Print s
flag = True
For i = 1 To Len(s)
If Mid(s, i, 1) = "" Then
flag = True
ElseIf flag Then
s = Left(s, i - 1) & UCase(Mid(s, i, 1)) & Right(s, Len(s) - i)
flag = False
End If
Next i
Print s
End Sub
答案第二行是 This Is A Book
但是我VB程序执行过之后显示的是This is a book
但是我怎么感觉应该都是THIS IS A BOOK,我感觉UCase(Mid(s, i, 1))这句应该把每一个字母都变为了大写啊,还有ElseIf flag Then这句,到底是默认flag 为flase还是true ,应该是false吧
可不可以仔细讲一下
VB 这道题可以仔细看看吗
答案:3 悬赏:50 手机版
解决时间 2021-03-14 13:15
- 提问者网友:我是女神我骄傲
- 2021-03-14 00:00
最佳答案
- 五星知识达人网友:野味小生
- 2021-03-14 01:22
关键在于这句:
If Mid(s, i, 1) = "" Then
当双引号紧挨着写,中间没有空的时候,表示零长度字符串,因为每次按这条语句截取出的字符串都不会是零长度的,那么只有在字符串开头时,Flag才会是True,所以只有第一个字母被转为大写,故出现你运行的答案:
This is a book
如果写作" ",中间有一个空格时,程序每次遇到空格时,都会将Flag置为True,空格后面的字符都转为了大写,符合书上的答案:
This Is A Book
不知你和书到底谁弄错了。
至于ElseIf flag Then这行,其实等效于:
ElseIf flag=True Then
想一想,当你看到诸如
If a>b Then的时候,其实就应该理解为:
IF (a>b)=True Then
If Mid(s, i, 1) = "" Then
当双引号紧挨着写,中间没有空的时候,表示零长度字符串,因为每次按这条语句截取出的字符串都不会是零长度的,那么只有在字符串开头时,Flag才会是True,所以只有第一个字母被转为大写,故出现你运行的答案:
This is a book
如果写作" ",中间有一个空格时,程序每次遇到空格时,都会将Flag置为True,空格后面的字符都转为了大写,符合书上的答案:
This Is A Book
不知你和书到底谁弄错了。
至于ElseIf flag Then这行,其实等效于:
ElseIf flag=True Then
想一想,当你看到诸如
If a>b Then的时候,其实就应该理解为:
IF (a>b)=True Then
全部回答
- 1楼网友:污到你湿
- 2021-03-14 03:29
【1】
s = Left(s, i - 1) & UCase(Mid(s, i, 1)) & Right(s, Len(s) - i)
主要是这句话,而且执行这句话的时候,i是=1,之后就flag=false就不再走入这行代码了
s="this is a book"
Left(s, i - 1)=Left(s, 1 - 1)=Left(s, 0) = ""
UCase(Mid(s, i, 1))=UCase(Mid(s, 1, 1)) ="T"
Right(s, Len(s) - i) = "his is a book"
所以最终s="This is a book"
【2】
ElseIf flag Then
等价于
ElseIf flag = true Then
- 2楼网友:骨子里都是戏
- 2021-03-14 02:48
选d
a)123%------%表示整型
b)123&------&表示长整型
c)&o123-----&o表示八进制转为十进制。
比如
private sub command1_click()
text1.text = &o777
end sub
运先后显示511
(777)8=7*8*8+7*8+7=511
d)呵呵…………肯定是不合法的整型常数。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯