资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2012 国信蓝点杯 软件程序设计大赛真题造成高房价的原因有许多,比如土地出让价格。既然地价高,土地的面积必须仔细计算。遗憾的是,有些地块的形状不规则,比如是如图【1.jpg】中所示的五边形。一般需要把它划分为多个三角形来计算。已知三边求三角形的面积需要用海伦定理,参见【2.jpg】各条边长数据如下:AB = 52.1BC = 57.2CD = 43.5DE = 51.9EA = 33.4EB = 68.2EC = 71.9根据这些数据求五边形地块的面积。四舍五入到小数后两位。 大数学家欧拉在集市上遇到了本村的两个农妇,每人跨着个空篮子。她们和欧拉打招呼说两人刚刚卖完了所有的鸡蛋。 欧拉随便问:“卖了多少鸡蛋呢?”不料一个说:“我们两人自己卖自己的,一共卖了 150 个鸡蛋,虽然我们卖的鸡蛋有多有少,但刚好得了同样的钱数。你猜猜看!”欧拉猜不出。另一个补充道:“如果我按她那样的价格卖,可以得到 32 元;如果她按我的价格卖,可以得到 24.5 元” 。欧拉想了想,说出了正确答案。我们不是数学家,懒得列出公式来分析。但计算机可以“暴力破解” ,就是把所有可能情况都试验一遍,撞上为止!请写出每人鸡蛋的数目(顺序不限) ,用逗号隔开。福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE * ? = EDCBA 他对华生说:“ABCDE 应该代表不同的数字,问号也代表某个数字!”华生:“我猜也是!”于是,两人沉默了好久,还是没有算出合适的结果来。请你利用计算机的优势,找到破解的答案。把 ABCDE 所代表的数字写出来。小明刚上小学,学会了第一个扑克牌“魔术” ,到处给人表演。魔术的内容是这样的:他手里握着一叠扑克牌:A,2 ,.J ,Q ,K 一共 13 张。他先自己精心设计它们的顺序,然后正面朝下拿着,开始表演。只见他先从最下面拿一张放到最上面,再从最下面拿一张翻开放桌子上,是 A;然后再从最下面拿一张放到最上面,再从最下面拿一张翻开放桌子上,是 2;.如此循环直到手中只有一张牌,翻开放桌子上,刚好是 K。这时,桌上牌的顺序是:A,2,3,4,5,6,7,8,9,10,J,Q,K 请你计算一下,小明最开始的时候手里牌的顺序是怎样的。结果写出来,逗号分割,小明“魔术”开始时,最下面的那张牌输出为第一个数据。考场不提供扑克牌,你只能用计算机模拟了,撕碎草稿纸模拟扑克属于作弊行为!另外,你有没有把录像倒着放过?很有趣的!回去试试! 在我国古代和近代,一直采用干支法纪年。它采用 10 天干和 12 地支配合,一个循环周期为 60 年。 10 天干是:甲,乙,丙,丁,戊,己,庚,辛,壬,癸12 地支是:子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥如果某年是甲子,下一年就是乙丑,再下是丙寅,.癸酉,甲戌,乙亥,丙子,.总之天干、地址都是循环使用,两两配对。今年(2012)是壬辰年,1911 年辛亥革命下面的代码根据公历年份输出相应的干支法纪年。已知最近的甲子年是 1984 年。void f(int year)char* x = 甲,乙, 丙,丁, 戊,己,庚, 辛,壬,癸;char* y = 子,丑, 寅,卯, 辰,巳,午, 未,申,酉, 戌,亥;int n = year - 1984;while(n0) n += 60;printf(%s%sn, x_, y_);int main(int argc, char* argv)f(1911);f(1970);f(2012);return 0;请分析代码逻辑,并推测划线处的代码。注意:只写划线处应该填的内容,划线前后的内容不要抄写。如果让你设计个程序,用什么变量保存身份证号码呢?长整数可以吗?不可以!因为有人的身份证最后一位是X实际上,除了最后一位的 X,不会出现其它字母!身份证号码 18 位 = 17 位 + 校验码校验码的计算过程: 例如:身份证前 17 位 = ABCDEFGHIJKLMNOPQAQ 每位数字乘以权值求和(每位数字和它对应的 “权”相乘后累加)17 位对应的权值分别是:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2求出的总和再对 11 求模然后按下表映射:余数 0 1 2 3 4 5 6 7 8 9 10 校验码: 1 0 X 9 8 7 6 5 4 3 2 下面的代码实现了校验过程,输入串为身份证前 17 位,返回了校验码。char verifyCode(char* s)static int weight = 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2;static char map = 1,0,X,9,8,7,6,5,4,3,2;int sum = 0;for(int i=0; i17; i+)sum += (_) * weighti; / 填空return map_; / 填空请分析代码逻辑,并推测划线处的代码。注意:只写划线处应该填的内容,划线前后的内容不要抄写。对一方阵转置,就是把原来的行号变列号,原来的列号变行号个例如,如下的方阵: 1 2 3 45 6 7 89 10 11 1213 14 15 16转置后变为:1 5 9 132 6 10 143 7 11 154 8 12 16但,如果是对该方阵顺时针旋转(不是转置) ,却是如下结果:13 9 5 114 10 6 215 11 7 316 12 8 4下面的代码实现的功能就是要把一个方阵顺时针旋转。void rotate(int* x, int rank)int* y = (int*)malloc(_); / 填空for(int i=0; irank * rank; i+)y_ = xi; / 填空for(i=0; irank*rank; i+)xi = yi;free(y);int main(int argc, char* argv)int x44 = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;int rank = 4;rotate(&x00, rank);for(int i=0; irank; i+)for(int j=0; jrank; j+)printf(%4d, xij);printf(n);return 0;请分析代码逻辑,并推测划线处的代码。注意:只写划线处应该填的内容,划线前后的内容不要抄写。30 年的改革开放,给中国带来了翻天覆地的变化。2011 全年中国手机产量约为 11.72亿部。手机已经成为百姓的基本日用品!给手机选个好听又好记的号码可能是许多人的心愿。但号源有限,只能辅以有偿选号的方法了。这个程序的目的就是:根据给定的手机尾号(4 位) ,按照一定的规则来打分。其规则如下:1. 如果出现连号,不管升序还是降序,都加 5 分。例如:5678,4321 都满足加分标准。2. 前三个数字相同,或后三个数字相同,都加 3 分。例如:4888,6665,7777 都满足加分的标准。注意:7777 因为满足这条标准两次,所以这条规则给它加了 6 分。3. 符合 AABB 或者 ABAB 模式的加 1 分。例如: 2255,3939,7777 都符合这个模式,所以都被加分。注意:7777 因为满足这条标准两次,所以这条标准给它加了 2 分。4. 含有: 6,8,9 中任何一个数字,每出现一次加 1 分。例如 4326,6875,9918 都符合加分标准。其中,6875 被加 2 分;9918 被加 3 分。尾号最终得分就是每条标准的加分总和!要求程序从标准输入接收数据,在标准输出上输出结果。输入格式为:第一行是一个整数 n(100) ,表示下边有多少输入行,接下来是 n 行 4位一组的数据,就是等待计算加分的手机尾号。 输出格式为:n 行整数。例如,输入:1430450211234565437777888878787788668824242244991867898866则输出:005681233511385注意:请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。请把所有函数写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。相关的工程文件不要拷入。 源代码中不能能使用诸如绘图、Win32API 、中断调用、硬件操作或与操作系统相关的API。允许使用 STL 类库,但不能使用 MFC 或 ATL 等非 ANSI c+标准的类库。例如,不能使用 CString 类型(属于 MFC 类库) 。古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了。之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因,当时的宗教禁止在数字中出现0 的概念!罗马数字的表示主要依赖以下几个基本符号:I 1V 5X 10L 50C 100D 500M 1000这里,我们只介绍一下 1000 以内的数字的表示法。单个符号重复多少次,就表示多少倍。最多重复 3 次。比如:CCC 表示 300 XX 表示 20,但 150 并不用 LLL 表示,这个规则仅适用于 I X C M。如果相邻级别的大单位在右,小单位在左,表示大单位中扣除小单位。比如:IX 表示9 IV 表示 4 XL 表示 40 更多的示例参见下表,你找到规律了吗?I,1 II,2III,3IV,4V,5VI,6VII,7VIII,8IX,9 X,10XI,11XII,12XIII,13XIV,14XV,15XVI,16XVII,17XVIII,18XIX,19XX,20XXI,21XXII,22XXIX,29XXX,30XXXIV,34XXXV,35XXXIX,39XL,40L,50LI,51LV,55LX,60LXV,65LXXX,80XC,90XCIII,93XCV,95XCVIII,98XCIX,99C,100CC,200CCC,300CD,400D,500DC,600DCC,700DCCC,800CM,900CMXCIX,999本题目的要求是:请编写程序,由用户输入若干个罗马数字串,程序输出对应的十进制表示。输入格式是:第一行是整数 n,表示接下来有 n 个罗马数字(n100)。以后每行一个罗马数字。罗马数字大小不超过 999。要求程序输出 n 行,就是罗马数字对应的十进制数据。例如,用户输入:3LXXXXCIIIDCCII则程序应该输出:8093702注意:请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。请把所有函数写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。相关的工程文件不要拷入。源代码中不能能使用诸如绘图、Win32API 、中断调用、硬件操作或与操作系统相关的API。允许使用 STL 类库,但不能使用 MFC 或 ATL 等非 ANSI c+标准
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号