- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
结构化程序设计基础
例3—1将a数组的内容按颠倒的次序重放,在操作时,只能借助于一个临时存储单元而不得另外开辟数组。
说明:
假设数组a有n个元素,则a[1]的值最终要放在a[n]中,反之a[n]的值最终要存放在a[1]中,通过交换二者的赋值可实现这一目的。类似地,a[2]应与a[n-1]交换,a[3]应与a[n-2]交换,如此进行下去直到每对要交换的元素的值都交换过为止。程序中使用变量I和j存放当前要交换赋值的两个数组元素的下标,开始时,i=1,j=n,每交换赋值一次,则I增加1,同时j减少1,当i=j时,交换结束。
程序清单
program ex3_1(input,output);
const maxn=10;
var I,j,n,temp:integer;
a:array[1..maxn]of integer;
begin
write(‘input n:’);readln(n);
write(‘input’,n,’data into array:’);
for I:=1 to n do read(a[I]);readln;
writeln(‘the original array:’);
for I:=1 to n do write(a[I]:5);writeln;
I:=1;j:=n;
while Ij do
begin
temp:=a[I];a[I]:=a[j];a[j]:=temp;
I:=I+1;j:=j-1;
end;
writeln(‘the array has been inverted:’);
for I:=1 to n do write(a[I]:5);writeln;
end.
例3—2设计一个程序,从所有数组中找出最大的一个元素,并指出它是哪一个元素。
说明:
程序中设置一个变量max,先将第一个元素的值存入max,然后从第二个元素开始逐个与max比较,如果max比当前的元素小,则把max的值变成当前元素的值,并记录其下标。这样当所有元素都与max比较完后,max的值即是所有元素中的最大值。
程序清单
program ex3_2(input,output);
const maxsize=100;
type arraytype=array[1..maxsize] of integer;
var I,k,n,max:integer;
a:arraytype;
begin
write(‘input n:’);readln(n);
writeln(‘input’,n,’data into array:’);
for I:=1 to n do read(a[I]);readln;
max:=a[1];k:=1;
for I:=2 to n do
if maxa[I] then begin max=a[I];k:=I;end;
writeln(‘max=a[‘,k,’]=’,max);
end.
例3—3将一个十进制自然数转换成二进制数。
说明:
将十进制数转换成二进制数,一般采用除二取余法。如果用一个数组b来存入二进制数,可以依次把所得的余数存入b[0],b[1],…b[n],最后按b[n],b[n-1],…b[1],b[0]的顺序输出这些余数,就得到了相应的二进制数。
程序清单:
program ex3_3(input,output);
var I,j,n:longint;
b:array[0..31] of 0..1;
begin
write(‘input n:’);readln(n);write(n,’=(‘);
I:=0;
while n0 do
begin
b[I]:=n mod 2;
I:=I+1;
n:=n div 2;
end;
for j:=I-1 downto 0 do write(b[j]);
writeln(‘)2’);
end.
例3—4打印如下形式的杨辉三角。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
……
说明:
杨辉三角的每一行中的第一个数和最后一个数均为1,其余位置上的数可利用其上一行中的数递推计算出来,其值为上一行中位于同一列和前一列的两个数之和。如果某一行有n个数,分别存放在数组元素a[1],a[2],…,a[n]中,则其下一行有n+1个数,这n+1个数分别是1,a[1]+a[2],a[2]+a[3],…,a[n-1]+a[n],1,在所有的计算式中,a[n]只在计算第n个数时被用到一次,我们可用a[n]存储a[n-1]+a[n]的值,算出a[n]后,余下的式子中a[n-1]只在计算n-1个数时被用到一次,我们可用a[n-1]存储a[n-2]+a[n-1]的值,依次类推,直到a[1]+a[2]的值存入a[2]。程序中采用逐行输出的方式打印杨辉三角,只需
文档评论(0)