[code=vb
]Private Sub Command7_Click(Index As Integer)
m1 = Val(Text1.Text) '计算符号前取数1
suanfa = Command7(Index).Caption
Text1.Text = ""
End Sub
Private Sub Command6_Click()
m2 = Val(Text1.Text) '等号取数2
Select Case suanfa
Case "+"
Text1.Text = m1 + m2
Case "-"
Text1.Text = m1 - m2
Case "*"
Text1.Text = m1 * m2
Case "/"
If (m2 = 0) Then
Text1.Text = "除数不能为0."
Else
Text1.Text = m1 / m2
End If
这个是作业。。目前只能实现一次的加减。。如何连加连减呢?
End Select
End Sub
[/code]
]Private Sub Command7_Click(Index As Integer)
m1 = Val(Text1.Text) '计算符号前取数1
suanfa = Command7(Index).Caption
Text1.Text = ""
End Sub
Private Sub Command6_Click()
m2 = Val(Text1.Text) '等号取数2
Select Case suanfa
Case "+"
Text1.Text = m1 + m2
Case "-"
Text1.Text = m1 - m2
Case "*"
Text1.Text = m1 * m2
Case "/"
If (m2 = 0) Then
Text1.Text = "除数不能为0."
Else
Text1.Text = m1 / m2
End If
这个是作业。。目前只能实现一次的加减。。如何连加连减呢?
End Select
End Sub
[/code]
参考下面,尽管是C://有字符串
//1_22_333,,4444__55555,_666666
//需要解析为
//1
//22
//333
//_
//4444
//55555
//666666
#include <stdio.h>
char s[]="1_22_333,,4444__55555,_666666";
char c,*p,*p1;
int st;
void main() {
st=0;
p=s;
while (1) {
c=*p;
if (0==c) {
switch (st) {
case 1:printf("_\n"); break;
case 2:printf("%s\n",p1);break;
}
break;//
}
switch (st) {
case 0:
if ('_'==c) { st=0;}
else if (','==c) { st=1;}
else {p1=p; st=2;}
break;
case 1:
if ('_'==c) { st=1;}
else if (','==c) {printf("_\n"); st=1;}
else {p1=p; st=2;}
break;
case 2:
if ('_'==c) {*p=0;printf("%s\n",p1);*p=c;st=0;}
else if (','==c) {*p=0;printf("%s\n",p1);*p=c;st=1;}
else { st=2;}
break;
}
p++;
}
}
//1
//22
//333
//_
//4444
//55555
//666666
代码调试通过....Private Sub Form_Load()
Dim exp As String
exp = "3*4/6" '要计算的表达式,只支持从做往右的+-*/ 不支持小数运算 Dim strNum As String, strOpt As String '暂存数字
Dim str As String
Dim Result As Long, Num As Long
Dim i As Long For i = 1 To Len(exp)
str = Mid$(exp, i, 1) '每次取一个字符 If (IsNumeric(str) = False) Then '遇到运算符, Num = Int(strNum) '将之前的数字字符串转为数字
strNum = "" If Len(strOpt) = 0 Then '之前没有发现过标点符号,第一个数做为结果
Result = Num
Else
Result = CalIt(Result, Num, strOpt) '之前发现过标点符号,进行运算
End If
strOpt = str '记录新的标点符号 Else '没遇到运算符,合并到之前的数字
strNum = strNum & str
End If
Next If Len(strNum) > 0 Then
Num = Int(strNum)
Result = CalIt(Result, Num, strOpt)
End If MsgBox Result
End SubFunction CalIt(ByVal Num1 As Long, ByVal Num2 As Long, ByVal Opt As String) As Long If Len(Opt) = 0 Then Opt = "+" '默认运算符是加号 Select Case Opt
Case "+"
CalIt = Num1 + Num2 Case "-"
CalIt = Num1 - Num2 Case "*"
CalIt = Num1 * Num2
Case "/"
CalIt = Num1 / Num2 End Select
End Function