| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1019 人关注过本帖
标题:[求助]紧急求助编个简单的计算器出了问题
只看楼主 加入收藏
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
结帖率:100%
收藏
 问题点数:0 回复次数:8 
[求助]紧急求助编个简单的计算器出了问题
本人刚刚学习VB,想编一个简单的计算器程序(界面如图)
图片附件: 游客没有浏览图片的权限,请 登录注册

,过程中出了个问题,真的不知道出在什么地方,麻烦各位大虾帮忙解决一下,下面的是其中的一段代码,其中的linshizifu是全局变量用来存储用户点击一个数字按钮后的数字,定义的anniu变量赋了初值是0,在单击运算法则(+,-,×,÷)后anniu的值相应的变成1,2,3,4
zifu1是用来存储第一个运算数的,zifu2是用来存储第二个运算数的。例如:5+56 对应的zifu1是5 zifu2是56
用if语句判断anniu的值的情况来得知用户有没有按运算符(+,-,×,÷) 要是没按那么还是属于第一个运算数,因此用zifu1 = zifu1 & linshizifu语句来使得zifu1自动增加,要是anniu的值不是0了表示用户按了其中一个运算符号,那么对zifu2进行增加。但是运行过程中根本增加不了,zifu1和zifu2始终是空的,不知道怎么搞的。。。我调试的时候跟踪了一下zifu1,zifu2显示的是这样的:如图
图片附件: 游客没有浏览图片的权限,请 登录注册
我定义zifu1和zifu2的时候是这样定义的dim zifu1 as string*20 , zifu2 as string*20

Private Sub Command2_Click()
linshizifu = Command2.Caption
Picture1.Print linshizifu;
If anniu = 0 Then
zifu1 = zifu1 & linshizifu
Else
zifu2 = zifu2 & linshizifu
End If
End Sub


各位给点指示吧!!!!!!!!!!!
搜索更多相关主题的帖子: 计算器 变量 anniu 数字 法则 
2006-05-19 18:58
xinfresh
Rank: 4
等 级:贵宾
威 望:13
帖 子:594
专家分:0
注 册:2006-1-13
收藏
得分:0 

E-mail:xinfresh@QQ:383094053校内:http:///getuser.do?id=234719042
2006-05-19 22:27
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
刚学VB,还有好多不是很了解
希望各位指点指点
那个计算器我已经编好了,传上来大家看一看
jBGJTMWL.rar (160.52 KB) [求助]紧急求助编个简单的计算器出了问题



这个社会太复杂。。。
2006-05-20 02:28
xinfresh
Rank: 4
等 级:贵宾
威 望:13
帖 子:594
专家分:0
注 册:2006-1-13
收藏
得分:0 
首先建议你计算器就不要写的太花心,这些东西仿佛跟计算器没什么关系,而且,程序图标个性一点就可以了,不用把指针也弄成那样吧,很难点到按钮了……
图片附件: 游客没有浏览图片的权限,请 登录注册


问题一,这个算式不懂怎么会有这种结果:
图片附件: 游客没有浏览图片的权限,请 登录注册


问题二,为什么可以输入n位小数点?
图片附件: 游客没有浏览图片的权限,请 登录注册


问题三,用减号当负数的话,它就认不得了……
图片附件: 游客没有浏览图片的权限,请 登录注册


E-mail:xinfresh@QQ:383094053校内:http:///getuser.do?id=234719042
2006-05-20 10:28
xinfresh
Rank: 4
等 级:贵宾
威 望:13
帖 子:594
专家分:0
注 册:2006-1-13
收藏
得分:0 
代码发上来好不好

E-mail:xinfresh@QQ:383094053校内:http:///getuser.do?id=234719042
2006-05-20 10:29
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 

Option Explicit
Dim zifu1 As String, zifu2 As String, linshizifu As String * 1, anniu%, num1#, num2#, result#
Private Sub Command1_Click()
linshizifu = Command1.Caption
Picture1.Print linshizifu;
If anniu = 0 Then
zifu1 = zifu1 & linshizifu
Else
zifu2 = zifu2 & linshizifu
End If
End Sub

Private Sub Command10_Click()
linshizifu = Command10.Caption
Picture1.Print linshizifu;
If anniu = 0 Then
zifu1 = zifu1 & linshizifu
Else
zifu2 = zifu2 & linshizifu
End If
End Sub

Private Sub Command11_Click()
num1 = Val(zifu1)
num2 = Val(zifu2)
Select Case anniu
Case 1
result = num1 + num2
Picture1.Print "=" & result
Case 2
result = num1 - num2
Picture1.Print "=" & result
Case 3
result = num1 * num2
Picture1.Print "=" & result
Case 4
If num2 = 0 Then
Picture1.Print " 输入错误.被除数不能为零"
Else
result = num1 / num2
Picture1.Print "=" & result
End If
Case 5
result = num1 ^ num2
Picture1.Print "=" & result
End Select

End Sub

Private Sub Command12_Click()
linshizifu = Command12.Caption
Picture1.Print linshizifu;
If anniu = 0 Then
zifu1 = zifu1 & linshizifu
Else
zifu2 = zifu2 & linshizifu
End If
End Sub

Private Sub Command13_Click()
Picture1.Print Command13.Caption;
anniu = 1
End Sub

Private Sub Command14_Click()
Picture1.Print Command14.Caption;
anniu = 4
End Sub

Private Sub Command15_Click()
Picture1.Print Command15.Caption;
anniu = 3
End Sub

Private Sub Command16_Click()
Picture1.Print Command16.Caption;
anniu = 2
End Sub

Private Sub Command17_Click()
zifu1 = ""
zifu2 = ""
anniu = 0
Picture1.Cls
End Sub

Private Sub Command18_Click()
Dim a%
a = Shell("C:\Program Files\Internet Explorer\IEXPLORE.EXE", 1)
End Sub

Private Sub Command19_Click()
Dim a%
a = Shell("regedit.exe", 1)
End Sub

Private Sub Command2_Click()
linshizifu = Command2.Caption
Picture1.Print linshizifu;
If anniu = 0 Then
zifu1 = zifu1 & linshizifu
Else
zifu2 = zifu2 & linshizifu
End If
End Sub

Private Sub Command20_Click()
Dim a%
a = Shell("C:\Program Files\Outlook Express\msimn.exe", 1)
End Sub

Private Sub Command21_Click()
Dim a%
a = Shell("C:\WINDOWS\explorer.exe", 1)
End Sub

Private Sub Command22_Click()
Dim a%
a = Shell("C:\Program Files\Windows Media Player\wmplayer.exe", 1)
End Sub

Private Sub Command23_Click()
Dim a%
a = Shell("C:\WINDOWS\system32\taskmgr.exe", 1)
End Sub

Private Sub Command24_Click()
Dim a%
a = Shell("C:\WINDOWS\system32\notepad.exe", 1)
End Sub

Private Sub Command25_Click()
Dim a%
a = Shell("C:\WINDOWS\pchealth\helpctr\binaries\msconfig.exe", 1)
End Sub

Private Sub Command26_Click()
linshizifu = Command26.Caption
Picture1.Print linshizifu;
anniu = 5
End Sub

Private Sub Command27_Click()
num1 = Val(zifu1)
If num1 >= 0 Then
result = Sqr(num1)
Picture1.Print "开方=" & result
Else
Picture1.Print " 负数不能开方"
End If
End Sub

Private Sub Command28_Click()
linshizifu = "-"
Picture1.Print linshizifu;
If anniu = 0 Then
zifu1 = zifu1 & linshizifu
Else
zifu2 = zifu2 & linshizifu
End If
End Sub

Private Sub Command3_Click()
linshizifu = Command3.Caption
Picture1.Print linshizifu;
If anniu = 0 Then
zifu1 = zifu1 & linshizifu
Else
zifu2 = zifu2 & linshizifu
End If
End Sub

Private Sub Command4_Click()
linshizifu = Command4.Caption
Picture1.Print linshizifu;
If anniu = 0 Then
zifu1 = zifu1 & linshizifu
Else
zifu2 = zifu2 & linshizifu
End If
End Sub

Private Sub Command5_Click()
linshizifu = Command5.Caption
Picture1.Print linshizifu;
If anniu = 0 Then
zifu1 = zifu1 & linshizifu
Else
zifu2 = zifu2 & linshizifu
End If
End Sub

Private Sub Command6_Click()
linshizifu = Command6.Caption
Picture1.Print linshizifu;
If anniu = 0 Then
zifu1 = zifu1 & linshizifu
Else
zifu2 = zifu2 & linshizifu
End If
End Sub

Private Sub Command7_Click()
linshizifu = Command7.Caption
Picture1.Print linshizifu;
If anniu = 0 Then
zifu1 = zifu1 & linshizifu
Else
zifu2 = zifu2 & linshizifu
End If
End Sub

Private Sub Command8_Click()
linshizifu = Command8.Caption
Picture1.Print linshizifu;
If anniu = 0 Then
zifu1 = zifu1 & linshizifu
Else
zifu2 = zifu2 & linshizifu
End If
End Sub

Private Sub Command9_Click()
linshizifu = Command9.Caption
Picture1.Print linshizifu;
If anniu = 0 Then
zifu1 = zifu1 & linshizifu
Else
zifu2 = zifu2 & linshizifu
End If
End Sub

Private Sub Form_Load()
anniu = 0
End Sub

Private Sub 打开cmd_Click()
Dim a%
a = Shell("cmd.exe", 1)
End Sub
————————————————————————————————————————————
上面是代码,由于我刚学VB 2个星期,所以好多不知道怎么弄,书一半还没看到。。。。好多算法不知道怎么实现。。。例如楼上提出的这个问题,负数先点减号不行,我当时也想用减号,但是不知道怎么写程序。。所以就另外加了一个按钮。。。。另外大家也可以从我的这个程序代码中看出,用于计算的只定义了两个变量zifu1和zifu2来记录用户输入,所以多个数同时输入的话就会接在zifu2后面,所以就出问题了。。这个问题我想通过多定义几个变量应该可以解决。。。我会继续学,然后来改进这个计算器。。。。我现在想我的这个计算器的实现算法可能不太好,由于写的时候第一想到的就是这个算法,所以就写了,现在写出来了才发现有好多弊端。。。。我会继续改进。。。也希望各位指点一下本菜鸟。。。。


这个社会太复杂。。。
2006-05-20 13:04
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 

再问一下,如果要在picture上实现换行,请问代码怎么写?


这个社会太复杂。。。
2006-05-20 13:09
xinfresh
Rank: 4
等 级:贵宾
威 望:13
帖 子:594
专家分:0
注 册:2006-1-13
收藏
得分:0 
Picture.Print一下

E-mail:xinfresh@QQ:383094053校内:http:///getuser.do?id=234719042
2006-05-20 13:13
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
那个我知道啊,你理解错了我的意思了,我是说就算一次print但是当输出的东东超出了picture的边界后就换行,那个要怎么用代码实现。。。可是picture又没有自动换行的功能。。。。

这个社会太复杂。。。
2006-05-20 13:39
快速回复:[求助]紧急求助编个简单的计算器出了问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.086291 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved