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分)