CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  非技术类

请教一下,输出3个数的最大数和最小数,为何有时不能正常输出,请指教,谢谢

楼主greenberet007(阿宁)2005-02-03 23:32:45 在 VB / 非技术类 提问

代码如下:  
  Private   Sub   Form_Activate()  
  Dim   a,   b,   c,   t   As   Integer  
  a   =   InputBox("请输入第一个数",   "")  
  b   =   InputBox("请输入第二个数",   "")  
  c   =   InputBox("请输入第三个数",   "")  
  If   a   <   b   Then  
        t   =   a  
        a   =   b  
        b   =   t  
  End   If  
  If   a   <   c   Then  
        t   =   a  
        a   =   c  
        c   =   t  
  End   If  
  If   c   <   b   Then  
        Form1.Print   "最大的数是";   a;   "最小的数是";   c;  
  End   If  
  If   c   >   b   Then  
        Form1.Print   "最大的数是";   a;   "最小的数是";   b;  
  End   If  
  End   Sub 问题点数:0、回复次数:11Top

1 楼greenberet007(阿宁)回复于 2005-02-03 23:33:26 得分 0

我用另一个方法写的代码还是不行,请指教,谢谢  
  Private   Sub   Form_Activate()  
  Dim   a,   b,   c,   t   As   Integer  
  a   =   InputBox("请输入第一个数",   "")  
  b   =   InputBox("请输入第二个数",   "")  
  c   =   InputBox("请输入第三个数",   "")  
  If   a   <   b   Then  
        t   =   a  
        a   =   b  
        b   =   t  
  End   If  
  If   a   <   c   Then  
        t   =   a  
        a   =   c  
        c   =   t  
  End   If  
  If   c   >   b   Then  
        t   =   b  
        b   =   c  
        c   =   t  
  End   If  
  Form1.Print   "最大的数是";   a;   "最小的数是";   c;  
  End   Sub  
  Top

2 楼greenberet007(阿宁)回复于 2005-02-03 23:36:39 得分 0

输入的数字顺序为2,1,3;2,3,1时输出的为3,2  
  而其他的输入1,2,3;1,3,2;3,1,2;3,2,1都是正常的输出3,1  
  Top

3 楼bailerong(吉祥龙)回复于 2005-02-03 23:52:47 得分 0

dim   x,y,z  
  input   x  
  input   y  
  input   z  
  if   x>y   then    
  a=x  
  x=y  
  y=a  
  endif  
  if   y>z   then  
  a=y  
  y=z  
  z=a  
  endif  
  print   "最小数为:",x  
  print   "最大数为:",z  
  Top

4 楼bailerong(吉祥龙)回复于 2005-02-03 23:55:23 得分 0

哦~!还查一个IF!  
  if   x>a   then   .....Top

5 楼bailerong(吉祥龙)回复于 2005-02-03 23:56:01 得分 0

哦~!错了!是...  
  if   x>zTop

6 楼maomao9876(水晶宫毛毛)回复于 2005-02-04 07:33:37 得分 0

'楼主可能是想和大家开个玩笑,2怎么会小于1呢?  
  '  
  '================================================================================  
  '                                     以顺序输入2,1,3为例说明  
  '================================================================================  
  Private   Sub   Form_Activate()  
  Dim   a,   b,   c,   t   As   Integer  
  a   =   InputBox("请输入第一个数",   "")         'a的值为"2"  
  b   =   InputBox("请输入第二个数",   "")         'b的值为"1"  
  c   =   InputBox("请输入第三个数",   "")         'c的值为"3"  
  If   a   <   b   Then         '即   "2"   <   "1"   =   FAlSE,条件不成立  
        t   =   a  
        a   =   b  
        b   =   t  
  End   If  
  If   a   <   c   Then         '即   "2"   <   "3"   =   TRUE,条件成立  
        t   =   a     't   为整型,a   的值为"2",强制转换为整型赋值给t,   t   的值为2  
        a   =   c     'a   的值为   "2",   c的值为   "3",类型相同不做转换,赋值后   a、c的值都为   "3"  
        c   =   t     '*******关键在这里,c   的值为   "3",t   的值   2   直接赋值给整型变量   c,c   的值为2  
  End   If  
  '现在,a="3",b="1",c=2。说到这里,其实再往下解释就多余了^_^  
  If   c   <   b   Then     '   2<"1",条件成立,这里"1"被转换为ASC("1"),也就是49  
        Debug.Print   "最大的数是a";   a;   "最小的数是c";   c;  
  End   If  
  If   c   >   b   Then     '条件不成立  
        Debug.Print   "最大的数是a";   a;   "最小的数是b";   b;  
  End   If  
  End   SubTop

7 楼jadeluo(秀峰)回复于 2005-02-04 08:45:14 得分 0

还是写一个Max和一个Min函数能让程序更清晰:  
   
  Option   Explicit  
   
  Private   Function   Max(ByVal   a   As   Integer,   ByVal   b   As   Integer)   As   Integer  
          If   a   >   b   Then   Max   =   a   Else   Max   =   b  
  End   Function  
   
  Private   Function   Min(ByVal   a   As   Integer,   ByVal   b   As   Integer)   As   Integer  
          If   a   <   b   Then   Min   =   a   Else   Min   =   b  
  End   Function  
   
  Private   Sub   Form_Load()  
          Dim   a,   b,   c   As   Integer  
          a   =   InputBox("请输入第一个数",   "")  
          b   =   InputBox("请输入第二个数",   "")  
          c   =   InputBox("请输入第三个数",   "")  
          Debug.Print   "最小值=";   Min(Min(a,   b),   c)  
          Debug.Print   "最大值=";   Max(Max(a,   b),   c)  
          End  
  End   Sub  
  Top

8 楼greenberet007(阿宁)回复于 2005-02-04 09:54:46 得分 0

我现在就是搞不清楚,为什么我输入数字顺序为2,1,3;2,3,1时输出的为3,2  
  而其他的输入1,2,3;1,3,2;3,1,2;3,2,1都是正常的输出3,1  
  请高手指教,谢谢Top

9 楼greenberet007(阿宁)回复于 2005-02-04 10:21:17 得分 0

看来是字符串和数值之间的转换问题,我把代码修改了一下,经过测试,已经正确,谢谢各位高手指点。  
   
  Private   Sub   Form_Activate()  
  Dim   a,   b,   c,   t   As   Integer  
  aa   =   InputBox("请输入第一个数",   "")  
  bb   =   InputBox("请输入第二个数",   "")  
  cc   =   InputBox("请输入第三个数",   "")  
  a   =   Val(aa)  
  b   =   Val(bb)  
  c   =   Val(cc)  
  If   a   <   b   Then  
        t   =   a  
        a   =   b  
        b   =   t  
  End   If  
  If   a   <   c   Then  
        t   =   a  
        a   =   c  
        c   =   t  
  End   If  
  Form1.Print   "最大的数是";   a  
  If   c   >   b   Then  
        Form1.Print   "最小的数是";   b  
        Else:   Form1.Print   "最小的数是";   c  
  End   If  
  End   Sub  
  Top

10 楼pikachu8guan(30度仰角 (www.vbgood.com 新手学堂 Manager))回复于 2005-02-04 10:28:51 得分 0

逻辑思路不对   这是比较典型的初学者的问题   你去google看看     有很多写的很完整的求最大数的函数  
  而且不限制数的多少     也就是可以求3个数的最大值     也可以求100个数的最大值     她们写的容错都很好     你可以参考下Top

11 楼greenberet007(阿宁)回复于 2005-02-04 10:42:44 得分 0

请你指出我的逻辑思路哪里不对,方便我改正,谢谢Top

相关问题

  • 很急!问题:从键盘输入n个数,输出其最大数和最小数,n由键盘输入.答对后立即给分.
  • C++小问题,只用IF语句,怎么求三个数中的最大数和最小数;
  • 求四个数中的最大数
  • d5+access下粗难问题:急求5列中去掉最大数和最小数后,剩余3个数的平均值的sql语句(越简单越好)?
  • 如何找出日期字段中的最大数和最小数?
  • java中怎样实现在标准输出打印固定的小数个数?
  • 取出五个数中的最大数,用什么算法最快?
  • 求数据类型(如int)所能处理的最大数值与最小数值,调用函数是什么?
  • 一个求三个数中最大数的一小段C代码,为什么用不了,帮一下~ 多谢~!
  • 判断最大数

关键词

  • 个数
  • 最大数
  • 输入
  • inputbox
  • 输出
  • ifend
  • 谢谢
  • byval
  • sub
  • max

得分解答快速导航

  • 帖主:greenberet007

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo