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

A29697. 成绩系统小王同学编写了一个成绩录入和查询系统,能实现输入多个互不相同的分数,自动进行从高到低排名,同时输入要查询的分数,可以获得相应同学的姓名。程序运行结果如下图所示,实现代码如下,请你补全空缺处。n=int(input("请输入总人数:"))name=[""]*nscore=[0]*n#输入功能,分别输入姓名与分数for i in range(n): name[i]=input("请输入第"+…

填空题 中等

题目描述

成绩系统

小王同学编写了一个成绩录入和查询系统,能实现输入多个互不相同的分数,自动进行从高到低排名,同时输入要查询的分数,可以获得相应同学的姓名。程序运行结果如下图所示,实现代码如下,请你补全空缺处。

n=int(input("请输入总人数:"))

name=[""]*n

score=[0]*n

#输入功能,分别输入姓名与分数

for i in range(n):

    name[i]=input("请输入第"+str(i+1)+"个人名:")

    ______①______ =int(input("请输入第"+str(i+1)+"个分数:"))

#排名功能

for i in range(n-1):

    for j in range(0,n-1-i):

        if score[j]______②______score[j+1]:

            score[j],score[j+1]=score[j+1],score[j]

            name[j],name[j+1]=name[j+1],name[j]

print("——————各个同学分数排名如下——————")

print(name)

print(score)

#查询功能

i=0

______③______        

key=int(input("请输入要查询的分数:"))

b=-1

while i<=j and b==-1:

    m=(i+j)//2

    if score[m]==key:

        b=m

    elif score[m]<key:

        j= ______④______        

    else:

        i=m+1

if b==-1:

    print("没有同学获得该分数!")

else:

    print("分数为"+str(key)+"的同学是:"+ ______⑤______)

参考答案

n = int(input("请输入总人数:")) name = [""]*n score = [0]*n #输入功能,分别输入姓名与分数 for i in range(n): name[i] = input("请输入第"+str(i+1)+"个人名:") score[i] = int(input("请输入第"+str(i+1)+"个分数:")) #排名功能 for i in range(n-1): for j in range(0, n-1-i): if score[j] < score[j+1]: score[j], score[j+1] = score[j+1], score[j] name[j], name[j+1] = name[j+1], name[j] print("——————各个同学分数排名如下——————") print(name) print(score) #查询功能 i = 0 j = n-1 key = int(input("请输入要查询的分数:")) b = -1 while i <= j and b == -1: m = (i+j)//2 if score[m] == key: b = m elif score[m] < key: j = m-1 else: i = m+1 if b == -1: print("没有同学获得该分数!") else: print("分数为"+str(key)+"的同学是:"+name[m])

答案解析

评分标准:

(1)score[i](或等效答案);(3分)

(2)<(或等效答案);(3分)

(3)j=n-1(或等效答案);(3分)

(4)m-1(或等效答案);(4分)

(5)name[m](或等效答案)。(3分)

上一题 下一题