CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  VFP

有几个程序。。我没看懂,能请看懂了的朋友帮我解释一下吗?

楼主mick729(浩子)2006-03-14 10:36:45 在 其他数据库开发 / VFP 提问

呵呵。。一直认为自己不适合学程序。。但是因为一些原因没办法。。必须得学。。  
   
  几个程序。。我没看懂,能请看懂了的朋友帮我解释一下吗?(当然是越详细越好,嘻嘻~~)  
  谢谢了~~  
  第一个:   
    这个程序是求一个英文句子中所含的单词数(单词间用1个或数个空格分格)。  
      set   talk   off  
                  clear  
                  num=0  
                  word=0  
                  accept   "请输入一个英文句子:"   to   s    
                  for   i=1   to   len(s)  
                      w=subs(s,i,1)  
                      if   w=space(1) &&这里的意思是不是说,如果是空字符串,就表示没有任何英文单词呢?  
                            word=0  
                      else  
                            if   word=0   &&关键就是不知道这里为什么条件是word=0。。?是不是还有别的填法呢?  
                                  word=1  &&word=1又是代表什么呢?。。。  
                                  num=num+1  
                            endif  
                      endif  
                  endfor  
                  ?num  
                  return  
   
  这个题目的问题在句子后面的&&。。  
   
  第二个:  
    以下程序的功能是,输入一个数n,随机产生n个0-99之间的整数,并从小到大排序。现从键盘上输入一个整数,要求把它插入到该数据中,插入后仍按原规律排序且不换行输出。  
    set   talk   off  
          clear  
          input   "n="   to   n  
          dime   A(n+1)       &&这里为什么是定义成A(n+1)呢?  
    for   i=1   to   n  
              a(i)=int(rand()*100)       &&好像对于随机函数我还不是很了解,这个是代表什么意思呢?  
    endfor  
          for   k=1   to   n-1  
              for   j=n   to   k+1   step   -1  
                  if   a(j)<a(j-1)  
                      x=a(j)  
                      a(j)=a(j-1)  
                      a(j-1)=x                 &&这里好像看懂了,就是说如果前一个数大于后面的数,就互换,只是               不懂k和j都分别代表什么呢。。?  
                  endif  
              endfor  
          endfor  
          input   "请输入一个数:"   to   b  
          for   i=1   to   n                     &&从这里好像就看不懂了。。  
              if   b<a(i)  
                  for   j=n   to   i   step   -1  
                      a(j+1)=a(j)                  
                  endfor  
                  a(i)=b  
                  exit   for  
              endif  
              if   b>a(n)  
                  a(n+1)=b  
              endif  
          endfor  
          for   i=1   to   n+1  
              ??a(i)  
          endfor  
          return  
   
  呵呵,辛苦大家了~~第二个程序,偶干脆看不懂了。。谢谢大家~麻烦帮我解释一下好吗?~ 问题点数:60、回复次数:14Top

1 楼apple_8180(十豆三)回复于 2006-03-14 10:48:38 得分 0

这种作业题,多看看书就明白了。  
   
  对不起,这里禁止发作业帖!Top

2 楼apple_8180(十豆三)回复于 2006-03-14 10:51:39 得分 0

对不起,忘记了,你的老师,一会看看。Top

3 楼apple_8180(十豆三)回复于 2006-03-14 11:15:09 得分 20

set   talk   off  
  clear  
  num=0  
  word=0  
  accept   "请输入一个英文句子:"   to   s    
  for   i=1   to   len(s)  
  w=subs(s,i,1)  
  if   w=space(1)   &&空字表示一个单词的结束  
  word=0  
  else  
  if   word=0   &&如果为0计一个单词  
  word=1   &&设为1表示这个空格是上一个单词的后面空格  
  num=num+1  
  endif  
  endif  
  endfor  
  ?num  
  return  
   
   
  不过上面代码有点麻烦,改为:  
   
   
   
  set   talk   off  
  clear  
  num=0  
  word=0  
  accept   "请输入一个英文句子:"   to   s    
  s=alltrim(s)  
  NUM=OCCURS(SPACE(1),S)+1  
  ?num  
  returnTop

4 楼apple_8180(十豆三)回复于 2006-03-14 11:19:09 得分 0

今天看球,回复慢一点!Top

5 楼TERRYYRRET(命运)回复于 2006-03-14 12:02:30 得分 0

十豆三兄终于现身了,身手很快了,呵呵Top

6 楼apple_8180(十豆三)回复于 2006-03-14 12:06:37 得分 10

SET   TALK   OFF  
  CLEAR  
  INPUT   "n="   TO   N  
  DIME   A(N+1)       &&防止输入了0,定义数组失败  
  for   i=1   TO   N  
  a(i)=INT(RAND()*100)       &&随机函数,参考帮助中的RAND()函数  
  endfor  
  FOR   k=1   TO   N-1  
  FOR   j=N   TO   k+1   STEP   -1  
  IF   a(j)<a(j-1)  
  x=a(j)  
  a(j)=a(j-1)  
  a(j-1)=x                 &&J和K均为变量  
  ENDIF  
  ENDFOR  
  ENDFOR  
   
  INPUT   "请输入一个数:"   TO   b  
  FOR   i=1   TO   N                     &&比较输入的数与随机抽出的数的大小,然后重新排序。  
  IF   b<a(i)  
  FOR   j=N   TO   i   STEP   -1  
  a(j+1)=a(j)  
  ENDFOR  
  a(i)=b  
  EXIT   FOR  
  ENDIF  
  IF   b>a(N)  
  a(N+1)=b  
  ENDIF  
  ENDFOR  
  FOR   i=1   TO   N+1  
  ??a(i)  
  ENDFOR  
  RETURNTop

7 楼TERRYYRRET(命运)回复于 2006-03-14 15:19:59 得分 0

豆三兄的回答问题1中的改进似乎有些欠妥吧?  
   
  如果句子前面有空格怎么办?  
   
  如果单词间有多个空格怎么办?  
   
  你的程序只是理想化的方法,看球看的太入迷了吧,理解理解。  
  Top

8 楼TERRYYRRET(命运)回复于 2006-03-14 15:24:23 得分 10

 
  这两个题其实是很基础的算法程序。经常出现在教科书的例题上,  
   
  建议楼主自己反复看一下,自然会理解其中道理,当然你不能连基本语法都不会啊。  
   
  向十豆三兄的无私奉献精神致敬!Top

9 楼apple_8180(十豆三)回复于 2006-03-14 15:33:08 得分 0

如果单词间有多个空格怎么办?  
   
  这个我考虑了,如果输入多了一个空格,那属于手误。  
  前面如果有空格,用ALLTRIM()去掉了。Top

10 楼guywei(测试)回复于 2006-03-14 21:09:32 得分 10

用GETWORDCOUNT不是来得更直接些Top

11 楼TERRYYRRET(命运)回复于 2006-03-14 21:33:50 得分 0

 
  那如果有手误的话,你的程序不就错了.  
   
  算法不健壮,我的个人意见啊.  
   
  其实十豆三兄这种举一反三的做法是很值得我去学习的.  
   
  Top

12 楼mick729(浩子)回复于 2006-03-14 22:23:34 得分 0

今天一天的课~我来了。。  
  嗯。。偶是一个很惭愧的老师啦。。一讲到程序。。我就会头脑打结,尤其是循环。。顺序结构和分支结构还好。。一循环。。我就不知道它是个什么运行法了。。  
  5555~~~真对不起,都有损老师在大家心目中的美好形象。  
  我在职高教高一、高二、高三的计算机专业,包括FLASH,计算机基础、WINDOWS2000和VFP,我们学校计算机专业老师太少了。。。  
   
  谢谢大家帮助我~不是我不懂基本的语法哦。。是真的我就看不懂循环。。尤其是那种有数组的循环。。怎么办啊?。。谁能好心教教我这个学习的方法也好。。  
  Top

13 楼apple_8180(十豆三)回复于 2006-03-15 09:24:54 得分 0

还是   guywei(测试)   的最简单  
   
  ?GETWORDCOUNT('ADFSD   SDFSADFD       FDFDF')  
   
  即使中间多了几处空格,结果也是3Top

14 楼dfwxj(清风)回复于 2006-03-23 00:39:12 得分 10

在看了第一题时,我就想到了apple_8180(十豆三)方案,不过我还考虑了容错,修改一句:  
   
    s=alltrim(s)  
   
  改为:  
   
  s=alltrim(strt(s,'     ','   '))  
   
  ****************************  
  另外:  
   
  DIME   A(N+1)       &&防止输入了0,定义数组失败  
   
  万一他高兴输入了-10呢?呵~~~~ABS吧  
   
  ******************  
   
  至于“?GETWORDCOUNT('ADFSD   SDFSADFD       FDFDF')”,确实很好,但不通用Top

相关问题

  • button控件一段代码,没看懂,请朋友帮忙解释一下
  • 那位能看懂下面这几行程序?请解释一下这是什么样的语法。
  • 看一个程序没看懂,求教
  • 请教一个没看懂的程序~
  • 需求程序解释
  • 求XML的解释程序
  • 帮忙解释解释程序
  • 到底是先看懂源程序还是先学好例子
  • 能告诉我怎么样才能看懂这段程序嘛?
  • 那个高手 能看懂这个程序段?

关键词

  • 函数
  • talk
  • 循环
  • word
  • 计算机
  • 看懂
  • 单词
  • 空格
  • 程序
  • endfor

得分解答快速导航

  • 帖主:mick729
  • apple_8180
  • apple_8180
  • TERRYYRRET
  • guywei
  • dfwxj

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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