国信蓝点杯软件程序设计大赛真题 (1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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年。

void f(int year)

{

char* x[] = {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};

char* y[] = {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};

int n = year - 1984;

while(n<0) n += 60;

printf("%s%s\n", x[_______], y[_______]);

}

int main(int argc, char* argv[])

{

f(1911);

f(1970);

f(2012);

return 0;

}

请分析代码逻辑,并推测划线处的代码。

注意:只写划线处应该填的内容,划线前后的内容不要抄写。

如果让你设计个程序,用什么变量保存身份证号码呢?长整数可以吗?不可以!

因为有人的身份证最后一位是"X"

实际上,除了最后一位的X,不会出现其它字母!

身份证号码18位= 17位+ 校验码

校验码的计算过程:

例如:身份证前17位= ABCDEFGHIJKLMNOPQ

A~Q 每位数字乘以权值求和(每位数字和它对应的“权”相乘后累加)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; i<17; i++)

{

sum += (______________) * weight[i]; // 填空

}

return map[____________]; // 填空

}

请分析代码逻辑,并推测划线处的代码。

注意:只写划线处应该填的内容,划线前后的内容不要抄写。

对一方阵转置,就是把原来的行号变列号,原来的列号变行号个

例如,如下的方阵:

相关文档
最新文档