阅读以下说明和流程图,填写流程图中的空缺,将解答填入对应栏内。 【说明】 如果n位数(n≥2)是回文数(从左到右读与从右到左读所得结果一致),且前半部分的数字递增(非减)、后半部分的数字递减(非增),则称该数为拱形回文数。例如,12235753221就是一

admin2021-03-13  32

问题 阅读以下说明和流程图,填写流程图中的空缺,将解答填入对应栏内。
【说明】
如果n位数(n≥2)是回文数(从左到右读与从右到左读所得结果一致),且前半部分的数字递增(非减)、后半部分的数字递减(非增),则称该数为拱形回文数。例如,12235753221就是一个拱形回文数。显然,拱形回文数中不含数字0。
下面的流程图用于判断给定的n位数(各位数字依次存放在数组的各个元素A中,i=1,2,…,n)是不是拱形回文数。流程图中,变量T动态地存放当前位之前一位的数字。当n是奇数时,还需要特别注意中间一位数字的处理。
【流程图】

注1:“循环开始”框内给出循环控制变量的初值、终值和增值(默认为1),格式为:循环控制变量=初值,终值[,增值]。
注2:函数int(x)为取x的整数部分,即不超过x的最大整数。

选项

答案(1)n-i+l (2)T (3)T (4)n (5)T或A[(n-1)/2]或A[n/2]

解析 本题考查程序员对流程图的理解和设计能力。
流程图开始时先对T变量清0,也就是说可以假设该数字序列之前还有一个数字0。接着需要用i循环来判断该数字序列是否对称:第i个数字A是否等于倒数第i个数字。第1个数字A[1]应与第n个数字A[n]比较,第2个数字A[2]应与倒数第2个数字A[n-1]比较……第i个数字A应与第n-i+1个数字A[n-i+1]比较。因此,(1)中应填写n-i+1。n为偶数时,i循环应到i=n/2结束;n为奇数时,i循环应到n/2之前的一个整数结束。所以,不管n是偶数还是奇数,i循环应从1开始到int(n/2)结束。
接着,A应与存放前一个数字的T比较,即(2)中应填写T。如果数字在递增(非减),则当前的A应放入T,为下次比较使用,即(3)中应填写T。如果判断结果是数字在严格递减,则跳出循环,确定该数字序列并不是拱形回文数。
i循环正常结束后,还需要判断n是偶数还是奇数。对偶数情况,则已确保该数字序列是拱形回文数。对奇数情况还有中问一个数字需要处理。判断n是偶数还是奇数,可以用判断2*int(n/2)是否等于n来实现。所以,(4)中应填写n。
n为奇数时,该序列的正中间一个位置为(n+1)/2,需要判断其数字是否大于或等于前一个数字(位置为(n-1)/2,也即n/2的整数部分,曾保存在T中)。只有判断成立时才能确保该数字序列是拱形回文数。因此(5)中应填写T,或A[(n-1)/2],或A[n/2]。
转载请注明原文地址:https://kaotiyun.com/show/V2jZ777K
0

最新回复(0)