一、 编程题
第一题 (难度系数 1,满分 50 分)
编程实现:
用 1、3、5、8这几个数字,能组成的互不相同且无重复数字的三位数各是多少? 总共有多少个?
输入:
无
输出:
多行数字,每行一个三位数
组成的三位数的总个数
将程序命名为“lq001”。
评判标准:
10 分: 能输出至少一个三位数字;
30 分: 输出了多于 10 个三位数字,且确实不重复;
50 分: 完全符合题意,即在 30 分标准的基础上, 正确地输出了可组合的三位数和组合后三位数的总数量。
第二题 (难度系数 2,满分 50 分)
编程实现:
打印出 1~1000之间包含3的数字;
如果3是连在一起的(如233) 则在数字前加上&;
如果这个数字是质数则在数字后加上*,例: (3,13*,23*,&33,43*…&233*…)。
输入:
无
输出:
按照题意输出的数字,每行一个数字;
样例输出:
将程序命名为“lq002”。
评判标准:
10 分:完成打印 1~1000 之间包含 3 的数字
30 分: 在 10 分标准的基础上,找出其中的连 3,前面加&
50 分: 在 30 分标准的基础上,找出其中的质数,后面加*
第三题 (难度系数 3,满分 50 分)
编程实现:
让用户在一次输入时输入N个数字(2<=N<=15,即每次输入的数字数量不同),数字之间以“,”作为分隔。
然后组合显示:
(1)用户输入的数字个数;
(2)用户输入的最小的数字;
(3)将用户输入的数字按从大到小进行排列输出,数字之间以“,”作为分隔;
(4)如果用户输入的数字小于等于26,则找到相对应的26个大写英文字母 (1对应“A”,26对应“Z”),
并拼接在一起打印显示, 如果输入的数字在1~26之外则不显示相应字母。(例:程序输入214,则显示输出 “[bad]”)。
输入:
N 个数字,2<=N<=15
输出:
输入的数字个数
输入的最小数字
输入的数字从大到小排列
输入的数字所对应的字母
样例输入:
9,12,15,22,5,21,214
样例输出:
7
5
214,22,21,15,12,9,5
ILOVEU[bad]
将程序命名为“lq003”。
评判标准:
10 分: 正确输出用户输入的数字个数
20 分: 在 10 分标准的基础上,正确输出用户输入的最小数字
40 分: 在 20 分标准的基础上,正确地将用户输入的数字按从大到小进行排序输出
50 分: 完全符合题意,即在 40 分标准的基础上,正确完成显示数字对应字母的环节
第四题 (难度系数 3,满分 50 分)
在Turtle 画布上画出5个随机大小的五角星。
具体要求:
Turtle 画布的大小为:宽800像素,高600像素;
一共绘制5个五角星;
每个五角星的在画布内的显示位置是随机的, 五角星之间允许产生重叠甚至是完全覆盖,但每个五角星都要完整地显示在画布内;
在程序运行过程中应明显看出绘制过程,建议绘图速度为7;
每个五角星的线段颜色为黑色, 线宽为5,边长为[10~150]之间的随机长度,并用黄色填充; 提示:五角星的每个顶点的内角 (锐角) 为36度。
五角星的基本形状例如本题图-1所示:
将程序命名为“lq004”。
评判标准:
10 分:至少画出了一个形状正确的五角星,不论其大小、位置、颜色和填充与否;
20分:至少画出了一个形状、线段颜色、线宽正确的五角星;
40 分:生成了 5个随机位置、随机大小且形状和线段颜色都正确的五角星,随机与否需多次运行来验证;
50 分: 完全符合题意,即在 40 分标准的基础上, 多次运行程序后, 所有三角形都显示在画布范围内, 且填充颜色也为 黄色,也能明确看出绘画的过程。
第五题 (难度系数 5,总分 100 分,程序 1 满分 50 分,程序 2 满分 50 分)
分形树
步骤 1:
利用Turtle 画出如本题图-1所示的分形树。
要求:
树木主干向上生长;
分形层数为4 ,二叉树;
第一层树枝长度为60 ,逐层减 6;
左右树枝的倾斜角度不限,最终效果与图-1所示大致相同即可。
必须能看出绘图过程。
将程序命名为“lq00501”。
评判标准:
10 分:能够画出大致如图中的第一层树枝;
30 分:能够画出大致如图中的两层以上的树枝,且为二叉树;
50 分:完全符合题意,即:向上生长, 二叉树,层数为 4,树枝长度每层递减,能看出绘图过程。
步骤 2:
一、修改步骤 1 中生成分形树的方法:
分型层数改为4~6 之间的随机数;
第一层树枝长改为30~60 之间的随机数;
二、绘制分形树丛
在 800X600的屏幕中绘制分形树丛;
树木数量为50 棵;
每棵分形树的树根位置为屏幕范围内随机坐标点,树枝允许伸出屏幕窗口外;
以屏幕中心垂直线为分界,位于屏幕左侧的树木向左倾斜,位于屏幕右侧的树木向右倾斜;
绘制过程瞬间完成 (即看不到绘画过程)。
整体绘制样例如本题图-2所示
将程序命名为“lq00502”。
评判标准:
0 分:步骤 1 没有得到满分;
10 分:能在画布中画出50 颗随机位置的树木,即使朝向相同、层数固定;
30 分:在 10 分标准的基础上,能画出层数随机、树枝长短随机的分形树;
50 分:完全符合题意,即在 30 分标准的基础上, 能画出符合题意要求朝向倾斜的分形树,且绘画过程瞬间完成 (即看 不到绘画过程)。
第六题 (难度系数 6,满分 120 分)
编程实现: 商品管理系统
预先准备:
建立 userpass.txt
预先建立并存储用户信息文件。文件格式:以“,”分隔的一组用户名和密码信息。例如:
zhangsan,123456
建立 goods.txt
以自定义格式存储3个商品的信息(每个商品包含:商品编号,商品名称, 商品类型, 商品库存)。 文件内容样例 (仅供参考):
001,商品1,类型1,10;002,商品2,类型1,5;003,商品3,类型2,20
系统登录:
显示一个6位随机数(验证码),并提示用户输入用户名、密码和刚刚显示的6位验证码;
如果用户输入的用户名和密码与userpass.txt 文件中的信息相符合,且验证码也和提示的6位验证码相符
合,则继续程序进入系统主界面的初始状态 (见下文中的“系统主界面”->“初始状态”部分),例如以下过程:
说明:以为背景的是内容程序输出, 内容为用户输入:
您的登录验证码为386597
请输入用户名:zhangsan
请输入密码:123456
登录验证码:386597
身份验证通过,欢迎登录!
如果用户输入的用户名和密码与userpass.txt 文件中的信息不符合,或者验证码和提示的6位验证码不符
合,则登陆不成功,提示身份验证失败, 退出程序。例如以下过程:
说明:以为背景的是内容程序输出, 内容为用户输入:
您的登录验证码为386597
请输入用户名:zhangsan
请输入密码:123456
登录验证码:123456
身份验证失败!
>>>
系统主界面:
初始状态:显示从文件中读取所有商品的信息(包含商品编号,商品名称,商品类型,库存数量),并以“::”提示输入命令。
如果输入“add”,则添加商品。 要求客户输入商品编号, 商品名称,商品类型, 库存数量。输入时须判断
所有输入项不能为空,且库存数量必须为数字格式,输入后将新添加的商品存入文件, 并回到初始状态。
如果输入“count”,则计算并输出所有商品的库存数量之和。 并回到初始状态。
如此循环。
注意:在程序运行过程中,不论用户如何输入都不会出现红色error导致的程序异常结束 (利用try/except 语句)。
add 命令的输入输出过程可自行设计,输入输出样例(仅供参考) 例如:
说明:以为背景的是内容程序输出, 内容为用户输入:
::add
商品编号:004
商品名:商品4
商品类型:类型3
库存数量:30
001,商品1,类型1,10
002,商品2,类型1,5
003,商品3,类型2,20
004,,商品4,类型3,30
::
count 命令的执行过程例如:
说明:以为背景的是内容程序输出, 内容为用户输入:
::count
65
001,商品1,类型1,10
002,商品2,类型1,5
003,商品3,类型2,20
004,,商品4,类型3,30
::
评判标准:
20 分: 实现从userpass.txt 中读取用户信息并验证用户输入的用户名/密码的有效性; 通过修改userpass.txt 文件内 容来验证;
30 分:在 20 分标准的基础上,实现了显示 6 位随机数 (验证码) 并验证用户输入的验证码是否与之相符的功能;
50 分: 在 30 分标准的基础上,实现从文件中读取 3 个商品信息并显示在 Python 控制台中的功能;
70 分: 在 50 分标准的基础上,实现添加商品 (add 命令) 写入文件, 验证非空及数据类型, 并再次从文件中读取所有 商品显示的功能,回到系统主界面的初始状态,且 add 命令可多次执行;
100 分: 在 70 分标准的基础上,实现商品总库存量计算(count命令),并显示文件中所有商品, 重新回到系统主界面 的初始状态;且 count 命令可多次执行;
120 分: 在 100 分标准的基础上,整个程序运行过程中, 不论用户如何输入都不会出现红色 error 错误导致的程序出错 退出。