测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A39905. 若要生成一个由若干小写字母组成的互不重复的随机数组,已知小写字母的ASCII码值为97~122整数范围,并将其进行从小到大输出,如图所示,请将相关程序补充完整。import random #random是随机数模块n=int(input("请输入元素个数(不超过26):"))a=[] #产生不重复的随机数组for i in range(n): x=random.randint(97,122) #…

填空题 中等

题目描述

若要生成一个由若干小写字母组成的互不重复的随机数组,已知小写字母的ASCII码值为97~122整数范围,并将其进行从小到大输出,如图所示,请将相关程序补充完整。


import random  #random是随机数模块

n=int(input("请输入元素个数(不超过26):"))

a=[]

 

#产生不重复的随机数组

for i in range(n):

    x=random.randint(97,122)  #产生97-122之间的随机整数

    while chr(x) in a:

        x=random.randint(97,122)

    a.append(        ①         )

print(a)

 

#将各个元素进行排序输出

for i in range(n-1):

    k=i

    for j in range(        ②         ,n):

        if a[k]>a[j]:

            k=        ③        

    if i!=k:

        a[i],a[k]=        ④        

print("该随机数组从小到大排列为:",a)

参考答案

import random #random是随机数模块 n=int(input("请输入元素个数(不超过26):")) a=[] #产生不重复的随机数组 for i in range(n): x=random.randint(97,122) #产生97-122之间的随机整数 while chr(x) in a: x=random.randint(97,122) a.append(chr(x)) print(a) #将各个元素进行排序输出 for i in range(n-1): k=i for j in range(i+1,n): if a[k]>a[j]: k=j if i!=k: a[i],a[k]=a[k],a[i] print("该随机数组从小到大排列为:",a)

答案解析

评分标准:

(1)chr(x);(4分)

(2)i+1;(4分)

(3)j;(4分)

(4)a[k],a[i]。(4分)


本题主要考查选择排序。程序的第一部分是产生不重复的字母组成的数组。由于x是97~122中的随机整数,故追加到a列表中的元素应在x的基础上将其转化为字符,故①空填写chr(x);在选择排序中,外循环控制排序趟数,内循环控制排序次数,不难看出,i的取值范围为0~n-2,因此j每次从i的下一个位置开始至最后,故②处填写i+1;根据选择排序的原理,在j位置上找到比k位置更小的元素,则k移至该位置,故③处填写为j;在某趟排序过程中,当全部元素比较结束,应在最小元素位置上,需要将其交换到相应的i位置上,故④位置答案应为a[k],a[i]。

上一题 下一题