《十六道c++编程趣题,答案代码已在本人其它文档中给出》由会员分享,可在线阅读,更多相关《十六道c++编程趣题,答案代码已在本人其它文档中给出(12页珍藏版)》请在金锄头文库上搜索。
1、十六道十六道 C+C+编程趣题编程趣题, ,答案代码已在本人其它文档中给出答案代码已在本人其它文档中给出1、有 500 个小朋友拉成一个圆圈,从其中一个小朋友开始依次编号1500,从 1 号小朋友开始循环 13 报数,数到 3 的小朋友就退出。编写一个 Java 应用程序,计算出最后一个小朋友的号码是多少?/*(001-500 个小朋友报数.cpp)*/2、某企业为了促销,搞抽奖宣传活动,奖品为新款手机一部,抽奖规则如下:(1)有 n 个盒子摆成一圈,盒子按顺时针方向依次编号为0,1,2,n-1。手机随机放在其中一个盒子中。 (n 为自然数)(2)从 0 号盒子开始摸奖,顺时针方向计数,每遇到
2、第 m 个盒子就摸奖一次。 (m 为自然数,mn)(3)直到重新摸到 0 号盒子为止。例如 n=5,m=3,那么摸奖经过的盒子编号依次为0,3,1,4,2,0。请编写一个完整的程序,随机输入 n,m(mn) ,程序分析手机有没有不被抽中的机会?如果有,概率是多少? (概率=不被抽中的可能数/n)/*(002-企业促销抽奖概率计算.cpp)*/3、从键盘输入一个整数(120)则以该数字为矩阵的大小,把 1,2,3n*n 的数字按照顺时针螺旋的形式填入其中。例如:输入数字 2,则程序输出:1 24 3输入数字 3,则程序输出:1 2 38 9 47 6 5输入数字 4, 则程序输出:1 2 3 4
3、12 13 14 511 16 15 610 9 8 7/*(003-顺时针螺旋输出数字方阵.cpp)*/4、从键盘输入一个日期,格式为 yyyy-M-d要求计算该日期与 1949 年 10 月 1 日距离多少天例如:用户输入了:1949-10-2程序输出:1用户输入了:1949-11-1程序输出:31/*(004-距离建国的日子.cpp)*/5、当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过 Luhn 算法来验证通过。该校验的过程:1、从卡号最后一位数字开始,逆向将奇数位(1、3、5 等等)相加。2、从卡号最
4、后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去 9) ,再求和。3、将奇数位总和加上偶数位总和,结果应该可以被 10 整除。例如,卡号是:5432123456788881则奇数、偶数位(用红色标出)分布:5432123456788881奇数位和=35偶数位乘以 2(有些要减去 9)的结果:1 6 2 6 1 5 7 7,求和=35。最后 35+35=70 可以被 10 整除,认定校验通过。请编写一个程序,从键盘输入卡号,然后判断是否校验通过。通过显示:“成功” ,否则显示“失败” 。比如,用户输入:356827027232780程序输出:成功/*(005-信用卡号验证
5、.cpp)*/6、从键盘读入一个由字母构成的串(不大于 30 个字符) 。从该串中取出 3 个不重复的字符,求所有的取法。取出的字符,要求按字母升序排列成一个串。不同的取法输出顺序可以不考虑。例如:输入:abc则输出:abc输入:abcd则输出:abcabdacdbcd输入:abcaa则输出:abc/*(006-在一个字符串中提取三个不重复的字母.cpp)*/7、某游戏规则中,甲乙双方每个回合的战斗总是有一方胜利,一方失败。游戏规定:失败的一方要把自己的体力值的 1/4 加给胜利的一方。例如:如果双方体力值当前都是 4,则经过一轮战斗后,双方的体力值会变为:5,3。现在已知:双方开始时的体力值
6、甲:1000,乙:2000。假设战斗中,甲乙获胜的概率都是 50%求解:双方经过 4 个回合的战斗,体力值之差小于 1000 的理论概率。/*(007-甲乙战斗结果分析.cpp)*/8、串的处理在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:1. 把每个单词的首字母变为大写。2. 把数字与字母之间用下划线字符(_)分开,使得更清晰3. 把单词中间有多个空格的调整为 1 个空格。例如:用户输入:you and me what cpp2005program则程序输出:You And Me What Cpp_2005_program用户输
7、入:this is a 99cat则程序输出:This Is A 99_cat我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由 1 个或多个空格分隔。假设用户输入的串长度不超过 200 个字符。要求考生把所有函数写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。相关的工程文件不要拷入。/*(008-串的处理.cpp)*/9、画表格在图形环境中很容易做出漂亮的表格。但在控制台环境中就比较困难了。有的时候可以用一些符号大略地模拟:(word 文档中可能不整齐,拷贝到记事本中看)+-+-+|abc |xyz=tt|+-+-+|hello
8、mm|t2 |+-+-+本题目要求设计一个程序,把用户输入的内容用这种“准表格”的方式展现出来。具体的要求是:用户输入的第一行是一个整数,表示接下来有多少行信息。接下来的每行由若干单元组成。单元间用逗号分开。程序输出:用表格方式重新展现的输入内容。例如:用户输入:3cat,dog,good-luck1,2,5do not use,that则程序输出:(word 文档中可能不整齐,拷贝到记事本中看)+-+-+-+|cat |dog|good-luck|+-+-+-+|1 |2 |5 |+-+-+-+|do not use| |that |+-+-+-+从中不难看出:两个连续的逗号表示中间有一个内
9、容为空的单元列的数目由最大的单元数的那行决定列的宽度由同列的最宽的单元决定单元格中的信息左对齐可以假设:用户输入的最大行数为 30,可能的最多列数为 40。/*(009-控制台画表格填字符串.cpp)*/10、5 个砝码用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。如果只有 5 个砝码,重量分别是 1,3,9,27,81。则它们可以组合称出 1 到 121 之间任意整数重量(砝码允许放在左右两个盘中) 。本题目要求编程实现:对用户给定的重量,给出砝码组合方案。例如:用户输入:5程序输出:9-3-1用户输入:19程序输出:27-9+1要求程序输出的组合总是大数在前小数在后。可以假
10、设用户的输入的数字符合范围 1121。/*(010-用 5 个砝码称重.cpp)*/11、编写一个简单的通讯录管理系统。通讯录包括:姓名、通讯地址、邮编、联系电话,现编写一个通讯录管理系统,可以对通讯录进行输入、显示、查找,通讯录保存到一个文件中。/*(011-功能简化的通讯录管理程序.cpp)*/12、一种 Playfair 密码变种加密方法如下:首先选择一个密钥单词(称为 pair) (字母不重复,且都为小写字母) ,然后与字母表中其他字母一起填入至一个 5x5 的方阵中,填入方法如下:1.首先按行填入密钥串。2.紧接其后,按字母序按行填入不在密钥串中的字母。3.由于方阵中只有 25 个位
11、置,最后剩下的那个字母则不需变换。如果密钥为 youandme,则该方阵如下: y o u a nd m e b cf g h i jk l p q rs t v w x在加密一对字母时,如 am,在方阵中找到以这两个字母为顶点的矩形(红色字体):y o u a nd m e b cf g h i jk l p q rs t v w x这对字母的加密字母为该矩形的另一对顶点,如本例中为 ob。请设计程序,使用上述方法对输入串进行加密,并输出加密后的串。另外有如下规定:1、一对一对取字母,如果最后只剩下一个字母,则不变换,直接放入加密串中;2、如果一对字母中的两个字母相同,则不变换,直接放入加密
12、串中;3、如果一对字母中有一个字母不在正方形中,则不变换,直接放入加密串中;4、如果字母对出现在方阵中的同一行或同一列,如 df 或 hi,则只需简单对调这两个字母,即变换为 fd 或 ih;5、如果在正方形中能够找到以字母对为顶点的矩形,假如字母对为 am,则该矩形的另一对顶点字母中,与 a 同行的字母应在前面,在上例中应是 ob;同样若待变换的字母对为 ta,则变换后的字母对应为 wo;6、本程序中输入串均为小写字母,并不含标点、空格或其它字符。解密方法与加密相同,即对加密后的字符串再加密,将得到原始串。要求输入形式如下:从控制台输入两行字符串,第一行为密钥单词(长度小于等于25) ,第二
13、行为待加密字符串(长度小于等于 50) ,两行字符串末尾都有一个回车换行符,并且两行字符串均为小写字母,不含其它字符。在标准输出上输出加密后的字符串。例如,若输入:youandmewelcometohangzhou则表示输入的密钥单词为 youandme,形成的正方形如上所示;待加密字符串为 welcometohangzhou。在正方形中可以找到以第一对字母 we 为顶点的矩形,对应另一对顶点字母为 vb,因此加密后为 vb,同理可找到与字母对 lc,et,oh,ho 对应的顶点字母对。而字母对 om 位于上述正方形中的同一列,所以直接以颠倒这两个字母来加密,即为 mo,字母对 an 同理。字
14、母对 gz 中的 z 不在上述正方形中,因此原样放到加密串中。最后剩一个字母 u 也原样输出。因此输出的结果为:vbrmmomvugnagzguu/*(012-Playfair 密码变种.cpp)*/13、在中文 Windows 环境下,控制台窗口中也可以用特殊符号拼出漂亮的表格来。比如: 其实,它是由如下的符号拼接的:左上 = 上 = 右上 = 左 = 中心 = 右 = 左下= 下 = 右下 = 垂直 = 水平 = 本题目要求编写一个程序,根据用户输入的行、列数画出相应的表格来。例如用户输入:3 2则程序输出: 用户输入:2 3则程序输出: /*(013-控制台下输出表格.cpp)*/14、方阵的主对角线之上称为“上三角