注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

冯尧 廊坊师范学院信息技术提高班 十一期

人生最大的错误就是坚持了不该坚持的,放弃了不该放弃的!!!

 
 
 

日志

 
 

课本中的小问题  

2014-02-05 15:28:37|  分类: 学后总结 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在vb课本179页我遇到了这样一个问题,说是编写程序实现将一个一维数组中的元素向右循环移动,移位次数有文本框Text1输入决定。如下图:
课本中的小问题 - 冯尧 - 冯尧 廊坊师范学院信息技术提高班 十一期
这是这个例子运行后的结果。
       这是这个例子的代码:
Private Sub moveright(x() As Integer)
    Dim u As Integer, v As Integer, w As Integer
    u = UBound(x): y = x(u)
    For w = u To LBound(x) + 1 Step -1
        x(w) = x(w - 1)
    Next w
    x(LBound(x)) = y
End Sub
Private Sub Command1_Click()
     Dim a(10) As Integer, i As Integer, j As Integer, k As Integer
     For i = 0 To 10
        a(i) = i
     Next i
     j = Val(Text1.Text)     k = 0
     Do
        k = k + 1
        Call moveright(a)
     Loop Until k = j
     For i = 0 To 10
        Print a(i);
     Next i
End Sub
       我遇到的问题就是,如果我在Text1中输入0或者什么都不输入会显示“溢出”错误,我调试了很多次,通过MSDN也没能解决。后来经过师傅指点才发现其实就是循环问题,也就是说
   Do
       k = k + 1
       Call moveright(a)
   Loop Until k = j
这个循环在Text1为0或者为空时是不能实现的,Text1为0或者为空时j永远是0,而k最小为1,所以循环肯定不能实现,于是才会显示溢出错误。如果改一下代码,将循环改为 :
Do While k > j
    k = k + 1
    Call moveright(a)
Loop
这样的话Text1为0或者为空时就都能实现了,但是这个代码还有一个缺点,就是当Text1为其他值时,这个循环是不会移动的,就像下图:
课本中的小问题 - 冯尧 - 冯尧 廊坊师范学院信息技术提高班 十一期
尽管Text1的值是3,可是数组还是没有移位,如果把循环代码改为:
Do While k < j
    k = k + 1
    Call moveright(a)
Loop
这样的话无论Text1的值是什么就都能实现了。
       其实说着个小例子就是想说自己学习的弊病,我对于vb来说可谓是零基础,学起来比较费劲,遇到不会的问题总是逃避,总感觉vb对自己来说是很大的障碍,是一个自己不敢越过的障碍,要不也不至于遇到问题就逃避。在学习的过程中,总是出现这种情况,什么什么都看不懂,即使例子能够自己实现也不能理解,但是心里很是惧怕,不懂的话也没有说多花些时间好好看看,总想着也许以后做多了就理解了,于是就一直拖到现在有些东西还是不懂,真的不知道我这么做对不对,不知道这些问题在以后的学习过程中能不能解决。我一定要努力改正自己的这些弊病,强迫自己去改变,勇敢的去面对遇到的问题,即使解决不了也要试一试,跟自己说声加油!
 
  评论这张
 
阅读(52)| 评论(41)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017