编程分类题库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编程分类题库
逻辑判断问题
context 问题1(t1-1.pas)
【问题】甲乙丙丁戊五个人在运动会上分获百米、二百米、跳高、跳远和铅球冠军,有四个人猜测比赛结果:
A说:乙获铅球冠军,丁获跳高冠军。
B说:甲获百米冠军,戊获跳远冠军。
C说:丙获跳远冠军,丁获二百米冠军。
D说:乙获跳高冠军,戊获铅球冠军。
其中每个人都只说对一句,说错一句。
求五人各获哪项冠军。
【算法】用1,2,3,4,5分别代表百米、二百米、跳高、跳远和铅球5个项目,用a,b,c,d,e 分别代表五人。
如b=3 表示乙获跳高冠军。
用多重循环穷举出来。
【答案】甲乙丙丁戊
12435
context 问题2(t1-2.pas)
【问题】5家工厂的产品在一次评比中分获1,2,3,4,5,在公布结果前,已知E厂产品肯定不是第二、三名,五厂代表猜测评比结果,
A厂的代表说:E厂一定能获得第一名。
B厂的代表说:我厂的产品可能获第二名。
C厂的代表说:A厂的产品质量最次。
D厂的代表说:C厂的产品不是最好的。
E厂的代表说:D厂的产品会获得第一名。
公布结果后,证明只有产品获第一名和第二名的两个厂的代表猜对了。
求5个厂产品各获第几名。
【答案】ABCDE
52134
.context 逻辑判断(t1-3.pas)
\v谁是小偷\a问题3\a
\v谁获冠军?\a问题1\a
\v猜测产品质量评奖\a问题2\a
.context 问题3
【问题】有A、B、C、D四名偷窃嫌疑犯,其中一人是小偷,审问中,A说:“我不是小偷”,B说:“C是小偷”,C说:“小偷肯定是D”,D说:“C
在冤枉人”,有三人说真话,一人说假话,问到底谁是小偷?
字母塔问题
context 字母塔(t2-1.pas)
【问题】输出由字母组成的“字母塔”。
例如:输入C,则输出:
A
ABA ABCBA ABCDCBA
进制互化问题
context 进制1 (t3-1.pas)
【题目】键盘输入一个十进制的整数,及确定进制n,把这个数转换成相应的n进制输出。
(其中2〈=n〈=16)
例如:输入10,n=3则输出(10)10=(101)3
.context 进制2 (t3-2.pas)
【题目】把n进制的数化回十进制表示
如(10101)2=(21)10
.context 进制3(t3-3.pas)
【题目】任意进制间的互化。
把n进制的M转化成k进制表示
如m=ff n=16 k=2
则有(ff)16=(11111111)2
穷举法
context 钞票换硬币(t4-1.pas)
【题目】把一元钞票换成一分、二分、五分硬币(每种至少一枚),有哪些种换法?
【答案】461种
context 百钱买百鸡(t4-2.pas)
【题目】一只公鸡值5元,一只母鸡值3元,3只小鸡值1元,现用一百元要买一百只鸡,问有什么方案?
【答案】四种方案:
公鸡母鸡小鸡
①02575
②41878
③81181
④12484
.context 分书问题(t4-3.pas)
【题目】有A、B、C、D、E五本书,要分给张、王、刘、
赵、钱五位同学,每人只能选一本, 事先让每人把自
己喜爱的书法填于右表,编程找出让每人都满意的方
案。
【答案】四种方案
张王刘赵钱
①CABDE
②DACBE
③DBCAE
④DECAB
筛选法
context 筛选法(t5-1.pas)
【题目】统计楼梯级数。
一步跨二级多一级,一步跨三级多二级,如果分别用四、五、六、七去除级数分别余三、三、五、五。
要求用筛选法求这个楼梯最少有多少级。
【答案】383级
数学求值问题
.context 求最大公约数(t6-1.pas)
【题目】求两个正整数的最大公约数
【算法】用辗转相除法(参看P40例3)
.context 素数2(t6-2.pas)
【问题】任给一个自然数n,求出这个自然数不同因数的个数。
例如n=6时,因为1,2,3,6这四个数均是6的因数,故输出为total=4。
【算法】类似判断素数的方法。
如果发现n有一个≤sqr(n)的因数,必然同时有一个≥sqr(n)的因数。
例如:6有一个因数2,则必有另一因数3。
因为2*3=6
万年历问题
context 万年历(t7-1.pas)
【题目】输入年、月、日,求这一天是星期几。
【参考程序1】
【算法提要】求出这一天离公元1年的元旦有多少天days,然后对7求余
约瑟夫问题
.context 猴子选大王(t8-1.pas)
【问题】n只猴子选大王,选举办法如下:从头到尾1,2,3报数,凡报3的退出,余下的从尾到头1,2,3报数,凡报3的退出...如此类推,当剩下两
只猴子时,取这时报1的为王,若想当猴王,请问当初应占据什么位置?
【测试数据】
n │7 │10│20│100 │
──┼─┼─┼─┼──┼
位置│2 │ 8│16│ 77 │
.context 狐狸捉兔子(t8-2.pas)
【问题】围绕着山顶有10个洞,狐狸要吃兔子,兔子说:“可以,但必须找到我,我就藏身于这十个洞中,你从10号洞出发,先到1号洞找,第二次隔1个
洞找,第三次隔2个洞找,以后如此类推,次数不限。
”但狐狸从早到晚进
进出出了1000次,仍没有找到兔子。
问兔子究竟藏在哪个洞里?
【答案】2,4,7,9
方阵填数
.context 方阵填数1(t9-1.pas)
【题目】方阵填数:在一个N×N的方阵中,填入1,2,.....N×N个数,并要求构成如下的格式:
如N=4N=5
10 11 12 1 13 14 15 16 1
9 16 13 2 12 23 24 17 2
8 15 14 3 11 22 25 18 3
7 6 5 4 10 21 20 19 4
9 8 7 6 5
【算法分析】
例如N=4,观察图案,填数大致规律如下:
2 程序中用k 来控制每一次连续填多少个数
──→ │ j 控制填数方向
↑ │2 │
3 │1↑ ↓ │4个数
│ ←1 │
←─────↓
3个数
.context 方阵填数2(t9-2.pas)
【题目】方阵填数:在一个N×N的方阵中,填入1,2,.....N×N个数,并要求构成如下的格式:
N=4N=5
1 3 4 10 1 3 4 10 11
2 5 9 11 2 5 9 12 19
6 8 12 15 6 8 13 18 20
7 13 14 16 7 14 17 21 24
15 16 22 23 25
【算法分析】
例如N=4,观察图案,是以右上→左下,或左下→右上这样的斜向来填数的。
1 2 3 4 这个方向可用j 取1与-1 来控制。
/ / / / 3 一共有7个斜行,每一斜行数的个数的规律1,2,3,4,3,2,1
/ / / / 2 例如第三斜行,其坐标变化规律:a[1,3]->a[2,2]->a[3,1]
/ / / / 1 第四斜行,a[4,1]->a[3,2]->a[2,3]->a[1,4]
/ / / / 坐标变化规律均是:在上一坐标基础上加1或减1
高精度运算
.context 阶乘(t10-1.pas)
【题目】数学上定义:
n!=1×2×3×...×(n-1)×n (N>0)
0!=1
若用integer型数据表示阶乘,最多可到7!,用Longint类型也只能到12!
要求输入正整数n,求n! 的精确表示
【算法分析】用数组存放结果,模拟人工计算过程,逐位去乘,注意进位情况的处理。
.context 乘法(t10-2.pas)
【题目】求m×n的值。
(m与n的位数均不超过255位)
【算法分析】由于m与n的位数太大,所以必须用高精度运算。
与高精度阶乘不同之处在于,如何处理部分积相加的问题.
两数相乘的高精度运算,其实即是用计算机来模拟手工进行两数相乘。
试看n=811,m=98 的情况:
811 用m的每一位(从低位到高位)去乘n的每一位,
× 98
------
6488
7299 <------------注意这里如何处理相加.同理,m的百位,千位.....
------- 乘n后的结果如何相加,也要处理好.
79478
【参考答案】
123456789*123456789=15241578750190521
1111111*111=123333321
9999999*99=989999901
987654321*987654321=975461057789971041
99999999999999999999*99999999999999999999=9999999999999999999800000000000000000001
字符串应用
.context 统计单词数(t11-1.pas)
【题目】读入一英文句子,单词之间用空格或逗号隔开,统计其中单词个数,并输出各个字母出现的频率。
(句子末尾不一定用"."结束)
【算法分析】要注意连续两个空格或逗号与空格连在一起时的误判断。
例如输入以下字符串:"abc_abc___abc,_abc___,_abc_,_." ( '_' 代表空格)
【题目】一个句子,只含英文字母,单词间用空格或逗号作为分隔符。
统计句子中的单词数,如果含有其他的字符,则只要求输出错误信息及错误类型。
含有大写字母错误类型error 1
数字(0-9) 错误类型error 2
其他非法字符错误类型error 3
如输入:It is 12!
输出:error 1 2 3
输入:i am ,a student
输出:4
.context 编码解码(t11-2.pas)
【题目】从键盘输入一个英文句子,设计一个编码、解码程序。
编码过程:先键入一个正整数N(1〈=N〉=26)。
这个N决定了转换关系。
例如当N=1,输入的句子为ABCXYZ时,则其转换码为ABCXYZ不变。
当N=2时,其转换码为BCDYZA,其它的非字母字符不变。
为使编码较于破译,将转换码的信
息自左而右两两交换,若最后仅剩单个字符则不换。
然后,将一开始表示转换关
系的N根据ascii表序号化成大写字母放在最前面。
如:abcABCxyzXYZ-/,1. n=3
①cdeCDEzabZAB-/,1. {根据N的值转换}
②dcCeEDazZbBA/-1,. {两两交换}
③CdcCeEDazZbBA/-1,. {最后编码}
解码过程为编码的逆过程。
其他应用题型
[题目]由数组成的图案(t12-1.pas)
如N=5则有:
1 2 4 7 1
3 5 8 2
6 9 3
0 4
5
[题目]化简繁分式
1
1+------------ 式子中共含N条分数线(1<=N<100)
1 要求化为一般分式
1+-------
......
1
1+ ---
2
[提要]算法不难,但要注意要用高精度运算.
[测试数据]
N=1: 3/2
N=20: 28657/17711
N=32: 9227465/5702887
N=60: 6557470319842/4052739537881
N=-1: error!
[题目]求字母代表的式子(t12-2.pas)
AHHAAH 每一个字母代表一个数字,求出式子.
-------=HA
GZOI
[题目]求数串的原始排列
前N个自然数排成一串: X1,X2,X3.....Xn
先取出x1,将x2,x3移到数串尾,再取出x4,将x4,x6移到数串尾,....... 类推直至取完. 取出的序列恰好是:1,2,3......n
要求输入N,求原来的数串的排列方式.。