[建筑]编程基本能力和技巧.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[建筑]编程基本能力和技巧

编程基本能力和技巧 1 数组及其应用 这里还是只讲一些应用,基础知识自己看书或我提供的几个INTERNET资源。 1.下标的灵活运用 例如对称的情形,可以把下标设成: a:array[-5..5] of integer; 只要a[i]:=a[-i];就进行了一次“对称”的赋值。 2.常量数组 善用可以减少不少程序量。 例如P1-9《公式变形》。我的参考程序只有三十多行,主要是因为灵活的应用了数组, 包括一个常量数组一个变量数组,减少了不少麻烦。 典型的常量数组有: 增量型:如在国际象棋棋盘上“马”的八个方向的活动可以用两的增量数组表示: dx:array[1..8] of shortint=(1,2,2,1,-1,-2,-2,-1); dy:array[1..8] of shortint=(-2,-1,1,2,2,1,-1,-2); 移动第d个方向只需要: x:=x+dx[d]; y:=y+dy[d]; 枚举型:例如平年一年第N个月的天数: dcount:array[1..12] of shortint=(31,28,31,30,31,30,31,31,30,31,30,31); 便于修改。 3.避免下标越界 方法是{$R+} 4.数组的插入与删除 虽然数组应该避免频繁的插入与删除,但有时不可避免。方法如下: 插入:插入点以后每个元素往后移动一个位置,再插入: for i:=len downto p do a[i+1]:=a[i]; a[p]:=x; inc(len); 删除:删除点以后的每个元素往前移动一个位置,如: for i:=p to last do a[i]:=a[i+1]; dec(len); 2 字符串处理 字符串处理因为其灵活性常使初学者头疼!我以前也怕它,不过很快就适应了。 一般常用的处理是:(以下的例子中s是一个字符串) 1.扫描字符 第i个字符是s[i] 例如s=Hello, world! 则s[1]=H, s[6]=,, s[7]= ; s[13]=! s的长度是length(s) 那么把字符串反转后输出的方法就是 for i:=length(s) downto 1 do write(s[i]); 2.定位 就是查找子串 例如 s1=Hello, my friend!; s2=my; 则pos(s2,s1)=8,即s2在s1的第8个字符处出现 但pos(him,history)=0,因为him在history中并不出现 3.分割,合并,删除 仅举几个例子。 1)copy copy(Hello, my friend!,3,2)=ll 2)delete 若s=Hello, my friend; 执行delete(s,4,4) 后s=Helmy friend; 3) s1=Hi,; s2=Alan; 则s1+s2=Hi,Alan 4.与数字互化 s=1234; 执行val(s,v,code)后v=1234; code=0; code=0说明成功的将字符串转化为了数字,否则code0 v=4567; 执行str(v,s)后s=4567; 5.字符的ASCII码 请自己看有关的书籍,一定要掌握! 注意:对于时间要求严格的题目,字符串操作的时间问题也不能忽视。 6.一个例子: 输入k个字符串(中间可能有多个空格),把他们反着连在一起输出。 如: 输入:abc d e f gh 输出:ghfedabc 分析:只要把空格删除,就可以得到这些字符串。 var p:integer; s,s2:string; begin readln(s); s2:=; repeat while s[1]= do delete(s,1,1); {删去开头的多余空格} p:=pos( ,s); {找第一个空格}; if p=0 then s2:=s+s2 {没有找到} else begin s2:=copy(s,1,p-1)+s2; {加入到s2的前面} delete(s,1,p); {删去} end; until p=0; {没有空格了} writeln(s2); end. 3 整数的处理 主要是利用数学工具了。下面举几个例子。 1.求最大公约数gcd(greatest common divisor) 用欧几里德辗转相除法: function gcd(a,b:longint):longint; begin if a mod b=0 then gcd:=b else gcd:=gcd(b,a mod b); end; 2.求最小公倍数 利用(a,b)*[a,b]=a*b 即可。 例如: 100和140的最大公约数为20,那么 最小公倍数=100*140 div 20=700 3.分离数字 很简单,涉及到数字的问题都可以借助于字符串。 例如反

文档评论(0)

ctuorn0371 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档