收藏 分享(赏)

自学c 编程百题.doc

上传人:hwpkd79526 文档编号:5998157 上传时间:2019-03-23 格式:DOC 页数:21 大小:83KB
下载 相关 举报
自学c  编程百题.doc_第1页
第1页 / 共21页
自学c  编程百题.doc_第2页
第2页 / 共21页
自学c  编程百题.doc_第3页
第3页 / 共21页
自学c  编程百题.doc_第4页
第4页 / 共21页
自学c  编程百题.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、1. 给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不D F G 同字母。编程求出这些数字并且打出这个数字的+ D F G 算术计算竖式。X Y Z D E2. 、五名学生有可能参加计算机竞赛,根据下列条件判断哪些人参加了竞赛:()参加时,也参加;()和只有一个人参加;()和或者都参加,或者都不参加;()和中至少有一个人参加;()如果参加,那么和也都参加。3. 打印一个 N*N 的方阵,为每边 打印出下面图形字符的个数(), 要求最 TTTTTTTTTTTTTTT外一层为“T“, 第二层为“J“, 从第三层 TJJJJJJJJJJJJJT起每层依次打印数字 1,2,3,

2、. TJ11111111111JT(右图以为为例) TJ12222222221JTTJ12333333321JTTJ12344444321JTTJ12345554321JTTJ12345654321JTTJ12345554321JTTJ12344444321JTTJ12333333321JTTJ12222222221JTTJ11111111111JTTJJJJJJJJJJJJJTTTTTTTTTTTTTTTT4. 在行列的数阵中, 数()在每行和每列中出现且仅出现一次,这样的数阵叫阶拉丁方阵。例如下图就是一个五阶拉丁方阵。编一程序,从键盘输入值后,打印出所有不同的阶拉丁方阵,并统计个数。1 2

3、 3 4 52 3 4 5 13 4 5 1 24 5 1 2 35 1 2 3 45. 输入一个十进数,将其转换成 N 进制数(0 0), 每件物品价值为 V1,VN (Vi0)。用这 N 件物品的某个子集填空背包,使得所取物品的总重量0,b0,a+b=1 (详见下图),数组 C 的面积 A=S1+S2+.+SN-1.编程要求如下:从键盘输入 N, 再输入两个具有 N 个分量的数组: A1,A2:ARRAY 1N OFINTEGER; 将 A1,A2 错位相加(详见后面的例子)得数组 A3, 求 A3 的面积.编程给出一个错位相加的方案, 使 A3 的面积最大.例: 设 N=3, A1=(3

4、,7,2), A2=(-5,7,-4), 则应考虑 9 种情况:(1) (2)A1 3 7 2 3 7 2A2 -5 7 -4 -5 7 -4A3 3 7 2 0 -5 7 -4 3 7 2 -5 7 -4(3) (9)A1 3 7 2 3 7 2A2 -5 7 -4 -5 7 -4A3 3 7 -3 7 -4 -5 7 -4 0 3 7 253. (工作安排问题) 现有 N (N8) 件工作, 分别由 N 个人完成, 每人都完成一件,且只完成一件, 每人完成不同工作的时间不同. 试设计一种分配工作方案, 使完成 N 件工作所需的总时间最少.原始数据由文本文件 EXAM1.TXT 给出, 其格

5、式如下:第 1 行: 工作任务数(N)第 2 - N+1 行: 第 i+1 行为第 i 个人完成各件工作所需的时间. 以上各数均为不超过 1000 的正整数.计算结果可直接在屏幕上输出: 第一行为工作分配方案, 共 N 组, 每组数据的形式为 a-b, 其中 a 为工作人员编号, b 为他应完成的工作序号.例: 设 EXAM1.TXT 的数据为:42 15 13 410 4 14 159 14 16 137 8 11 9对此, 一个正确的输出可以是1-4, 2-2, 3-1, 4-3TOTAL=2854. 求个字符串的最长公共子串,字符串长度不超过。例如:,由键盘依次输入三个字符串为What

6、is local bus ?Name some local buses.local bus is a high speed I/O bus close to the processer.则最长公共子串为“local bus“。( 参看程序 9 )55. (液晶显示) 下图是用液晶七笔阿拉数字表示的十个数字,我们把横和竖的一个短划都称为一笔,即有笔,有笔等。请把这十个数字重新排列,要做到两相邻数字都可以由另一个数字加上几笔或减去几笔组成,但不能又加又减。比如是允许的,不允许。编程打印出所有可能的排列。如:。56. (阶梵塔) 有根棒,第一根上放片大小不等的圆盘,并保持上小下大的顺序。现将片圆盘从

7、第根移至第根,移动中均保持上小下大的顺序,问最少移几次方得结果,求出移动方案。57. 某一印刷厂有六项加工任务,对印刷车间和装订车间所需时间见下表(时间单位:天)任务 1 2 3 4 5 6印刷车间 装订车间 如何安排加工顺序,使加工时间最少。58. 将万元投资到,三项目上,其利润见下表:投资额(万元) 项 0.11 0.13 0.15 0.24 0.24 0.30 0.35 0.12 0.16 0.21 0.25 0.25 0.29 0.34目 0.08 0.12 0.20 0.26 0.26 0.30 0.35如何分配投资额,使获得的利润最大。59. 无根树与通常所说的树(有根树)很相似,

8、它包含有节点和枝,但不含有根。无根树节点之间只有相邻关系。如图一所示,是一棵有七个节点的无根树,以图一的为根节点得到图二所示的有根树,以为根节点得到图三所示的有根树,但从无根树的角度看,图一、二、三是结构相同的无根树,同时无根树的结构与节点的名称无关。有根树可以用字符串的形式表示,其递归表示方法是:根节点(子树 子树 子树.)图一,图二的有根树可表示为 A(B(CF(EGD) 和 B(ACF(EGD)。由于子树的表示顺序可以不同,所以一棵有根树可以有多种表示方法,如图三又可表示成B(F(EGD)CA) 或 B(ACF(DE(G) 等。表示无根树时,可以以它任一节点为根节点,将其看作有根树,从而

9、可以利用有根树的字符串表示形式来表示无根树。任务一:由键盘读入一个字符串表示的无根树,无根树的各节点的名称用互不相同的大写英文字母表示。由用户输入一个节点的名称,程序应能够输出一种以该节点为根节点的字符串形式。程序输出无根树的字符串形式时,各个节点的名称无关紧要,所有节点都以表示,以后的各种输出也采用这种形式。例如:输入无根树的字符串形式:() ) ) ,指定根节点为,程序应能输出() ,() ,() )中的任意一种即可。任务二:输入两个串表示的无根树,判断其结构是否一样。注意它与节点名称无关,只考虑结构。任务三:输入无根树的总枝数(1=N=11) ,输出所有枝数为的互不相同的无根树,并记录总

10、数。以字符串形式输出,例如:N=5 时共有种不同结构的无根树。注意:各种树结构的字符串表达形式不唯一。60. 用()的格点阵代表海,其中号代表岛。给你一组编码信息,让你重构一张地图。这组信息是按垂直方向,水平方向岛的情况摘取的。下例中,每行右边的数字按顺序表示该行中“岛组”的大小,如第一行数字为“” ,表示该行第一“岛组”由一个岛组成,第二“岛组”由两个岛组成,而第四列下面的“”则表示本列由两个“岛组”组成,第一个“岛组”由两个岛组成,第二个“岛组”由三个岛组成。任务:编程执行以下步骤,直到给定的输入 (ASCII) 文件中的信息组全部读完为止,步骤如下:()从输入文件 (ASCII 文件)中

11、读入下一个信息块,并将它显示在屏幕上。每个信息块组成为:格点阵大小 (N),以后是行的约束条件(行的) ,列的约束条件(列的),每行(或每列)的约束条件是一行数字,数字间有空格,最后用结束。上面的例子如图所示。()重构这张地图(若有多个解,要逐个构成地图) ,并显示。()将重构的地图以文件形式输出。每岛以后加一个空格表示;空白处用连续的两个空格表示。若同一已知条件可画出多张地图,相互间用空行隔开;若一组已知条件画不出地图,用“ (占一行)表示。由不同的信息组求得的解用“ ” (占一行表示).61. 一个餐厅在相继的天里,第 i 天需要 Ri 块餐巾(i=1,2,.,N)。餐厅可以从三种途径得到

12、餐巾:(1) 购买新的餐巾,每块需分;(2) 把用过的餐巾送到快洗部,洗一块需天,费用需分();(3) 把餐巾送到慢洗部,洗一块需天(),费用需分()。在每天结束时,餐厅必须决定将多少块用过的餐巾送到快洗部,多少块送慢洗部,多少块保存起来延期送洗。在每天开始时,餐厅必须决定是否购买新餐巾及购买多少,使洗好的和新购的餐巾之和满足当天的需求量 Ri,并使天总的费用最小。请编程输入总天数,每天所需的餐巾块数以及每块餐巾的新购费用,快,慢洗费用,和所需天数,输出每天开始时需购新餐巾数,结束时送快,慢洗部和延期送洗的餐巾数。62. ( 旅行商 ) 一个推销员计划做一次旅行,他必须访问如图所示每个城市。每

13、两个城市的路径旁标有路径。要求从城市出发,访问每个城市一次,且只访问一次,最后返回城市,求一条距离最短的路线。63. (tic_tac_toe 游戏) tic_tac_toe 游戏的规则是:从一个空的 (N*N) 的棋盘(例如)开始,甲乙二人轮流将棋子放置在棋盘上未被占据的方格中,例如甲第一个放,他把棋子放在中央的方格里, 然后轮到乙放,他把棋子放在第一行中间的方格里。于是又轮到甲放,如此进行下去。判定胜负的方法是:若某一游戏者有枚棋子占据了一横行,或一竖列,或一对角线,则此人获胜;若直至整个棋盘被占满还没有一方获胜,则为平局。 64. 以字符串形式由键盘输入两个高精度的进制正整数,串长小于,

14、以第一个数为被除数,第二个数为除数,进行高精度除法运算,并显示按 8 进制表示的商和余数。( 参看程序 8 )65. ( NOI94.1_1 ) 键盘输入一个仅由小写字母组成的字符串,输出以该串中任取个字母的所有排列及排列总数。66. ( NOI94.1_2 ) 编程实现两个高精度实数减法,两数分别由键盘输入,均不超过位。( 参看程序 5 )67. ( NOI94.1_3 ) 一个实数数列共有项,已知 a(i)=(a(i-1)-a(i+1)/2+d,(i)(N60) , 键盘输入,d,a(1),a(n),m,输出 a(m)。68. ( NOI94.1_4 ) 键盘输入一个高精度的正整数,去掉其

15、中任意个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的和,寻找一种方案使得剩下的数字组成的新数最小。输出应包括所去掉的数字的位置和组成的新的正整数。 (不超过位)69. 在两个文本文件中各存有一个以西文制表符制成的未填入任何表项的表结构,分别称之为表和表,要求编程将表和表下述规则合并成表:规则:表在表之上,表和表的左边框对齐,将表的最低行与表的最顶行合并。例:在你的盘根目录下有两个文件 t0.1 和 t0.2,分别存放上述的表和表,经上述规则合并后得到表,放在文件中。三张表见下图: 表 表 表编程要求:(1) 程序应能自给定的文件中读入两个源表并显示。(2) 若源表有错,应能指

16、出其错。(3) 将表和表规则合并成表,并显示之。(4) 所有制表符的码应由选手自己从给出的示例文件中截取。70. (圆盘问题) 从左向右依次安放 4 根细柱 A,B,C,D. 在 A 上套有 N (N20)个直径相同的圆盘, 从下到上依次用连续的小写字母 a,b,c,.编号, 将这些圆盘经过 B, C 单向地移入 D (即不允许从右向左移动). 圆盘可在 B,C 中暂存. 从键盘输入 N, 及前 N 个小写字母的一个排列, 它表示最后在 D 盘上形成的一个从下到上的圆盘序列. 请用文本文件 ANS2.TXT 输出形成这一排列的操作过程.该文件的每一行为一个形如 “k M L“ 的字母序列, 其

17、中 k 为圆盘编号, M 为 k盘原先的柱号, L 为新柱号. 或者直接在屏幕上输出“No“,表示不能生成这种排列.例: 键盘输入: 3 d acb c 则一个正确的输出文件 b 可以是: a c A B b A C A B C Da A Db C Dc B D71. (最长连线) 设有一个 NN 的方格图形,且 N 为 3 的倍数。要求在图形中存放 0 或 1,相邻的 1 可以连成一条连线,连接的方法可以是行,也可以是列;同时约定一条连线只能有一个起点和一个终点,图形上的点最多只能访问一次。编程求最长连线. 例如 N6 时,有下图: 在该图中,包含有如下的一些连线:111 11 1 11 1

18、 11 1 111 1 1 111在以上的连线中,最长的连线为: 表示方法:1 最长连线长度:LMAX=9 连线:(1,6)(2,6)11 1 (3,6)(4,6) (4,5)(4,4)1 1 (3,4)(2,4) (2,5)1 1 连线的表示不是唯一的,仅给出一种即可。72. (NOI95.1_2) 在一个园形操场的四周摆放 N 堆石子(N100), 现要将石子有次序地合并成一堆。规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。编一程序,由文件读入堆数 N 及每堆的石子数(20), 选择一种合并石子的方案, 使得做 N-1 次合并, 得分的总和最小; 选择一

19、种合并石子的方案, 使得做 N-1 次合并, 得分的总和最大.例如, 图 2-1 所示的 4 堆石子,每堆的石子数(从最上面的一堆数起, 顺时针数)依次为 4 5 9 4. 则 3 次合并得分总和最小的方案为图 2-2,得分总和最大的方案为图 2-3.(加图)输入数据:文件名由键盘输入,该文件内容为;第一行为石子堆数 N;第二行为每堆的石子数, 每两个数之间用一个空格符分隔输出数据:输出文件名为 OUTPUT.TXT第 1 至 N-1 行为得分最小的合并过程. 每行包含两个数, 表示应该合并的两堆石子的数目, 小数在前, 大数在后, 第 N 行为合并成一堆后的最小得分总和;第 N+1 行为空行

20、, 第 N+2 至 2N+1 行为得分最大合并过程(格式同前). 第 2N+2行为最大得分总和.73. (NOI95.1_4) N 位由 0 和 1 组成的字符串 A、B 可分别表示为ANN-1i21BNN-1i21其中, i0 或 1, i0 或 1, 1iN, N15.如果存在某一位 j(j1N), 在该位上两串不同, 即jj, 而其余 N-1 位上的两串相同, 即ii(i1N,ij), 则称 A、B 两串“互邻” 。比如,在 N4 时, A1100, B1000, A、B 两串“互邻”, 而 C1100, D1010, C、D 两串不“互邻” 。编程要求:寻找一个含有 2N 个上述 01

21、 串的序列, 该序列满足以下要求: 组成该序列的每一个 01 串都与其它串不同; 第 k 个串与第 k-1 个串有“互邻”关系,2k2N; 该序列首项由输入指定.例如 N=2, 指定首项为 01, 则一个满足上述要求的序列为01 11 10 00输入数据 文件名由键盘输入 EXAMPLE4.TXT MODEL4.TXT该文件共有两行 第一行为 N 2 2 第二行为指定的序列首项 01 01 11 输出数据 10 输出文件为 OUTPUT.TXT 00 第一行为 N 第二行至第 2N+1 行依次输出序列的每一个串. 输入输出举例参考输入文件: EXAMPLE4.TXT参考输出文件: MODEL4

22、.TXT74. (NOI95.1_5) m、n 为整数,且满足下列两个条件: m、n1, 2, , k, (1k109) (n2m*nm2)21编一程序, 由键盘输入 k, 求一组满足上述两个条件的 m、n, 并且使 m2n2的值最大.例如, 若 k1995, 则 m987, n1597 时, 则 m、n 满足条件, 且可使m2n2 的值最大.75. (钱币系统问题) 某钱币系统由 k (k20) 种硬币组成, 币值依次为 a1,a2,.,ak, 其中 a (i=1,2,.,k) 为互不相同的正整数, 且依降序排列,a1200. 给定某整数币值 n(n3000), 要求用最少枚数的硬币表示这个

23、币值.输入: 用文件输入已知数据, 格式为:第 1 行: k (硬币种数)第 2 行: a1 a2 . ak (各币值用空格隔开,已按降序排列好)第 3 行: n (给定的币值)输出: 直接在屏幕上输出结果. 如果该钱币系统无法表示币值 n,应输出No,否则按以下格式输出:第 1 行: 最少钱币枚数 r.第 2 行: 输出若干形如 m*n 的表达式, m 为币值, n 为使用该币值的枚数.各式第 2 个因子之和应等于 r, 各式乘积之和应等于 n.例: 设 (a1,a2,a3)=(5,2,1), n=12, 则应输出35*2 2*1.76. (省刻度尺问题)给定长度为 L 的直尺, L 为整数

24、, 且 L40. 为了能一次直接量出 1,2,.,L 的各种长度, 该尺内部至少要有多少条刻度 ? 请输出最少刻度数( 不含两端点)及每个刻度的位置. 测量长度时可利用两端点, 其位置分别为 0,L.输入: 由键盘输入 L.输出: 用文本文件按以下格式输出结果(文件名: ANS2.TXT):第 1 行: S ( 最少刻度数 )第 2 行: 尺内 S 个刻度的位置第 3 行至第 L+2 行: 每行输出 3 个用空格隔开的整数 t m n, 其中1tL 为要测量的各长度, m,n 依次为该长度的起止刻度 (mn).例: 如果 L=6, 则一个正确的输出是:21 4 提示: (1) 最少刻度数 S 应满足:1 0 1 CS+2,2=(S+2)*(S+1)/2L.2 4 6 (2) 除两端点外, 第一个刻度可取为3 1 4 A1=1, 第二个刻度可在 1, L-2, L-1 这4 0 4 三个数中选取.5 1 66 0 6

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 开发文档

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报