没事干,发一下去年去比赛的题目。
目录
第一题 30分
题目:
“姐姐,乘除法运算太难了,有什么办法能熟练掌握吗?”今年
读小学四年级的表弟向李红求救。为了提高表弟的运算能力,李红所
在的编程兴趣小组决定开发小学生数学测试系统。请你参考样例的功
能及要求,完成程序的编写及调试。程序代码文件以“题 1”命名,
保存到桌面个人文件夹中。
程序运行参考样例
下面是要求
内容 | 要点 | 分值 |
功能 选择 界面 | 提供菜单选择“1.两位整数的乘法运算。2.两 位整数的除法运算。3.退出”并能根据不同的选择 进入不同的功能。 | 5 |
2 位 数 内 的 整 数 乘 法 练 习 系 统 设 计 | 1.由用户输入练习的题目数量 n(3<n<100)。 2.自动产生乘数与被乘数(要求:乘数和被乘数均 为不超过 99 的 2 位整数,每题练习乘数和被乘数 自动随机变化)。 3.用户输入答案:(1)答案正确,出现提示信息 “回答正确,你真厉害”,进入下一题;(2)回 答错误,出现提示信息“回答错误,继续加油”, 进入下一题。 4.统计用户正确答题数及正确率(正确率=(正确 答题数/总练习题数)*100,按“四舍五入”方式 进行取整),当正确率 95%以上,显示“你真优秀!”, 当正确率在 80%-95%之间,显示“非常不错!”, 当正确率在 60%-80%之间,显示“加油,你可以更 好!”当正确率小于 60%,显示“加油,你一定可 以的!”。 | 17 |
2 位 数 内 的 整 数 除 法 练 习 系 统 设 计 | 1.由用户输入练习的题目数量 n(3<n<100)。 2.自动产生被除数和除数(要求:两个数均为不超 过 99 的整数,且两数是整除关系,每题练习被除 数和除数自动随机变化)。 3.用户输入答案:(1)答案正确,出现提示信息 “回答正确,你真厉害”,进入下一题;(2)回 答错误,出现提示信息“回答错误,继续加油”, 进入下一题。 4.统计用户正确答题数及正确率(正确答题数/总 练习题数)*100,按“四舍五入”方式进行取整), 当正确率 95%以上,显示“你真优秀!”,当正确 率在 80%-95%之间,显示“非常不错!”,当正确 率在 60%-80%之间,显示“加油,你可以更好!”当 正确率小于 60%,显示“加油,你一定可以的!”。 | 5 |
退 出 功 能 | 当用户选择 3 时,程序结束运行。 | 3 |
要求2和要求3是一样的,先写要求2,只要写出了要求2,那么这题就过了。
来看看要求2。
小要求1是范围,小要求2是用random里的模块来随机生成数字。小要求3和4直接过。
当时在比赛的时候,我写完笔试部分时还有大概70分钟。然后在上机操作这里第一题就卡了差不多半小时。。 被题目数量卡住了。
小问题,想到了for循环,在for那里设置数量,如果到了就跳出。
其他的都不是问题,要求3其实就是要求2,把乘改成除就完事了
其实还有随机生成,我是没想到random的。
代码如下:
from random import randint
while True:
xuan_zhe = int(input("1.两位整数的乘法运算。\n2.两位整数的除法运算。\n3.退出\n请选择:"))
if xuan_zhe == 1:
c_x = int(input("欢迎使用两位整数的乘法运算练习\n请输入练习题目的数量:"))
print(c_x)
if c_x > 3 and c_x < 100:
correct_num = 0
for i in range(c_x):
cheng = randint(10,99)
bei_cheng = randint(10,99)
print("{} * {} = ".format(cheng,bei_cheng))
shur = int(input("请输入答案:"))
if shur == cheng*bei_cheng:
print('回答正确,你真厉害')
correct_num += 1
else:
print('回答错误,继续加油')
correct_rate = (correct_num/c_x)*100
if correct_rate >= 95:
print("你真优秀!")
elif correct_rate >= 80 and correct_rate < 95:
print("非常不错!")
elif correct_rate >= 60 and correct_rate < 80:
print("加油,你可以更好!")
else:
print("加油,你一定可以的!")
else:
print("数量为:3-100之间。请重新输入数量:")
elif xuan_zhe == 2:
cc_x = int(input("欢迎使用两位整数的除法运算练习\n请输入练习题目的数量:"))
print(cc_x)
if cc_x > 3 and cc_x < 100:
correct_num = 0
for i in range(cc_x):
bei_chu = randint(10, 99)
chu = randint(2, 99)
print("{} / {} = ".format(bei_chu, chu))
shur = int(input("请输入答案:"))
if shur == bei_chu / chu:
print('回答正确,你真厉害')
correct_num += 1
else:
print('回答错误,继续加油')
correct_rate = (correct_num / cc_x) * 100
if correct_rate >= 95:
print("你真优秀!")
elif correct_rate >= 80 and correct_rate < 95:
print("非常不错!")
elif correct_rate >= 60 and correct_rate < 80:
print("加油,你可以更好!")
else:
print("加油,你一定可以的!")
else:
print("数量为:3-100之间。请重新输入数量:")
elif xuan_zhe == 3:
print("程序运行结束")
break
第二题 30分
题目:
小金同学学完了进制转换后,对课后的不同进制数的加减法(如:
“1110B+10D-30H=”)很是头疼,爱动脑筋的小金突发奇想,能不
能用程序来完成这些作业呢?请帮小金完成代码编写。要求:输入加
数分别为二进制数、十进制数或十六进制数,输出和为十进制数。(程
序代码文件以“题 2”命名,保存到桌面个人文件夹中)。
输入输出样例:
注意看要求:输入加
数分别为二进制数、十进制数或十六进制数,输出和为十进制数。
但是写完第一题剩下的时间不多了,第二题都没写完,回到学校才写出来的。。
但是,我只是去看题目的,没想要奖
我的奖,我的荣誉证书
这题其实没什么好想的,判断输入的进制,然后计算就好了。
代码如下:
while True:
expression = input("请输入加数分别为二进制数、十进制数或十六进制数的表达式:")
if expression.find('B') != -1:
b_num = int(expression[:expression.find('B')],2)
else:
b_num = 0
if expression.find('D') != -1:
d_num = int(expression[expression.find('B')+1:expression.find('D')])
else:
d_num = 0
if expression.find('H') != -1:
h_num = int(expression[expression.find('D')+1:expression.find('H')],16)
else:
h_num = 0
result = b_num + d_num - h_num
print("{}={}D".format(expression,result))
原题目可以看我的资源。