国信蓝点杯软件程序设计大赛真题 1.docx
- 文档编号:7465179
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:13
- 大小:41.94KB
国信蓝点杯软件程序设计大赛真题 1.docx
《国信蓝点杯软件程序设计大赛真题 1.docx》由会员分享,可在线阅读,更多相关《国信蓝点杯软件程序设计大赛真题 1.docx(13页珍藏版)》请在冰点文库上搜索。
国信蓝点杯软件程序设计大赛真题1
2012国信蓝点杯软件程序设计大赛真题
造成高房价的原因有许多,比如土地出让价格。
既然地价高,土地的面积必须仔细计算。
遗憾的是,有些地块的形状不规则,比如是如图【1.jpg】中所示的五边形。
一般需要把它划分为多个三角形来计算。
已知三边求三角形的面积需要用海伦定理,参见【2.jpg】
各条边长数据如下:
AB=52.1
BC=57.2
CD=43.5
DE=51.9
EA=33.4
EB=68.2
EC=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年。
voidf(intyear)
{
char*x[]={"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};
char*y[]={"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};
intn=year-1984;
while(n<0)n+=60;
printf("%s%s\n",x[_______],y[_______]);
}
intmain(intargc,char*argv[])
{
f(1911);
f(1970);
f(2012);
return0;
}
请分析代码逻辑,并推测划线处的代码。
注意:
只写划线处应该填的内容,划线前后的内容不要抄写。
如果让你设计个程序,用什么变量保存身份证号码呢?
长整数可以吗?
不可以!
因为有人的身份证最后一位是"X"
实际上,除了最后一位的X,不会出现其它字母!
身份证号码18位=17位+校验码
校验码的计算过程:
例如:
身份证前17位=ABCDEFGHIJKLMNOPQ
A~Q每位数字乘以权值求和(每位数字和它对应的“权”相乘后累加)
17位对应的权值分别是:
7910584216379105842
求出的总和再对11求模
然后按下表映射:
余数012345678910
校验码:
10X98765432
下面的代码实现了校验过程,输入串为身份证前17位,返回了校验码。
charverifyCode(char*s)
{
staticintweight[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
staticcharmap[]={'1','0','X','9','8','7','6','5','4','3','2'};
intsum=0;
for(inti=0;i<17;i++)
{
sum+=(______________)*weight[i];//填空
}
returnmap[____________];//填空
}
请分析代码逻辑,并推测划线处的代码。
注意:
只写划线处应该填的内容,划线前后的内容不要抄写。
对一方阵转置,就是把原来的行号变列号,原来的列号变行号个
例如,如下的方阵:
1234
5678
9101112
13141516
转置后变为:
15913
261014
371115
481216
但,如果是对该方阵顺时针旋转(不是转置),却是如下结果:
13951
141062
151173
161284
下面的代码实现的功能就是要把一个方阵顺时针旋转。
voidrotate(int*x,intrank)
{
int*y=(int*)malloc(___________________);//填空
for(inti=0;i { y[_________________________]=x[i];//填空 } for(i=0;i { x[i]=y[i]; } free(y); } intmain(intargc,char*argv[]) { intx[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; intrank=4; rotate(&x[0][0],rank); for(inti=0;i { for(intj=0;j { printf("%4d",x[i][j]); } printf("\n"); } return0; } 请分析代码逻辑,并推测划线处的代码。 注意: 只写划线处应该填的内容,划线前后的内容不要抄写。 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行整数。 例如,输入: 14 3045 0211 2345 6543 7777 8888 7878 7788 6688 2424 2244 9918 6789 8866 则输出: 0 0 5 6 8 12 3 3 5 1 1 3 8 5 注意: 请仔细调试! 您的程序只有能运行出正确结果的时候才有机会得分! 在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。 请把所有函数写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。 相关的工程文件不要拷入。 源代码中不能能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。 允许使用STL类库,但不能使用MFC或ATL等非ANSIc++标准的类库。 例如,不能使用CString类型(属于MFC类库)。 古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了。 之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因,当时的宗教禁止在数字中出现0的概念! 罗马数字的表示主要依赖以下几个基本符号: I1 V5 X10 L50 C100 D500 M1000 这里,我们只介绍一下1000以内的数字的表示法。 单个符号重复多少次,就表示多少倍。 最多重复3次。 比如: CCC表示300XX表示20,但150并不用LLL表示,这个规则仅适用于IXCM。 如果相邻级别的大单位在右,小单位在左,表示大单位中扣除小单位。 比如: IX表示9IV表示4XL表示40更多的示例参见下表,你找到规律了吗? I,1 II,2 III,3 IV,4 V,5 VI,6 VII,7 VIII,8 IX,9 X,10 XI,11 XII,12 XIII,13 XIV,14 XV,15 XVI,16 XVII,17 XVIII,18 XIX,19 XX,20 XXI,21 XXII,22 XXIX,29 XXX,30 XXXIV,34 XXXV,35 XXXIX,39 XL,40 L,50 LI,51 LV,55 LX,60 LXV,65 LXXX,80 XC,90 XCIII,93 XCV,95 XCVIII,98 XCIX,99 C,100 CC,200 CCC,300 CD,400 D,500 DC,600 DCC,700 DCCC,800 CM,900 CMXCIX,999 本题目的要求是: 请编写程序,由用户输入若干个罗马数字串,程序输出对应的十进制表示。 输入格式是: 第一行是整数n,表示接下来有n个罗马数字(n<100)。 以后每行一个罗马数字。 罗马数字大小不超过999。 要求程序输出n行,就是罗马数字对应的十进制数据。 例如,用户输入: 3 LXXX XCIII DCCII 则程序应该输出: 80 93 702 注意: 请仔细调试! 您的程序只有能运行出正确结果的时候才有机会得分! 在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。 请把所有函数写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。 相关的工程文件不要拷入。 源代码中不能能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。 允许使用STL类库,但不能使用MFC或ATL等非ANSIc++标准的类库。 例如,不能使用CString类型(属于MFC类库)。 a)2x3=6个方格中放入ABCDE五个字母,右下角的那个格空着。 如图【1.jpg】所示。 b) c)和空格子相邻的格子中的字母可以移动到空格中,比如,图中的C和E就可以移动,移动后的局面分别是: d) e)AB f)DEC g) h)ABC i)DE j) k)为了表示方便,我们把6个格子中字母配置用一个串表示出来,比如上边的两种局面分别表示为: l) m)AB*DEC n)ABCD*E o) p)题目的要求是: 请编写程序,由用户输入若干表示局面的串,程序通过计算,输出是否能通过对初始状态经过若干次移动到达该状态。 可以实现输出1,否则输出0。 初始状态为: ABCDE* q) r)用户输入的格式是: 先是一个整数n,表示接下来有n行状态。 程序输出也应该是n行1或0 s) t)例如,用户输入: u) v)3 w)ABCDE* x)AB*DEC y)CAED*B zz) aa)则程序应该输出: bb)1 cc)1 dd)0 ee) ff) gg)注意: hh) ii)请仔细调试! 您的程序只有能运行出正确结果的时候才有机会得分! jj) kk)在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。 ll) mm)请把所有函数写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。 nn) oo)相关的工程文件不要拷入。 pp) qq)源代码中不能能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。 rr) ss)允许使用STL类库,但不能使用MFC或ATL等非ANSIc++标准的类库。 例如,不能使用CString类型(属于MFC类库)。 tt) uu) vv) ww) xx) yy) zzz) aaa) bbb)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 国信蓝点杯软件程序设计大赛真题 国信 蓝点杯 软件 程序设计 大赛