tceic.com
简单学习网 让学习变简单
当前位置:首页 >> 学科竞赛 >>

C语言竞赛题30题


41.哪个大夫哪天值班 医院有 A、B、C、D、E、F、G 七位大夫,在一星期内(星期一至星期天)每人要轮流值 班一天。现在已知: A 大夫比 C 大夫晚一天值班; D 大夫比 E 大夫晚二天值班; B 大夫比 G 大夫早三天值班; F 大夫的值班日在 B 和 C 大夫的中间,且是星期四; 请确定每天究竟是哪位大夫值班? *问题分析与算法设计 由题目可推出如下已知条件: *F 是

星期四值班; *B 值班的日期在星期一至星期三,且三天后是 G 值班; *C 值班的日期在星期五至星期六,且一天后是 A 值班; *E 两天后是 D 值班;E 值班的日期只能在星期一至星期三; 在编程时用数组元素的下标 1 到 7 表示星期一到星期天, 用数组元素的值分别表示 A~F 七位大夫。 ------------------------------------------------------42.区分旅客国籍 在一个旅馆中住着六个不同国籍的人,他们分别来自美国、德国、英国、法国、俄罗斯 和意大利。他们的名字叫 A、B、C、D、E 和 F。名字的顺序与上面的国籍不一定是相互对 应的。现在已知: 1)A 和美国人是医生。 2)E 和俄罗斯人是技师。 3)C 和德国人是教师。 4)B 和 F 曾经当过兵,而德国人从未参过军。 5)法国人比 A 年龄大;意大利人比 C 年龄大。 6)B 同美国人下周要去西安旅行,而 C 同法国人下周要去杭州度假。 试问由上述已知条件,A、B、C、D、E 和 F 各是哪国人? *问题分析与算法设计 首先进行题目分析,尽可能利用已知条件,确定谁不是哪国人。 由:1) 2) 3)可知:A 不是美国人,E 不是俄罗斯人,C 不是德国人。另外因为 A 与德国 人的职业不同,E 与美、德人的职业不同,C 与美、俄人的职业不同,故 A 不是俄罗斯人或 德国人,E 不是美国人或德国人,C 不是美国人或俄罗斯人。 由 4)和 5)可知 B 和 F 不是德国人,A 不是法国人,C 不是意大利人。 由 6)可知 B 不是美国人, 也不是法国人(因 B 与法国人下周的旅行地点不同); C 不是法 国人。 将以上结果汇总可以得到下列条件矩阵: . 美(医生) 英 法 德(技师) 意大利 俄(教师) A(医生) X . X X . X BX.XX.. C(技师) X . X X X X D......

E(教师) X . . X . X F...X.. 43. 谁家孩子跑最慢

张王李三家各有三个小孩。 一天, 三家的九个孩子在一起比赛短跑, 规定不分年龄大小, 跑第一得 9 分,跑第 2 得 8 分,依此类推。比赛结果各家的总分相同,且这些孩子没有同时 到达终点的, 也没有一家的两个或三个孩子获得相连的名次。 已知获第一名的是李家的孩子, 获得第二的是王家的孩子。问获得最后一名的是谁家的孩子? *问题分析与算法设计 按题目的条件,共有 1+2+3+...+9=45 分,每家的孩子的得分应为 15 分。根据题意可知: 获第一名的是李家的孩子,获第二名的是王家的孩子,则可推出:获第三名的一定是张家的 孩子。由“这些孩子没有同时到达终点的”可知:名次不能并列,由“没有一家的两个或三 个孩子获得相连的名次”可知:第四名不能是张家的孩子。 程序中为了方便起见,直接用分数表示。

44.拉丁方 构造 NXN 阶的拉丁方阵(2<=N<=9), 使方阵中的每一行和每一列中数字 1 到 N 只出现 一次。如 N=4 时: 1 2 3 4 2 3 4 1 3 4 1 2 4 1 2 3 *问题分析与算法设计 构造拉丁方阵的方法很多,这里给出最简单的一种方法。观察给出的例子,可以发现: 若将每 一行中第一列的数字和最后一列的数字连起来构成一个环,则该环正好是由 1 到 N 顺序构成;对于第 i 行,这个环的开始数字为 i。按照 此规律可以很容易的写出程序。下面 给出构造 6 阶拉丁方阵的程序。 -#include<stdio.h> main() {int i,j,k,t,N; scanf("%d",&N); printf("The possble Latin Squares of order %d are:\n",N); for(j=0;j<N;j++) /*构造 N 个不同的拉丁方阵*/ {for(i=0;i<N;i++) { t=(i+j)%N; /*确定该拉丁方阵第 i 行的第一个元素的值*/ for(k=0;k<N;k++) /*按照环的形式输出该行中的各个元素*/ printf("%d",(k+t)%N+1); break; } printf("\n"); } getch(); }---------------------------------------------------------------

45.

填表格

将 1、2、3、4、5 和 6 填入下表中,要使得每一列右边的数字比左边的数字大,每一 行下面的数字比上面的数字大。按此要求,可有几种填写方法? . . . . . . /*两个点之间为表格*/

*问题分析与算法设计 按题目的要求进行分析, 数字 1 一定是放在第一行第一列的格中, 数字 6 一定是放在第 二行第三列的格中。在实现时可用一个一维数组表示,前三个元素表示第一行,后三个元素 表示第二行。先根据原题初始化数组,再根据题目中填 写数字的要求进行试探。 -------------------------------------------------------46. 1~9 分成 1:2:3 的三个 3 位数

将 1 到 9 这九个数字分成三个 3 位数,分求第一个 3 位数,正好是第二个 3 位数的二 倍,是第三个 3 位数的三倍。问应当怎样分法。 *问题分析与算法设计 问题中的三个数之间是有数学关系的,实际上只要确定第一个三位数就可以解决问题。 试探第一个三位数之后,计算出另外两个数,将其分别分解成三位数字,进行判断后确 定所试探的数是否就是答案。 需要提醒的是:试探的初值可以是 123,最大值是 333。因为不可能超出该范围。 -47. 1~9 组成三个 3 位的平方数

将 1、2、3、4、5、6、7、8、9 九个数字分成三组,每个数字只能用一次,即每组三个 数不允许有重复数字, 也不许同其它组的三个数字重复, 要求每组中的三位数都组成一个平 方数。 *问题分析与算法设计 本问题的思路很多,这里介绍一种简单快速的算法。 首先求出三位数中不包含 0 且是某个整数平方的三位数, 这样的三位数是不多的。 然后 将满足条件的三位数进行组合,使得所选出的 3 个三位数的 9 个数字没有重复。 程序中可以将寻找足条件的三位数的过程和对该三位数进行数字分解的过程结合起来。 ------------------------------------------------------48. 由 8 个整数形成奇特的立方体

任意给出 8 个整数, 将这 8 个整数分别放在一个立方体的八个顶点上, 要求每个面上的 四个数之和相等。 *问题分析与算法设计 简化问题:将 8 个顶点对应数组中的 8 个元素,将“每个面上的四个数之和皆相等”转

换为数组无素之间和的相等关系。这里的关键在于正确地将立方体的 8 个顶点与数组的 8 个元素对应。 可以利用简单的穷举方法建立 8 个数的全部排列。

-------------------------------------------------------------------------------49. 减式还原

编写程序求解下式中各字母所代表的数字,不同的字母代表不同的数字。 PEAR - ARA -------PEA *问题分析与算法设计 类似的问题从计算机算法的角度来说是比较简单的,可以采用最常见的穷举方法解决。 程序中采用循环穷举每个字母所可能代表的数字,然后将字母代表的数字转换为相应的整 数,代入算式后验证算式是否成立即可解决问题。 ----------------------------------------------------------50. 乘式还原

A 代表数字 0 到 9 中的前五个数字,Z 代表后五个数字,请还原下列乘式。 AZA × AA Z -----------AAAA AA Z Z ZAA -----------Z A Z AA *问题分析与算法设计 问题本身并不复杂,可以对乘式中的每一位使用穷举法,最终可以得到结果。本题的关 键在于怎样有效的判断每个部分积的每一位是否满足题意, 这一问题处理不好, 编写的程序 会很长。 程序实现中采用了一个判断函数, 通过传入函数的标志字符串对所有的数进行统一 的判断处理。

51.

九位累进可除数

求九位累进可除数。 所谓九位累进可除数就是这样一个数: 这个数用到 1 到 9 这九个数 字组成, 每个数字刚好只出现一次。 这九个位数的前两位能被 2 整除, 前三位能被 3 整除...... 前 N 位能被 N 整除,整个九位数能被 9 整除。 *问题分析与算法设计 问题本身可以简化为一个穷举问题: 只要穷举每位数字的各种可能取值, 按照题目的要 求对穷举的结果进行判断就一定可以得到正确的结果。 问题中给出了“累进可除”这一条件,就使得我们可以在穷举法中加入条件判断。在穷

举的过程中,当确定部分位的值后,马上就判断产生的该部分是否符合“累进可除”条件, 若符合,则继续穷举下一位数字;否则刚刚产生的那一位数字就是错误的。这样将条件判断 引入到穷举法之中,可以尽可能早的发现矛盾,尽早地放弃不必要穷举的值,从而提高程序 的执行效率。 为了达到早期发现矛盾的目的, 不能采用多重循环的方法实行穷举, 那样编出的程序质 量较差。程序中使用的算法不再是穷举法,而是回朔法。 ---------------------------------------------------------------------52. 魔术师的猜牌术

魔术师利用一副牌中的 13 张黑桃,预先将它们排好后迭在一起,牌面朝下。对观众说: 我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看。魔术 师将最上面的那张牌数为 1,把它翻过来正好是黑桃 A,将黑桃 A 放在桌子上,然后按顺序 从上到下数手上的余牌,第二次数 1、2,将第一张牌放在这迭牌的下面,将第二张牌翻过 来,正好是黑桃 2,也将它放在桌子上,第三次数 1、2、3,将前面两张依次放在这迭牌的 下面,再翻第三张牌正好是黑桃 3。这样依次进行将 13 张牌全翻出来,准确无误。问魔术 师手中的牌原始顺序是怎样安排的? *问题分析与算法设计 题目已经将魔术师出牌的过程描述清楚, 我们可以利用倒推的方法, 很容易地推出原来 牌的顺序。 人工倒推的方法是:在桌子上放 13 空盒子排成一圈,从 1 开始顺序编号,将黑桃 A 放 入 1 号盒子中,从下一个空盒子开始对空的盒子计数,当数到第二个空盒子时,将黑桃 2 放入空盒子中,然后再从下一个空盒子开始对空盒子计数,顺序放入 3、4、5...,直到放入 全部 3 张牌。注意在计数时要跳过非空的盒子,只对空盒子计数。最后牌在盒子中的顺序, 就是魔术师手中原来牌的顺序。 这种人工的方法是行之有效的,计算机可以模拟求解。 ----------------------------------------------------------------53.约瑟夫问题 这是 17 世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15 个教徒和 15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了 一个办法:30 个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大 海,如此循环进行直到仅余 15 个人为止。问怎样排法,才能使每次投入大海的都是非教徒。 *问题分析与算法设计 约瑟夫问题并不难,但求解的方法很多;题目的变化形式也很多。这里给出一种实现方 法。 题目中 30 个人围成一圈,因而启发我们用一个循环的链来表示。可以使用结构数组来 构成一个循环链。结构中有两个成员,其一为指向下一个人的指针,以构成环形的链;其二 为该 人是否被扔下海的标记,为 1 表示还在船上。从第一个人开始对还未扔下海的人进行 计数,每数到 9 时,将结构中的标记改为 0,表示该人已被扔下海了。这样循环计数直到有 15 个人被扔下海为止。

53.

邮票组合

某人有四张 3 分的邮票和三张 5 分的邮票, 用这些邮票中的一张或若干张可以得到多少 种不同的邮资? *问题分析与算法设计 将问题进行数学分析,不同张数和面值的邮票组成的邮资可用下列公式计算: S=3*i+5*j 其中 i 为 3 分邮柰的张数,j 为 5 分的张数 按题目的要求,3 分的邮票可以取 0、1、2、3、4 张,5 分的邮票可以取 0、1、2、3 张。采用穷举方法进行组合,可以求出这些不同面值不同张数的邮标组合后的邮资。 ------------------------------------------------------------54. 和数能表示 1~23 的 5 个正整数

已知五个互不相同的正整数之和为 23, 且从这五个数中挑选若干个加起来可以表示从 1 到 23 之内的全部自然数。问这五个数是什么? *问题分析与算法设计 从计算机程序设计的角度来说,可以用穷举法分解 23,然后判断所分解的五个数是否 可以表示 1 到 23 之间的全部整数。 55. 可称 1~40 磅的 4 块砝码

法国数学家梅齐亚克在他著名的《数字组合游戏》(1962)中提出了一个问题:一位商人 有一个重 40 磅的砝码,一天不小心将砝码摔成了四块。后来商人称得每块的重量都是整磅 数,而且发现这四块碎片可以在天平上称 1 至 40 磅之间的任意重量。请问这四块碎片各重 多少? *问题分析与算法设计 本题是上一题的发展。题目中给出的条件是“在天平上” ,这意味着:同一砝码既可以 放在天平的左侧,也可以放在天平的右侧。若规定重物只能放在天平的左侧,则当天平平衡 时有: 重物重量+左侧砝码重量总和=右侧砝码重量总和 由此可得: 重物重量=右侧砝码重量总和-左侧砝码重量总和 编程时只要根据以上公式,使“右侧砝码重量总和-左侧砝码重量总和”可以表示 1 到 40 之间的全部重量即可。编程中要注意的是:怎样采用一种简单的方法来表示一个砝码是 在天平的左侧还是在天平的右侧,或是根本没有使用。

---------------------------------------------------------56. 10 个小孩分糖果

十个小孩围成一圈分糖果,老师分给第一个小孩 10 块,第二个小孩 2 块,第三个小孩 8 块,第四个小孩 22 块,第五个小孩 16 块,第六个小孩 4 块,第七个小孩 10 块,第八个 小孩 6 块,第九个小孩 14 块,第十个小孩 20 块。然后所有的小孩同时将手中的糖分一半给

右边的小孩; 糖块数为奇数的人可向老师要一块。 问经过这样几次后大家手中的糖的块数一 样多?每人各有多少块糖? *问题分析与算法设计 题目描述的分糖过程是一个机械的重复过程, 编程算法完全可以按照描述的过程进行模 拟。 *程序与程序注释

-------------------------------------------------------------------------------57. 76.小明买书

小明假期同爸爸一起去书店,他选中了六本书,每本书的单价分别为:3.1,1.7,2,5.3, 0.9 和 7.2。不巧的是,小明的爸爸只带了十几块钱,为了让小明过一个愉快的假期,爸爸扔 然同意买书,但提邮购一个要求,要小明从六本书中选出若干本,使得单价相加所得的和同 10 最接近。你能够帮助小明解决这个问题吗? *问题分析与算法设计 分析题意,可将题目简化为:从六个数中选出若干个求和,使得和与 10 的差值最小。 题目中隐含两个问题,其一是怎样从六个数中选出若干个数;其二是求与 10 的差。 从六个数中选出若干个数实质是从六个数中选出若干个进行组合。每个数在组合过程中 只有两种情况:要么是选中参加求和,要么是没选中不参加求和。这样就可以使用六重循环 对每个数是否参加求和进行全部可能情况的组合。 关于求与 10 的差值应当注意的是:差值的含义是指差的绝对值。例如: “9-10=-1"和 "11-10=1",但 9 和 11 这两者与 10 的差值都是 1。若认为”9“与”10 的差值为-1 就错了。 58. 波松瓦酒的分酒趣题

法国著名数学家波瓦松在表年时代研究过一个有趣的数学问题: 某人有 12 品脱的啤酒一 瓶,想从中倒出 6 品脱,但他没有 6 品脱的容器,仅有一个 8 品脱和 5 品脱的容器,怎样倒 才能将啤酒分为两个 6 品脱呢? *问题分析与算法设计 将 12 品脱酒 8 品脱和 5 品脱的空瓶平分,可以抽象为解不定方程: 8x-5y=6 其意义是:从 12 品脱的瓶中向 8 品脱的瓶中倒 x 次,并且将 5 品脱瓶中的酒向 12 品脱 的瓶中倒 y 次,最后在 12 品脱的瓶中剩余 6 品脱的酒。 用 a,b,c 代表 12 品脱、8 品脱和 5 品脱的瓶子,求出不定方程的整数解,按照不定方程 的意义则倒法为: a -> b -> c ->a x y 倒酒的规则如下: 1) 按 a -> b -> c ->a 的顺序; 2) b 倒空后才能从 a 中取 3) c 装满后才能向 a 中倒 按以上规则可以编写出程序如下: 59. 奇数平方的一个有趣性质

编程验证“大于 1000 的奇数其平方与 1 的差是 8 的倍数” 。 *问题分析与算法设计 本题是一个很容易证明的数学定理,我们可以编写程序验证它。 题目中给出的处理过程很清楚, 算法不需要特殊设计。 可以按照题目的叙述直接进行验 证(程序中仅验证到 3000)。 60. 角谷猜想

日本一位中学生发现一个奇妙的“定理” ,请角谷教授证明,而教授无能为力,于是产 生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以 2,若为奇数则乘 3 加 1,得 到一个新的自然数后按照上面的法则继续演算, 若干次后得到的结果必然为 1。 请编程验证。 *问题分析与算法设计 本题是一个沿未获得一般证明的猜想,但屡试不爽,可以用程序验证。 题目中给出的处理过程很清楚,算法不需特殊设计,可按照题目的叙述直接进行证。

61.

四方定理

数论中著名的“四方定理”讲的是:所有自然数至多只要用四个数的平方和就可以表示。 请编程证此定理。 *问题分析与算法设计 本题是一个定理,我们不去证明它而是编程序验证。 对四个变量采用试探的方法进行计算,满足要求时输出计算结果。 62. 卡布列克常数

验证卡布列克运算。任意一个四位数,只要它们各个位上的数字是不全相同的,就 有这样的规律: 1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数; 2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数 (如果四个数中含有 0,则得到的数不足四位); 3)求两个数的差,得到一个新的四位数(高位零保留)。 重复以上过程,最后得到的结果是 6174,这个数被称为卡布列克数。 *问题分析与算法设计 题目中给出的处理过程很清楚, 算法不需要特殊设计, 可按照题目的叙述直接进行验证。 -------------------------------------------------------------------------------63. 尼科彻斯定理

验证尼科彻斯定理,即:任何一个整数的立方都可以写成一串连续奇数的和。×× *问题分析与算法设计 本题是一个定理,我们先来证明它是成立的。 对于任一正整数 a,不论 a 是奇数还是偶数,整数(a×a-a+1)必然为奇数。 构造一个等差数列,数列的首项为(a×a-a+1),等差数列的差值为 2(奇数数列),则前 a 项的和为: a× ((a× a-a+1))+2× a(a-1)/2 =a× a× a-a× a+a+a× a-a =a× a× a

定理成立。证毕。 通过定理的证明过程可知 L 所要求的奇数数列的首项为(a×a-a+1),长度为 a。编程的 算法不需要特殊设计,可按照定理的证明过直接进行验证。

64.

回文数的形成

任取一个十进制整数, 将其倒过来后与原来的整数相加, 得到一个新的整数后重复以上 步聚,则最终可得到一个回文数。请编程验证。 *问题分析与算法设计 回文数的这一形成规则目前还属于一个猜想, 尚未得到数学上的证明。 有些回文数要经 历上百个步聚才能获得。这里通过编程验证。 题目中给出的处理过程很清楚, 算法不需要特殊设计。 可按照题目的叙述直接进行验证。

65.

自动发牌

一副扑克有 52 张牌,打桥牌时应将牌分给四个人。请设计一个程序完成自动发牌的工 作。要求:黑桃用 S(Spaces)表示;红桃用 H(Hearts)表示;方块用 D(Diamonds)表示;梅花 用 C(Clubs)表示。 *问题分析与算法设计 按照打桥牌的规定,每人应当有 13 张牌。在人工发牌时,先进行洗牌,然后将洗好的 牌按一定的顺序发给每一个人。为了便于计算机模拟,可将人工方式的发牌过程加以修改: 先确定好发牌顺序:1、2、3、4;将 52 张牌顺序编号:黑桃 2 对应数字 0,红桃 2 对应数 字 1,方块 2 对应数字 2,梅花 2 对应数字 3,黑桃 3 对应数字 4,红桃 3 对应数字 5,...然 后从 52 张牌中随机的为每个人抽牌。 这里采用 C 语言库函数的随机函数,生成 0 到 51 之间的共 52 个随机数,以产生洗牌 后发牌的效果。

66.

黑白子交换

有三个白子和三个黑子如下图布置: ○ ○ ○ . ● ● ● 游戏的目的是用最少的步数将上图中白子和黑子的位置进行交换: ● ● ● . ○ ○ ○ 游戏的规则是:(1)一次只能移动一个棋子; (2)棋子可以向空格中移动,也可以跳过一 个对方的棋子进入空格,但不能向后跳,也不能跳过两个子。请用计算机实现上述游戏。 *问题分析与算法设计 计算机解决胜这类问题的关键是要找出问题的规律,或者说是要制定一套计算机行动的 规则。分析本题,先用人来解决问题,可总结出以下规则: (1) 黑子向左跳过白子落入空格,转(5) (2) 白子向右跳过黑子落入空格,转(5) (3) 黑子向左移动一格落入空格(但不应产生棋子阻塞现象),转(5) (4) 白子向右移动一格落入空格(但不应产生棋子阻塞现萌),转(5) (5) 判断游戏是否结束,若没有结束,则转(1)继续。

所谓的“阻塞”现象就是:在移动棋子的过程中,两个尚未到位的同色棋子连接在一起, 使棋盘中的其它棋子无法继续移动。例如按下列方法移动棋子: 0 ○ ○ ○ . ● ● ● 1 ○ ○ . ○ ● ● ● 2 △ ○ ○ ● ○ . ● ● 3 ○ ○ ● . ○ ● ● 4 两个●连在一起产生阻塞 ○ ○ ● ● ○ . ● 或 4 两个白连在一起产生阻塞 ○ . ● ○ ○ ● ● 产生阻塞的现象的原因是在第 2 步(△状态)时,棋子○不能向右移动,只能将●向左移 动。 总结产生阻塞的原因,当棋盘出现“黑、白、空、黑”或“白、空、黑、白”状态时, 不能向左或向右移动中间的棋子,只移动两边的棋子。 按照上述规则,可以保证在移动棋子的过程中,不会出现棋子无法移动的现象,且可以 用最少的步数完成白子和黑子的位置交换。

-------------------------------------------------------------------------------67. 常胜将军

现有 21 根火柴,两人轮流取,每人每次可以取走 1 至 4 根,不可多取,也不能不取,谁 取最后一楰火柴谁输。请编写一个程序进行人机对弈,要求人先取,计算机后取;计算机一 方为“常胜将军” 。 *问题分析与算法设计 在计算机后走的情况下,要想使计算机成为“常胜将军” ,必须找出取 关键。根据本题 的要求枷以总结出, 后走一方取子的数量与对方刚才一步取子的数量之和等于, 就可以保证 最后一个子是留给先取子的那个人的。 据此分析进行算法设计就是很简单的工作,编程实现也十分容易。 68.抢 30 这是中国民间的一个游戏。两人从 1 开始轮流报数,每人每次可报一个数或两个连续的 数,谁先报到 30,谁就为胜方。 *问题分析与算法设计 本题与上题类似,算法也类似,所不同的是,本谁先走第一步是可选的。若计算机走第 一步,那么计算机一定是赢家。若人先走一步,那么计算机只好等待人犯错误,如果人先走 第一步且不犯错误,那么人就会取胜;否则计算机会抓住人的一次错误使自己成为胜利者。 *程序与程序注释 69. 搬山游戏

设有 n 座山,计算机与人为比赛的双方,轮流搬山。规定每次搬山的数止不能超 过 k

座,谁搬最后一座谁输。游戏开始时。计算机请人输入山的总数 (n)和每次允许搬山的最大 数止(k)。然后请人开始,等人输入了需要搬走的山的数目后,计算机马上打印出它搬多少 座山,并提示尚余多少座山。双方轮流搬山直到最后一座山搬完为止。计算机会显示谁是赢 家, 并问人是否要继续比赛。 若人不想玩了, 计算机便会统计出共玩了几局, 双方胜负如何。 *问题分析与算法设计 计算机参加游戏时应遵循下列原则: 1) 当: 剩余山数目-1<=可移动的最大数 k 时计算机要移(剩余山数目-1)座,以便将最后一座 山留给人。 2)对于任意正整数 x,y,一定有: 0<=x%(y+1)<=y 在有 n 座山的情况下,计算机为了将最后一座山留给人,而且又要控制每次搬山的数目 不超过最大数 k,它应搬山的数目要满足下列关系: (n-1)%(k+1) 如果算出结果为 0,即整除无余数,则规定只搬 1 座山,以防止冒进后发生问题。

-------------------------------------------------------------------------------70. 人机猜数游戏

由计算机“想”一个四位数,请人猜这个四位数是多少。人输入四位数字后,计算机首 先判断这四位数字中有几位是猜对了, 并且在对的数字中又有几位位置也是对的, 将结果显 示出来,给人以提示,请人再猜,直到人猜出计算机所想的四位数是多少为止。 例如:计算机“想”了一个“1234”请人猜,可能的提示如下: 人猜的整数 计算机判断有几个数字正确 有几个位置正确 1122 2 1 3344 2 1 3312 3 0 4123 4 0 1243 4 2 1234 4 4 游戏结束 请编程实现该游戏。游戏结束时,显示人猜一个数用了几次。 *问题分析与算法设计 问题本身清楚明了。判断相同位置上的数字是否相同不需要特殊的算法。只要截取相同 位置上的数字进行比较即可。但在判断几位数字正确时,则应当注意:计算机所想的是 “1123” ,而人所猜的是“1576” ,则正确的数字只有 1 位。 程序中截取计算机所想的数的每位数字与人所猜的数字按位比较。若有两位数字相同, 则要记信所猜中数字的位置,使该位数字只能与一位对应的数字“相同” 。当截取下一位数 字进行比较时, 就不应再与上述位置上的数字进行比较, 以避免所猜的数中的一位与对应数 中多位数字“相同”的错误情况。

71.

兎子产子

从前有一对长寿兎子,它们每一个月生一对兎子,新生的小兎子两个月就长大了,在第

二个月的月底开始生它们的下一代小兎子, 这样一代一代生下去, 求解兎子增长数量的数列。 *问题分析与算法设计 问题可以抽象成下列数学公式: Un=Un-1+Un-2 其中: n 是项数(n>=3)。它就是著名的菲波那奇数列,该数列的前几为:1,1,2,3,5,8,13, 21... 菲波那奇数列在程序中可以用多种方法进行处理。按照其通项递推公式利用最基本的循 环控制就可以实现题目的要求。 72. 将阿拉伯数字转换为罗马数字

将大于 0 小于 1000 的阿拉伯数字转换为罗马数字。 *问题分析与算法设计 题目中给出了阿拉伯数字与罗马数字的对应关系, 题中的数字转换实际上就是查表翻译。 即将整数的百、十、个位依次从整数中分解出来,查找表中相应的行后输出对应的字符。 *程序与程序设计


推荐相关:

C语言竞赛题30题

C语言竞赛题 7页 免费 2010年12月C语言竞赛试题 3页 2财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 ...


第七届ITAT竞赛C语言模拟题

第七届全国信息技术应用水平大赛模拟题 C 语言程序设计注:试卷满分 150 分,...要在 c 语言中求正弦 30 度的值,可以调用库函数,可用格式为 ( A:sin(30)...


第二届新生C语言竞赛解题报告

第二届浙江师范大学 C 语言程序设计竞赛解 题报告(罗方炜,lfw2565295@126.com...{0,31,28,31,30,31,30,31,31,30,31,30,31}; int y,m,d,w,T; ...


C语言上机考题30题

C语言上机考题30题_理学_高等教育_教育专区。C语言上机考题30题,上机必须学会的30道题每个编程题都需要编写两个或两个以上函数,具体要求见考卷哦。 1. 编程:已知...


30题C语言

30题C语言_IT认证_资格考试/认证_教育专区。30题C语言1、 A+B 这是一个很简单的题目,给定 2 个整数 A 和 B,请输出 A+B 的和。 输入描述 输入数据包含...


C语言竞赛练习

竞赛C语言题 28页 免费C​语​言​竞​赛​练​习 ...输入输出样例 输入样例 1 3 10 1 3 1 1 1 3 3 1 30 2574521 8 6 8...


c语言考试题30道2003

28页 10财富值 C语言考试大题 9页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 ...


第四届蓝桥杯预赛CC++程序设计本科B组-详解

蓝桥杯模拟题(含本科,高... 22页 免费 第三届蓝桥杯C语言本科组... 11页...高斯出生于:1777 年 4 月 30 日。 在高斯发现的一个重要定理的日记上标注着...


c语言备考习题及部分答案

30页 1财富值 c语言备考习题及部分答案 暂无评价 4页 1财富值 江苏省计算机二级...C语言单选 暂无评价 28页 2财富值如要投诉违规内容,请到百度文库投诉中心;如...


C语言试题

C语言试题集 46页 2财富值 C语言二级试题 200页 免费 C语言试题1 12页 10财富值 C语言期末试题 7页 2财富值 c语言笔试试题 30页 1财富值 历年二级C语言...

网站首页 | 网站地图
All rights reserved Powered by 简单学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com