请问:哪/哪里能看到龙珠gt漫画 >赌——球? ? ??

当前位置: >>
蓝桥杯试题
【标题】:振兴中华 小明参加了学校的趣味运动会,其中的一个项目是:跳格子。 地 上 画 着 一 些 格 子 , 每 个 格 子 里 写 一 个 字 , 如 下 所 示 :( 也 可 参 见) 从我做起振 我做起振兴 做起振兴中 起振兴中华 比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里, 但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。 要求跳过的路线刚好构成“从我做起振兴中华”这句话。 请你帮助小明算一算他一共有多少种可能的跳跃路线呢? 答案是一个整数,请通过浏览器直接提交该数字。 注意:不要提交解答过程,或其它辅助说明类的内容。 【标题】 :大臣的旅费 很久以前,T 王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连 接首都和王国内的各大城市。 为节省经费,T 国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城 市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到 达每个大城市的方案都是唯一的。 J 是 T 国重要大臣,他巡查于各大城市之间,体察民情。所以,从一个城市马不停蹄地 到另一个城市成了 J 最常做的事情。他有一个钱袋,用于存放往来城市间的路费。 聪明的 J 发现,如果不在某个城市停下来修整,在连续行进过程中,他所花的路费与他 已走过的距离有关,在走第 x 千米到第 x+1 千米这一千米中(x 是整数) ,他花费的路费是 x+10 这么多。也就是说走 1 千米花费 11,走 2 千米要花费 23。 J 大臣想知道:他从某一个城市出发,中间不休息,到达另一个城市,所有可能花费的 路费中最多是多少呢? 输入格式: 输入的第一行包含一个整数 n,表示包括首都在内的 T 王国的城市数 城市从 1 开始依次编号,1 号城市为首都。 接下来 n-1 行,描述 T 国的高速路(T 国的高速路一定是 n-1 条) 每行三个整数 Pi,Qi,Di,表示城市 Pi 和城市 Qi 之间有一条高速路,长度为 Di 千米。 输出格式: 输出一个整数,表示大臣 J 最多花费的路费是多少。 样例输入: 5 122 131 245 254 样例输出: 135 样例说明: 大臣 J 从城市 4 到城市 5 要花费 135 的路费。 根据资源限制尽可能考虑支持更大的数据规模。 资源约定: 峰值内存消耗&64M CPU 消耗&5000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:main 函数需要返回 0 注意:只使用 ANSI C/ANSI C++标准, 不要调用依赖于编译环境或操作系统的特殊函数。 注意:所有依赖的函数必须明确地在源文件中#include&xxx&,不能通过工程设置而省略 常用头文件。 提交时,注意选择所期望的编译器类型。 【标题】 :买不到的数目 小明开了一家糖果店。他别出心裁:把水果糖包成 4 颗一包和 7 颗一包的两种。糖果不 能拆包卖。 小朋友来买糖的时候, 他就用这两种包装来组合。 当然有些糖果数目是无法组合出来的, 比如要买 10 颗糖。 你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是 17。大于 17 的 任何数字都可以用 4 和 7 组合出来。 本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。 输入: 两个正整数,表示每种包装中糖的颗数(都不多于 1000) 要求输出: 一个正整数,表示最大不能买到的糖数 不需要考虑无解的情况 例如: 用户输入: 47 程序应该输出: 17 再例如: 用户输入: 35 程序应该输出: 7 资源约定: 峰值内存消耗(含虚拟机)&64M CPU 消耗&3000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用 package 语句。不要使用 jdk1.6 及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。 【标题】 :公约数公倍数 我们经常会用到求两个整数的最大公约数和最小公倍数的功能。 下面的程序给出了一种算法。 函数 myfunc 接受两个正整数 a,b 经过运算后打印出它们的最大公约数和最小公倍数。 此时,调用 myfunc(15,20) 将会输出: 5 60 //交换数值 void swap(int*a,int*b) { temp=*a; *a=*b; *b= } void myfunc(int a,int b) { int m,n,r; if(a&b)swap(&a,&b); m=a;n=b;r=a%b; while(r!=0) { a=b;b=r; r=a%b; } printf(&%d\n&,b);//最大公约数 printf(&%d\n&,____________________________________);//最小公倍数 } 请分析代码逻辑,并推测划线处的代码,通过网页提交。 注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字! ! 【标题】 :逆波兰表达式 正常的表达式称为中缀表达式, 运算符在中间, 主要是给人阅读的, 机器求解并不方便。 例如:3+5*(2+6)-1 而且,常常需要用括号来改变运算次序。 相反,如果使用逆波兰表达式(前缀表达式)表示,上面的算式则表示为: -+3*5+2 6 1 不再需要括号,机器可以用递归的方法很方便地求解。 为了简便,我们假设: 1.只有+-*三种运算符 2.每个运算数都是一个小于 10 的非负整数 下面的程序对一个逆波兰表示串进行求值。 其返回值为一个结构: 其中第一元素表示求值结果, 第二个元素表示它已解析的字符数。 struct EV {//计算结果//消耗掉的字符数 }; struct EV evaluate(char*x) { struct EV ev={0,0}; struct EV v1; struct EV v2; if(*x==0) if(x[0]&='0'&&x[0]&='9'){ ev.result=x[0]-'0'; ev.n=1; } v1=evaluate(x+1); v2=_____________________________;//填空位置 if(x[0]=='+')ev.result=v1.result+v2. if(x[0]=='*')ev.result=v1.result*v2. if(x[0]=='-')ev.result=v1.result-v2. ev.n=1+v1.n+v2.n; } 请分析代码逻辑,并推测划线处的代码,通过网页提交。 注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字! ! 【标题】:马虎的算式 小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了。 有一次,老师出的题目是:36 x 495=? 他却给抄成了:396 x 45=? 但结果却很戏剧性,他的答案竟然是对的! ! 因为 36*495=396*45=17820 类似这样的巧合情况可能还有很多,比如:27*594=297*54 假设 a b c d e 代表 1~9 不同的 5 个数字(注意是各不相同的数字,且不含 0) 能满足形如:ab*cde=adb*ce 这样的算式一共有多少种呢? 请你利用计算机的优势寻找所有的可能,并回答不同算式的种类数。 满足乘法交换律的算式计为不同的种类,所以答案肯定是个偶数。 答案直接通过浏览器提交。 注意:只提交一个表示最终统计种类数的数字,不要提交解答过程或其它多余的内容。 【标题】:组素数 素数就是不能再进行等分的数。比如:2 3 5 7 11 等。 9=3*3 说明它可以 3 等分,因而不是素数。 我们国家在 1949 年建国。如果只给你 1 9 4 9 这 4 个数字卡片,可以随意摆放它们的先 后顺序(但卡片不能倒着摆放啊,我们不是在脑筋急转弯!,那么,你能组成多少个 4 位的 ) 素数呢? 比如: 都符合要求。 请你提交:能组成的 4 位素数的个数,不要罗列这些素数!! 注意:不要提交解答过程,或其它的辅助说明文字。 【标题】:梅森素数如果一个数字的所有真因子之和等于自身,则称它为“完全数”或“完美数” 例如:6=1+2+3 28=1+2+4+7+14 早在公元前 300 多年,欧几里得就给出了判定完全数的定理: 若 2^n-1 是素数,则 2^(n-1)*(2^n-1)是完全数。 其中^表示“乘方”运算,乘方的优先级比四则运算高,例如:2^3=8,2*2^3=16,2^3-1=7 但人们很快发现,当 n 很大时,判定一个大数是否为素数到今天也依然是个难题。 因为法国数学家梅森的猜想,我们习惯上把形如:2^n-1 的素数称为:梅森素数。 截止 2013 年 2 月,一共只找到了 48 个梅森素数。新近找到的梅森素数太大,以至于难 于用一般的编程思路窥其全貌,所以我们把任务的难度降低一点: 1963 年,美国伊利诺伊大学为了纪念他们找到的第 23 个梅森素数 n=11213,在每个寄 出的信封上都印上了“2^11213-1 是素数”的字样。 2^11213-1 这个数字已经很大(有 3000 多位),请你编程求出这个素数的十进制表示的最 后 100 位。 答案是一个长度为 100 的数字串,请通过浏览器直接提交该数字。 注意:不要提交解答过程,或其它辅助说明类的内容。 标题:打印十字图 小明为某机构设计了一个十字型的徽标(并非红十字会啊) ,如下所示(可参见 p1.jpg) $$$$$$$$$$$$$ $ $ $$$ $$$$$$$$$ $$$ $ $ $ $ $ $$$ $$$$$ $$$ $ $$ $ $ $$ $ $ $$$ $ $$$ $ $ $$$ $ $$$ $ $ $ $$$$$ $ $ $ $$$ $ $$$ $ $ $$$ $ $$$ $ $ $$ $ $ $$ $ $$$ $$$$$ $$$ $ $ $ $ $ $$$ $$$$$$$$$ $$$ $ $ $$$$$$$$$$$$$对方同时也需要在电脑 dos 窗口中以字符的形式输出该标志,并能任意控制层数。 为了能准确比对空白的数量,程序要求对行中的空白以句点(.)代替。 输入格式: 一个正整数 n (n&30) 表示要求打印图形的层数 输出: 对应包围层数的该标志。 例如: 用户输入: 1 程序应该输出: ..$$$$$.. ..$...$.. $$$.$.$$$ $...$...$ $.$$$$$.$ $...$...$ $$$.$.$$$ ..$...$.. ..$$$$$.. 再例如: 用户输入: 3 程序应该输出: ..$$$$$$$$$$$$$.. ..$...........$.. $$$.$$$$$$$$$.$$$ $...$.......$...$ $.$$$.$$$$$.$$$.$ $.$...$...$...$.$ $.$.$$$.$.$$$.$.$ $.$.$...$...$.$.$ $.$.$.$$$$$.$.$.$ $.$.$...$...$.$.$ $.$.$$$.$.$$$.$.$ $.$...$...$...$.$ $.$$$.$$$$$.$$$.$ $...$.......$...$ $$$.$$$$$$$$$.$$$ ..$...........$.. ..$$$$$$$$$$$$$.. 请仔细观察样例,尤其要注意句点的数量和输出位置。资源约定: 峰值内存消耗(含虚拟机) & 64M CPU 消耗 & 1000ms请严格按要求输出,不要画蛇添足地打印类似: “请您输入...” 的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用 package 语句。不要使用 jdk1.6 及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。 【标题】 :连号区间数 小明这些天一直在思考这样一个奇怪而有趣的问题: 在 1~N 的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L,R]里的所有元素(即此排列的第 L 个到第 R 个元素)递增排序后能得到一 个长度为 R-L+1 的“连续”数列,则称这个区间连号区间。 当 N 很小的时候,小明可以很快地算出答案,但是当 N 变大的时候,问题就不是那么 简单了,现在小明需要你的帮助。 输入格式: 第一行是一个正整数 N(1&=N&=50000),表示全排列的规模。 第二行是 N 个不同的数字 Pi(1&=Pi&=N),表示这 N 个数字的某一全排列。 输出格式: 输出一个整数,表示不同连号区间的数目。 示例: 用户输入: 4 3241 程序应输出: 7 用户输入: 5 34251 程序应输出: 9 解释: 第一个用例中,有 7 个连号区间分别是:[1,1],[1,2],[1,3],[1,4],[2,2],[3,3],[4,4] 第二个用例中,有 9 个连号区间分别是:[1,1],[1,2],[1,3],[1,4],[1,5],[2,2],[3,3],[4,4],[5,5] 资源约定: 峰值内存消耗(含虚拟机)&64M CPU 消耗&5000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用 package 语句。不要使用 jdk1.6 及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。 【标题】 :连号区间数 小明这些天一直在思考这样一个奇怪而有趣的问题: 在 1~N 的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L,R]里的所有元素(即此排列的第 L 个到第 R 个元素)递增排序后能得到一 个长度为 R-L+1 的“连续”数列,则称这个区间连号区间。 当 N 很小的时候,小明可以很快地算出答案,但是当 N 变大的时候,问题就不是那么 简单了,现在小明需要你的帮助。 输入格式: 第一行是一个正整数 N(1&=N&=50000),表示全排列的规模。 第二行是 N 个不同的数字 Pi(1&=Pi&=N),表示这 N 个数字的某一全排列。 输出格式: 输出一个整数,表示不同连号区间的数目。 示例: 用户输入: 4 3241 程序应输出: 7 用户输入: 5 34251 程序应输出: 9 解释: 第一个用例中,有 7 个连号区间分别是:[1,1],[1,2],[1,3],[1,4],[2,2],[3,3],[4,4] 第二个用例中,有 9 个连号区间分别是:[1,1],[1,2],[1,3],[1,4],[1,5],[2,2],[3,3],[4,4],[5,5] 资源约定: 峰值内存消耗&64M CPU 消耗&5000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:main 函数需要返回 0 注意:只使用 ANSI C/ANSI C++标准, 不要调用依赖于编译环境或操作系统的特殊函数。 注意:所有依赖的函数必须明确地在源文件中#include&xxx&,不能通过工程设置而省略 常用头文件。 提交时,注意选择所期望的编译器类型。 题目【标题】 :翻硬币 小明正在玩一个“翻硬币”的游戏。 桌上放着排成一排的若干硬币。我们用*表示正面,用 o 表示反面(是小写字母,不是 零) 。 比如,可能情形是:**oo***oooo 如果同时翻转左边的两个硬币,则变为:oooo***oooo 现在小明的问题是: 如果已知了初始状态和要达到的目标状态, 每次只能同时翻转相邻 的两个硬币,那么对特定的局面,最少要翻动多少次呢? 我们约定:把翻动相邻的两个硬币叫做一步操作,那么要求: 程序输入: 两行等长的字符串,分别表示初始状态和要达到的目标状态。每行的长度&1000 程序输出: 一个整数,表示最小操作步数 例如: 用户输入: ********** o****o**** 程序应该输出: 5 再例如: 用户输入: *o**o***o*** *o***o**o*** 程序应该输出: 1 资源约定: 峰值内存消耗&64M CPU 消耗&1000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:main 函数需要返回 0 注意:只使用 ANSI C/ANSI C++标准, 不要调用依赖于编译环境或操作系统的特殊函数。 注意:所有依赖的函数必须明确地在源文件中#include&xxx&,不能通过工程设置而省略 常用头文件。 提交时,注意选择所期望的编译器类型。 【标题】:黄金连分数 黄金分割数 0.61803...是个无理数,这个常数十分重要,在许多工程问题中会出现。有 时需要把这个数字求得很精确。 对于某些精密工程,常数的精度很重要。也许你听说过哈勃太空望远镜,它首次升空后 就发现了一处人工加工错误, 对那样一个庞然大物, 其实只是镜面加工时有比头发丝还细许 多倍的一处错误而已,却使它成了“近视眼”!! 言归正传,我们如何求得黄金分割数的尽可能精确的值呢?有许多方法。 比较简单的一种是用连分数: 1 黄金数=--------------------1 1+----------------1 1+------------1 1+--------1+... 这个连分数计算的“层数”越多,它的值越接近黄金分割数。 请你利用这一特性,求出黄金分割数的足够精确值,要求四舍五入到小数点后 100 位。 小数点后 3 位的值为:0.618 小数点后 4 位的值为:0.6180 小数点后 5 位的值为:0.61803 小数点后 7 位的值为:0.6180340 (注意尾部的 0,不能忽略) 你的任务是:写出精确到小数点后 100 位精度的黄金分割值。 注意:尾数的四舍五入!尾数是 0 也要保留! 显然答案是一个小数,其小数点后有 100 位数字,请通过浏览器直接提交该数字。 注意:不要提交解答过程,或其它辅助说明类的内容。 【标题】:黄金连分数 黄金分割数 0.61803...是个无理数,这个常数十分重要,在许多工程问题中会出现。有 时需要把这个数字求得很精确。 对于某些精密工程,常数的精度很重要。也许你听说过哈勃太空望远镜,它首次升空后 就发现了一处人工加工错误, 对那样一个庞然大物, 其实只是镜面加工时有比头发丝还细许 多倍的一处错误而已,却使它成了“近视眼”!! 言归正传,我们如何求得黄金分割数的尽可能精确的值呢?有许多方法。 比较简单的一种是用连分数: 1 黄金数=--------------------1 1+----------------1 1+------------1 1+--------1+... 这个连分数计算的“层数”越多,它的值越接近黄金分割数。 请你利用这一特性,求出黄金分割数的足够精确值,要求四舍五入到小数点后 100 位。 小数点后 3 位的值为:0.618 小数点后 4 位的值为:0.6180 小数点后 5 位的值为:0.61803 小数点后 7 位的值为:0.6180340 (注意尾部的 0,不能忽略) 你的任务是:写出精确到小数点后 100 位精度的黄金分割值。 注意:尾数的四舍五入!尾数是 0 也要保留! 显然答案是一个小数,其小数点后有 100 位数字,请通过浏览器直接提交该数字。 注意:不要提交解答过程,或其它辅助说明类的内容。 【标题】 :剪格子 如图 p1.jpg 所示,3 x 3 的格子中填写了一些整数。 我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是 60。 本题的要求就是请你编程判定:对给定的 m x n 的格子中的整数,是否可以分割为两个 部分,使得这两个区域的数字和相等。 如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。 如果无法分割,则输出 0 程序输入输出格式要求: 程序先读入两个整数 m n 用空格分割(m,n&10) 表示表格的宽度和高度 接下来是 n 行,每行 m 个正整数,用空格分开。每个整数不大于 10000 程序输出:在所有解中,包含左上角的分割区可能包含的最小的格子数目。 例如: 用户输入: 33 10 1 52 20 30 1 123 则程序输出: 3 再例如: 用户输入: 43
80 2 1 1 1 100 则程序输出: 10 (参见 p2.jpg) 资源约定: 峰值内存消耗&64M CPU 消耗&5000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:main 函数需要返回 0 注意:只使用 ANSI C/ANSI C++标准, 不要调用依赖于编译环境或操作系统的特殊函数。 注意:所有依赖的函数必须明确地在源文件中#include&xxx&,不能通过工程设置而省略 常用头文件。 提交时,注意选择所期望的编译器类型。 【标题】 :核桃的数量 小张是软件项目经理,他带领 3 个开发组。工期紧,今天都在加班呢。为鼓舞士气,小 张打算给每个组发一袋核桃(据传言能补脑) 。他的要求是: 1.各组的核桃数量必须相同 2.各组内必须能平分核桃(当然是不能打碎的) 3.尽量提供满足 1,2 条件的最小数量(节约闹革命嘛) 程序从标准输入读入: abc a,b,c 都是正整数,表示每个组正在加班的人数,用空格分开(a,b,c&30) 程序输出: 一个正整数,表示每袋核桃的数量。 例如: 用户输入: 245 程序输出: 20 再例如: 用户输入: 311 程序输出: 3 资源约定: 峰值内存消耗(含虚拟机)&64M CPU 消耗&1000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:main 函数需要返回 0 注意:只使用 ANSI C/ANSI C++标准, 不要调用依赖于编译环境或操作系统的特殊函数。 注意:所有依赖的函数必须明确地在源文件中#include&xxx&,不能通过工程设置而省略 常用头文件。 提交时,注意选择所期望的编译器类型。 【标题】 :三部排序 一般的排序有许多经典算法,如快速排序、希尔排序等。 但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可 以根据实际情况建立更好的解法。 比如,对一个整型数组中的数字进行分类排序: 使得负数都靠左端,正数都靠右端,0 在中部。注意问题的特点是:负数区域和正数区 域内并不要求有序。可以利用这个特点通过 1 次线性扫描就结束战斗!! 以下的程序实现了该目标。 其中 x 指向待排序的整型数组,len 是数组的长度。 void sort3p(int*x,int len) { int p=0; int left=0; int right=len-1; while(p&=right){ if(x[p]&0){ int t=x[left]; x[left]=x[p]; x[p]=t; left++; p++; } else if(x[p]&0){ int t=x[right]; x[right]=x[p]; x[p]=t; right--; } else{ __________________________;//填空位置 } } } 如果给定数组: 25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0 则排序后为: -3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25 请分析代码逻辑,并推测划线处的代码,通过网页提交 注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字! ! 【标题】 :三部排序 一般的排序有许多经典算法,如快速排序、希尔排序等。 但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可 以根据实际情况建立更好的解法。 比如,对一个整型数组中的数字进行分类排序: 使得负数都靠左端,正数都靠右端,0 在中部。注意问题的特点是:负数区域和正数区 域内并不要求有序。可以利用这个特点通过 1 次线性扫描就结束战斗!! 以下的程序实现了该目标。 其中 x 指向待排序的整型数组,len 是数组的长度。 void sort3p(int*x,int len) { int p=0; int left=0; int right=len-1; while(p&=right){ if(x[p]&0){ int t=x[left]; x[left]=x[p]; x[p]=t; left++; p++; } else if(x[p]&0){ int t=x[right]; x[right]=x[p]; x[p]=t; right--; } else{ __________________________;//填空位置 } } } 如果给定数组: 25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0 则排序后为: -3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25 请分析代码逻辑,并推测划线处的代码,通过网页提交 注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字! ! 【标题】:幻方填空 幻方是把一些数字填写在方阵中,使得行、列、两条对角线的数字之和都相等。 欧洲最著名的幻方是德国数学家、 画家迪勒创作的版画 《忧郁》 中给出的一个 4 阶幻方。 他把 1,2,3,...16 这 16 个数字填写在 4 x 4 的方格中。 如图 p1.jpg 所示,即: 16??13 ??11? 9??* ?15?1 表中有些数字已经显露出来,还有些用?和*代替。 请你计算出?和*所代表的数字。并把*所代表的数字作为本题答案提交。 答案是一个整数,请通过浏览器直接提交该数字。 注意:不要提交解答过程,或其它辅助说明类的内容。 题目【标题】:猜年龄 美国数学家维纳(N.Wiener)智力早熟,11 岁就上了大学。他曾在
年应邀来中 国清华大学讲学。 一次, 他参加某个重要会议, 年轻的脸孔引人注目。 于是有人询问他的年龄, 他回答说: “我年龄的立方是个 4 位数。我年龄的 4 次方是个 6 位数。这 10 个数字正好包含了从 0 到 9 这 10 个数字,每个都恰好出现 1 次。 ” 请你推算一下,他当时到底有多年轻。 通过浏览器,直接提交他那时的年龄数字。 注意:不要提交解答过程,或其它的说明文字。 【标题】 :带分数 100 可以表示为带分数的形式:100=3+ 还可以表示为:100=82+ 注意特征:带分数中,数字 1~9 分别出现且只出现一次(不包含 0) 。 类似这样的带分数,100 有 11 种表示法。 题目要求: 从标准输入读入一个正整数 N(N&) 程序输出该数字用数码 1~9 不重复不遗漏地组成带分数表示的全部种数。 注意:不要求输出每个表示,只统计有多少表示法! 例如: 用户输入: 100 程序输出: 11 再例如: 用户输入: 105 程序输出: 6 资源约定: 峰值内存消耗&64M CPU 消耗&3000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:main 函数需要返回 0 注意:只使用 ANSI C/ANSI C++标准, 不要调用依赖于编译环境或操作系统的特殊函数。 注意:所有依赖的函数必须明确地在源文件中#include&xxx&,不能通过工程设置而省略 常用头文件。 提交时,注意选择所期望的编译器类型。 【标题】 :带分数 100 可以表示为带分数的形式:100=3+ 还可以表示为:100=82+ 注意特征:带分数中,数字 1~9 分别出现且只出现一次(不包含 0) 。 类似这样的带分数,100 有 11 种表示法。 题目要求: 从标准输入读入一个正整数 N(N&) 程序输出该数字用数码 1~9 不重复不遗漏地组成带分数表示的全部种数。 注意:不要求输出每个表示,只统计有多少表示法! 例如: 用户输入: 100 程序输出: 11 再例如: 用户输入: 105 程序输出: 6 资源约定: 峰值内存消耗&64M CPU 消耗&3000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:main 函数需要返回 0 注意:只使用 ANSI C/ANSI C++标准, 不要调用依赖于编译环境或操作系统的特殊函数。 注意:所有依赖的函数必须明确地在源文件中#include&xxx&,不能通过工程设置而省略 常用头文件。 提交时,注意选择所期望的编译器类型。 题目【标题】:第 39 级台阶 小明刚刚看完电影《第 39 级台阶》 ,离开电影院的时候,他数了数礼堂前的台阶数,恰 好是 39 级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上 1 个或 2 个台阶。 先迈左脚, 然后左右交替, 最后一步是迈右脚, 也就是说一共要走偶数步。那么,上完 39 级台阶,有多少种不同的上法呢? 请你利用计算机的优势,帮助小明寻找答案。 要求提交的是一个整数。 注意:不要提交解答过程,或其它的辅助说明文字。 题目【标题】:高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是 个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777 年 4 月 30 日。 在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791 年 12 月 15 日。 高斯获得博士学位的那天日记上标着:8113 请你算出高斯获得博士学位的年月日。 提交答案的格式是:yyyy-mm-dd,例如: 请严格按照格式,通过浏览器提交答案。 注意:只提交这个日期,不要写其它附加内容,比如:说明性的文字。 题目【标题】:高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是 个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777 年 4 月 30 日。 在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791 年 12 月 15 日。 高斯获得博士学位的那天日记上标着:8113 请你算出高斯获得博士学位的年月日。 提交答案的格式是:yyyy-mm-dd,例如: 请严格按照格式,通过浏览器提交答案。 注意:只提交这个日期,不要写其它附加内容,比如:说明性的文字。 【标题】 :剪格子 如图 p1.jpg 所示,3 x 3 的格子中填写了一些整数。 我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是 60。 本题的要求就是请你编程判定:对给定的 m x n 的格子中的整数,是否可以分割为两个 部分,使得这两个区域的数字和相等。 如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。 如果无法分割,则输出 0 程序输入输出格式要求: 程序先读入两个整数 m n 用空格分割(m,n&10) 表示表格的宽度和高度 接下来是 n 行,每行 m 个正整数,用空格分开。每个整数不大于 10000 程序输出:在所有解中,包含左上角的分割区可能包含的最小的格子数目。 例如: 用户输入: 33 10 1 52 20 30 1 123 则程序输出: 3 再例如: 用户输入: 43
80 2 1 1 1 100 则程序输出: 10 (参见 p2.jpg) 资源约定: 峰值内存消耗&64M CPU 消耗&5000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:main 函数需要返回 0 注意:只使用 ANSI C/ANSI C++标准, 不要调用依赖于编译环境或操作系统的特殊函数。 注意:所有依赖的函数必须明确地在源文件中#include&xxx&,不能通过工程设置而省略 常用头文件。 提交时,注意选择所期望的编译器类型。 【标题】 :错误票据 某涉密单位下发了某种票据,并要在年终全部收回。 每张票据有唯一的 ID 号。全年所有票据的 ID 号是连续的,但 ID 的开始数码是随机选 定的。 因为工作人员疏忽,在录入 ID 号的时候发生了一处错误,造成了某个 ID 断号,另外 一个 ID 重号。 你的任务是通过编程,找出断号的 ID 和重号的 ID。 假设断号不可能发生在最大和最小号。 要求程序首先输入一个整数 N(N&100)表示后面数据行数。 接着读入 N 行数据。 每行数据长度不等,是用空格分开的若干个(不大于 100 个)正整数(不大于 100000) 每个整数代表一个 ID 号。 要求程序输出 1 行,含两个整数 m n,用空格分隔。 其中,m 表示断号 ID,n 表示重号 ID 例如: 用户输入: 2 5 6 8 11 9 10 12 9 则程序输出: 79 再例如: 用户输入: 6 164 178 108 109 180 155 141 159 104 182 179 118 137 184 115 124 125 129 168 196 172 189 127 107 112 192 103 131 133 169 158 128 102 110 148 139 157 140 195 197 185 152 135 106 123 173 122 136 174 191 145 116 151 143 175 120 161 134 162 190 149 138 142 146 199 126 165 156 153 193 144 166 170 121 171 132 101 194 187 188 113 130 176 154 177 120 117 150 114 183 186 181 100 163 160 167 147 198 111 119 则程序输出: 105 120 资源约定: 峰值内存消耗(含虚拟机)&64M CPU 消耗&2000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用 package 语句。不要使用 jdk1.6 及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。 题目【标题】 :前缀判断 如下的代码判断 needle_start 指向的串是否为 haystack_start 指向的串的前缀,如不是, 则返回 NULL。 比如:&abcd1234&就包含了&abc&为前缀 char*prefix(char*haystack_start,char*needle_start) { char*haystack=haystack_ char*needle=needle_ while(*haystack&&*needle){ if(______________________________)return NULL;//填空位置 } if(*needle)return NULL; return haystack_ } 请分析代码逻辑,并推测划线处的代码,通过网页提交。 注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字! ! 题目【标题】:排它平方数 小明正看着 203879 这个数字发呆。 原来,879= 这有什么神奇呢?仔细观察,203879 是个 6 位数,并且它的每个数位上的数字都是不 同的,并且它平方后的所有数位上都不出现组成它自身的数字。 具有这样特点的 6 位数还有一个,请你找出它! 再归纳一下筛选要求: 1.6 位正整数 2.每个数位上的数字不同 3.其平方数的每个数位不含原数字的任何组成数位 答案是一个 6 位的正整数。 请通过浏览器提交答案。 注意:只提交另一 6 位数,题中已经给出的这个不要提交。 注意:不要书写其它的内容(比如:说明性的文字) 。 【标题】 :核桃的数量 小张是软件项目经理,他带领 3 个开发组。工期紧,今天都在加班呢。为鼓舞士气,小 张打算给每个组发一袋核桃(据传言能补脑) 。他的要求是: 1.各组的核桃数量必须相同 2.各组内必须能平分核桃(当然是不能打碎的) 3.尽量提供满足 1,2 条件的最小数量(节约闹革命嘛) 程序从标准输入读入: abc a,b,c 都是正整数,表示每个组正在加班的人数,用空格分开(a,b,c&30) 程序输出: 一个正整数,表示每袋核桃的数量。 例如: 用户输入: 245 程序输出: 20 再例如: 用户输入: 311 程序输出: 3 资源约定: 峰值内存消耗(含虚拟机)&64M CPU 消耗&1000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用 package 语句。不要使用 jdk1.6 及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。 【标题】:第 39 级台阶 小明刚刚看完电影《第 39 级台阶》 ,离开电影院的时候,他数了数礼堂前的台阶数,恰 好是 39 级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上 1 个或 2 个台阶。 先迈左脚, 然后左右交替, 最后一步是迈右脚, 也就是说一共要走偶数步。那么,上完 39 级台阶,有多少种不同的上法呢? 请你利用计算机的优势,帮助小明寻找答案。 要求提交的是一个整数。 注意:不要提交解答过程,或其它的辅助说明文字。 【标题】:猜年龄 美国数学家维纳(N.Wiener)智力早熟,11 岁就上了大学。他曾在
年应邀来中 国清华大学讲学。 一次, 他参加某个重要会议, 年轻的脸孔引人注目。 于是有人询问他的年龄, 他回答说: “我年龄的立方是个 4 位数。我年龄的 4 次方是个 6 位数。这 10 个数字正好包含了从 0 到 9 这 10 个数字,每个都恰好出现 1 次。 ” 请你推算一下,他当时到底有多年轻。 通过浏览器,直接提交他那时的年龄数字。 注意:不要提交解答过程,或其它的说明文字。 【标题】 :幸运数 幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。 首先从 1 开始写出自然数 1,2,3,4,5,6,.... 1 就是第一个幸运数。 我们从 2 这个数开始。把所有序号能被 2 整除的项删除,变为: 1_3_5_7_9.... 把它们缩紧,重新记序,为: 1 3 5 7 9....。这时,3 为第 2 个幸运数,然后把所有能被 3 整除的序号位置的数删去。 注意,是序号位置,不是那个数本身能否被 3 整除!!删除的应该是 5,11,17,... 此时 7 为第 3 个幸运数,然后再删去序号位置能被 7 整除的(19,39,...) 最后剩下的序列类似: 1,3,7,9,13,15,21,25,31,33,37,43,49,51,63,67,69,73,75,79,... 本题要求: 输入两个正整数 m n,用空格分开(m&n&) 程序输出位于 m 和 n 之间的幸运数的个数(不包含 m 和 n) 。 例如: 用户输入: 1 20 程序输出: 5 例如: 用户输入: 30 69 程序输出: 8 资源约定: 峰值内存消耗(含虚拟机)&64M CPU 消耗&2000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用 package 语句。不要使用 jdk1.6 及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。 【标题】 :有理数类 有理数就是可以表示为两个整数的比值的数字。一般情况下,我们用近似的小数表示。 但有些时候,不允许出现误差,必须用两个整数来表示一个有理数。 这时,我们可以建立一个“有理数类” ,下面的代码初步实现了这个目标。为了简明, 它只提供了加法和乘法运算。 【标题】 :有理数类 有理数就是可以表示为两个整数的比值的数字。一般情况下,我们用近似的小数表示。 但有些时候,不允许出现误差,必须用两个整数来表示一个有理数。 这时,我们可以建立一个“有理数类” ,下面的代码初步实现了这个目标。为了简明, 它只提供了加法和乘法运算。 class Rational {
private long gcd(long a,long b){ if(b==0) return gcd(b,a%b); } public Rational(long a,long b){ ra=a; rb=b; long k=gcd(ra,rb); if(k&1){//需要约分 ra/=k; rb/=k; } } //加法 public Rational add(Rational x){ return________________________________________;//填空位置 } //乘法 public Rational mul(Rational x){ return new Rational(ra*x.ra,rb*x.rb); } public String toString(){ if(rb==1)return&&+ return ra+&/&+ } } 使用该类的示例: Rational a=new Rational(1,3); Rational b=new Rational(1,6); Rational c=a.add(b); System.out.println(a+&+&+b+&=&+c); 请分析代码逻辑,并推测划线处的代码,通过网页提交 注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字! ! 【标题】:世纪末的星期 曾有邪教称 1999 年 12 月 31 日是世界末日。当然该谣言已经不攻自破。 还有人称今后的某个世纪末的 12 月 31 日,如果是星期一则会.... 有趣的是,任何一个世纪末的年份的 12 月 31 日都不可能是星期一!! 于是, “谣言制造商”又修改为星期日...... 1999 年的 12 月 31 日是星期五, 请问: 未来哪一个离我们最近的一个世纪末年 (即 xx99 年)的 12 月 31 日正好是星期天(即星期日)? 请回答该年份(只写这个 4 位整数,不要写 12 月 31 等多余信息) 【标题】 :剪格子 如图 p1.jpg 所示,3 x 3 的格子中填写了一些整数。 我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是 60。 本题的要求就是请你编程判定:对给定的 m x n 的格子中的整数,是否可以分割为两个 部分,使得这两个区域的数字和相等。 如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最小数目。 如果无法分割,则输出 0 程序输入输出格式要求: 程序先读入两个整数 m n 用空格分割(m,n&10) 表示表格的宽度和高度 接下来是 n 行,每行 m 个正整数,用空格分开。每个整数不大于 10000 程序输出:在所有解中,包含左上角的分割区可能包含的最小的格子数目。 例如: 用户输入: 33 10 1 52 20 30 1 123 则程序输出: 3 再例如: 用户输入: 43
80 2 1 1 1 100 则程序输出: 10 (参见 p2.jpg) 资源约定: 峰值内存消耗(含虚拟机)&64M CPU 消耗&5000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用 package 语句。不要使用 jdk1.6 及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。 【标题】 :带分数 100 可以表示为带分数的形式:100=3+ 还可以表示为:100=82+ 注意特征:带分数中,数字 1~9 分别出现且只出现一次(不包含 0) 。 类似这样的带分数,100 有 11 种表示法。 题目要求: 从标准输入读入一个正整数 N(N&) 程序输出该数字用数码 1~9 不重复不遗漏地组成带分数表示的全部种数。 注意:不要求输出每个表示,只统计有多少表示法! 例如: 用户输入: 100 程序输出: 11 再例如: 用户输入: 105 程序输出: 6 资源约定: 峰值内存消耗(含虚拟机)&64M CPU 消耗&3000ms 请严格按要求输出,不要画蛇添足地打印类似: “请您输入...”的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用 package 语句。不要使用 jdk1.6 及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。 【标题】 :逆波兰表达式 正常的表达式称为中缀表达式, 运算符在中间, 主要是给人阅读的, 机器求解并不方便。 例如:3+5*(2+6)-1 而且,常常需要用括号来改变运算次序。 相反,如果使用逆波兰表达式(前缀表达式)表示,上面的算式则表示为: -+3*5+2 6 1 不再需要括号,机器可以用递归的方法很方便地求解。 为了简便,我们假设: 1.只有+-*三种运算符 2.每个运算数都是一个小于 10 的非负整数 下面的程序对一个逆波兰表示串进行求值。 其返回值为一个数组: 其中第一元素表示求值结果, 第二个元素表示它已解析的字符数。 static int[]evaluate(String x) { if(x.length()==0)return new int[]{0,0}; char c=x.charAt(0); if(c&='0'&&c&='9')return new int[]{c-'0',1}; int[]v1=evaluate(x.substring(1)); int[]v2=__________________________________________;//填空位置 int v=Integer.MAX_VALUE; if(c=='+')v=v1[0]+v2[0]; if(c=='*')v=v1[0]*v2[0]; if(c=='-')v=v1[0]-v2[0]; return new int[]{v,1+v1[1]+v2[1]}; } 请分析代码逻辑,并推测划线处的代码,通过网页提交。 注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字! ! 【标题】 :三部排序 一般的排序有许多经典算法,如快速排序、希尔排序等。 但实际应用时,经常会或多或少有一些特殊的要求。我们没必要套用那些经典算法,可 以根据实际情况建立更好的解法。 比如,对一个整型数组中的数字进行分类排序: 使得负数都靠左端,正数都靠右端,0 在中部。注意问题的特点是:负数区域和正数区 域内并不要求有序。可以利用这个特点通过 1 次线性扫描就结束战斗!! 以下的程序实现了该目标。 static void sort(int[]x) { int p=0; int left=0; int right=x.length-1; while(p&=right){ if(x[p]&0){ int t=x[left]; x[left]=x[p]; x[p]=t; left++; p++; } else if(x[p]&0){ int t=x[right]; x[right]=x[p]; x[p]=t; right--; } else{ _________________________;//【代码填空】位置 } } } 如果给定数组: 25,18,-2,0,16,-5,33,21,0,19,-16,25,-3,0 则排序后为: -3,-2,-16,-5,0,0,0,21,19,33,25,16,18,25 请分析代码逻辑,并推测划线处的代码,通过网页提交 注意:仅把缺少的代码作为答案,千万不要填写多余的代码、符号或说明文字! ! 【标题】:颠倒的价牌 小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。 其标价都是 4 位数字(即千元不等) 。 小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了(参见 ) 。 这种价牌有个特点,对一些数字,倒过来看也是合理的数字。如:1 2 5 6 8 9 0 都可以。 这样一来, 如果牌子挂倒了, 有可能完全变成了另一个价格, 比如: 1958 倒着挂就是: 8561, 差了几千元啊!! 当然,多数情况不能倒读,比如,1110 就不能倒过来,因为 0 不能作为开始数字。 有一天,悲剧终于发生了。某个店员不小心把店里的某两个价格牌给挂倒了。并且这两 个价格牌的电视机都卖出去了! 庆幸的是价格出入不大,其中一个价牌赔了 2 百多,另一个价牌却赚了 8 百多,综合起 来,反而多赚了 558 元。 请根据这些信息计算:赔钱的那个价牌正确的价格应该是多少? 答案是一个 4 位的整数,请通过浏览器直接提交该数字。 注意:不要提交解答过程,或其它辅助说明类的内容。 【代码填空】 (满分 2 分) 下列代码,把一个 2 位整数交换十位与个位的位置。请填写缺失的代码。 例如:当 x=95 时,返回 59。 int switch_num(int x) { int a = x / 10; int b = x % 10; return __________________; } 【代码填空】 (满分 3 分) 下列代码把一个二进制的串转换为整数。请填写缺少的语句; char* p = &0&; int n = 0; for(int i=0;i&strlen(p); i++) { n = __________________; } printf(&%d\n&, n); 【代码填空】 (满分 3 分) 假设 a,b,c 是 3 个互不相等的整数。下列代码取出它们中居中的数值,记录在 m 中。其中的 swap()函数可以交换两个变量的值。请完善代码。 if(a&b) swap(&a, &b); if(b&c) swap(&b, &c); ______________________; int m = 【代码填空】 (满分 5 分) 计算 3 个 A,2 个 B 可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》 的研究领域。 但有些情况下, 也可以利用计算机计算速度快的特点通过巧妙的推理来解决问 题。下列的程序计算了 m 个 A,n 个 B 可以组合成多少个不同排列的问题。请完善它。 int f(int m, int n) { if(m==0 || n==0) return 1; return _______________________; } 【代码填空】 (满分 6 分) 此段代码的意图是把一个缓冲区中的整数重新排列, 使得所有负数都在正数的左边。 请分析 其工作流程,补充缺失的代码。 void reorder(int *pData, int len) { if(pData == NULL || len == 0) int *pBegin = pD int *pEnd = ____________; while(pBegin & pEnd) { if(*pBegin&0) { pBegin ++; __________; } if(*pEnd&=0) { pEnd --; ___________; } int temp = *pB *pBegin = *pE *pEnd = } } int main(int argc, char **argv) { int a[] = {1,2,3,-5,-4,5,9,-8,-1}; reorder(a, 9); for(int i=0; i&9; i++) printf(&%d &, a[i]); printf(&\n&); return 0; } 【代码填空】 (满分 9 分) 给定一个字符串,其含有的字符各不相同。程序输出该字符串的所有排列(全排列)情形。 例如:给定字符串“xyz” ,则程序输出: xyz xzy yxz yzx zyx zxy 试完善程序中空缺的部分。 void f(char *str, int len, int n) { char *p = (char *)malloc(__________); if(n==len-1){ printf(&%s\n&,str); }else{ for(i=n;i&i++){ strcpy(p,str); tmp = *(str+n); *(str+n) = *(str+i); *(str+i) = _______________; strcpy(str,p); } } free(p); } int main(int argc, char **argv) { char str[] = &xyz&; f(str,3,0); printf(&\n&); return 0; } 代码设计(满分 5 分) 625 这个数字很特别,625 的平方等于 390625,刚好其末 3 位是 625 本身。除了 625,还有 其它的 3 位数有这个特征吗? 请编写程序,寻找所有这样的 3 位数:它的平方的末 3 位是这个数字本身。 输出结果中,从小到大,每个找到的数字占一行。比如那个 625 就输出为: 625 代码设计(满分 11 分) 某游戏规则中,甲乙双方每个回合的战斗总是有一方胜利,一方失败。游戏规定:失败的一 方要把自己的体力值的 1/4 加给胜利的一方。例如:如果双方体力值当前都是 4,则经过一 轮战斗后,双方的体力值会变为:5,3。 现在已知:双方开始时的体力值甲:1000,乙:2000。 假设战斗中,甲乙获胜的概率都是 50% 求解:双方经过 4 个回合的战斗,体力值之差小于 1000 的理论概率。 代码设计(满分 18 分) 整数的分划问题。 如,对于正整数 n=6,可以分划为: 6 5+1 4+2, 4+1+1 3+3, 3+2+1, 3+1+1+1 2+2+2, 2+2+1+1, 2+1+1+1+1 1+1+1+1+1+1+1 现在的问题是,对于给定的正整数 n,编写算法打印所有划分。 用户从键盘输入 n (范围 1~10) 程序输出该整数的所有划分。 代码设计(满分 20 分) 一个 N 位的十进制正整数,如果它的每个位上的数字的 N 次方的和等于这个数本身,则称 其为花朵数。 例如: 当 N=3 时, 就满足条件, 153 因为 1^3 + 5^3 + 3^3 = 153, 这样的数字也被称为水仙花数 (其 中, “^”表示乘方,5^3 表示 5 的 3 次方,也就是立方) 。 当 N=4 时,1634 满足条件,因为 1^4 + 6^4 + 3^4 + 4^4 = 1634。 当 N=5 时,92727 满足条件。 实际上,对 N 的每个取值,可能有多个数字满足条件。 程序的任务是:求 N=21 时,所有满足条件的花朵数。注意:这个整数有 21 位,它的各个 位数字的 21 次方之和正好等于这个数本身。 如果满足条件的数字不只有一个,请从小到大输出所有符合条件的数字,每个数字占一行。 因为这个数字很大,请注意解法时间上的可行性。要求程序在 3 分钟内运行完毕。2011 模拟 java 本科 注意: 本套模拟题主要模拟命题形式与考核范围。 真实竞赛题的数量、 难度可能与此套模拟题有差 异。 说明: 本试卷包含两种题型:【代码填空】 “ ”与“程序设计” 。 填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正 确、完整。所填写的代码不多于一条语句(即不能出现分号) 。 编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。 注意: 在评卷时使用的 输入数据与试卷中给出的实例数据可能是不同的。 选手的程序必须是通用的, 不能只对试卷 中给定的数据有效。 【代码填空】 (满分 2 分) 在 A B C D E F 六人中随机抽取 3 人中奖,要求中奖人不能重复。请完善以下代码: public class MyTest { public static void main(String[] args) { Vector a = new Vector(); for(char i='A'; i&='F'; i++) a.add(&& + i); for(int k=0; k&3; k++) { int d = ____________________________; System.out.println(a.remove(d)); } } } 【代码填空】 (满分 3 分) 不同进制的数值间的转换是软件开发中很可能会遇到的常规问题。 下面的代码演示了如何把 键盘输入的 3 进制数字转换为十进制。试完善之。 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); int n = 0; for(int i=0; i&s.length(); i++) { char c = s.charAt(i); if(c&'0' || c & '2') throw new RuntimeException(&Format error&); n = ______________________; } System.out.println(n); 【代码填空】 (满分 4 分) 有如下程序,完成的功能为:找出数组中的最大元素。请填写程序的中空白,使程序运行正 确。 public class test { public static void main(String[] args) { int array[]={0,34,67,90,21,-9,98,1000,-78}; System.out.println(new test().findMax (array, 0)); } public int findMax(int array[],int index) { if(array==null || array.length==0) { return 0; } int max=array[0]; if(index&array.length-1) { max=____________________ } if(max&array[index]) max= array[index]; } } 【代码填空】 (满分 5 分) 电视台开宝箱节目:打进电话的人可以开启一个宝箱。箱子中有一件礼品。礼品是 iphone 的机率为 1/12;是 mp3 的机率为 1/5;是洗衣粉的机率为 1/2;剩余是 KFC 优惠券。 每次打进电话,宝箱会重置。 以下程序模拟了该抽奖过程。请填写缺失的部分。 public static void main(String[] args) { int i = (int) Math.random() * _____________; if (i & 5) { System.out.println(&恭喜中了:iphone 手机&); }else if (i & 17) { System.out.println(&恭喜中了:mp3&); } else if (i & 47) { System.out.println(&恭喜中了:洗衣粉&); } else { System.out.println(&恭喜中了:KFC 优惠券&); } } 【代码填空】 (满分 6 分) 下列代码求出一个二进制串中连续的 1 或连续的 0 出现的最大次数。请填缺失代码。 例如:s = D011‖ 则返回:4 又例如:s=‖‖ 则返回:5 public static int getMaxContinuity(String s) { int max_1 = 0; int max_0 = 0; int n_1 = 0; // 当前 1 连续的次数 int n_0 = 0; // 当前 0 连续的次数 for(int i=0; i&s.length(); i++) { if(s.charAt(i)=='0') { n_0++; ________; } else { n_1++; _________; } if(n_1 & max_1) max_1 = n_1; if(n_0 & max_0) max_0 = n_0; } return max_1&max_0? max_1 : max_0); } 【代码填空】 (满分 9 分) 下列代码把 16 进制表示的串转换为 3 进制表示的串。试完善之。 例如:x=“5” 则返回: “12” 又例如:x=‖F‖ 则返回: “120” private static int getRealValue(char x) { if(x&='0' && x&='9') return x-'0'; if(x&='a' && x&='f') return x-'a'+10; if(x&='A' && x&='F') return x-'A'+10; return 0; } public static String jin_zhi_16_3(String x) { int n = 0; // 累加真值 for(int i=0; i&x.length(); i++) { n = _________ + getRealValue(x.charAt(i)); // 填空 }String t = &&; for(;;) { if(n==0) t = (n % 3) + _____________; // 填空 } } 代码设计(满分 5 分) 625 这个数字很特别,625 的平方等于 390625,刚好其末 3 位是 625 本身。除了 625,还有 其它的 3 位数有这个特征吗? 请编写程序,寻找所有这样的 3 位数:它的平方的末 3 位是这个数字本身。 输出结果中,从小到大,每个找到的数字占一行。比如那个 625 就输出为: 625 代码设计(满分 11 分) 考虑方程式:a^3 + b^3 = c^3 + d^3 其中: “^”表示乘方。a、b、c、d 是互不相同的小于 30 的正整数。 这个方程有很多解。比如: a = 1,b=12,c=9,d=10 就是一个解。因为:1 的立方加 12 的立方等于 1729,而 9 的立方 加 10 的立方也等于 1729。 当然,a=12,b=1,c=9,d=10 显然也是解。 如果不计 abcd 交换次序的情况,这算同一个解。 你的任务是: 找到所有小于 30 的不同的正整数解。 a b c d 按从小到大排列,用逗号分隔, 把 每个解占用 1 行。比如,刚才的解输出为: 1,9,10,12 不同解间的顺序可以不考虑。 代码设计(满分 18 分) 整数的分划问题。 如,对于正整数 n=6,可以分划为: 6 5+1 4+2, 4+1+1 3+3, 3+2+1, 3+1+1+1 2+2+2, 2+2+1+1, 2+1+1+1+1 1+1+1+1+1+1+1 现在的问题是,对于给定的正整数 n,编写算法打印所有划分。 用户从键盘输入 n (范围 1~10) 程序输出该整数的所有划分。 代码设计(满分 20 分) 一个 N 位的十进制正整数,如果它的每个位上的数字的 N 次方的和等于这个数本身,则称 其为花朵数。 例如: 当 N=3 时, 就满足条件, 153 因为 1^3 + 5^3 + 3^3 = 153, 这样的数字也被称为水仙花数 (其 中, “^”表示乘方,5^3 表示 5 的 3 次方,也就是立方) 。 当 N=4 时,1634 满足条件,因为 1^4 + 6^4 + 3^4 + 4^4 = 1634。 当 N=5 时,92727 满足条件。 实际上,对 N 的每个取值,可能有多个数字满足条件。 程序的任务是:求 N=21 时,所有满足条件的花朵数。注意:这个整数有 21 位,它的各个 位数字的 21 次方之和正好等于这个数本身。 如果满足条件的数字不只有一个,请从小到大输出所有符合条件的数字,每个数字占一行。 因为这个数字很大,请注意解法时间上的可行性。要求程序在 3 分钟内运行完毕。2011 模拟 c 语言 高职 注意: 本套模拟题主要模拟命题形式与考核范围。 真实竞赛题的数量、 难度可能与此套模拟题有差 异。 说明: 本试卷包含两种题型:【代码填空】 “ ”与“程序设计” 。 填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正 确、完整。所填写的代码不多于一条语句(即不能出现分号) 。 编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。 注意: 在评卷时使用的 输入数据与试卷中给出的实例数据可能是不同的。 选手的程序必须是通用的, 不能只对试卷 中给定的数据有效。 【代码填空】 (满 2 分) 形如: “abccba”“abcba”的串称为回文串,下列代码判断一个串是否为回文串。请补充空 , 白的部分。 char buf[] = &abcde11edcba&; int x = 1; for(int i=0; i&strlen(buf)/2; i++) if(___________________) { x = 0; } printf(&%s\n&, x ? &是&:&否&); 【代码填空】 (满分 3 分) 下列代码把一个二进制的串转换为整数。请填写缺少的语句; char* p = &0&; int n = 0; for(int i=0;i&strlen(p); i++) { n = __________________; } printf(&%d\n&, n); 【代码填空】 (满分 3 分) 假设 a,b,c 是 3 个互不相等的整数。下列代码取出它们中居中的数值,记录在 m 中。其中的 swap()函数可以交换两个变量的值。请完善代码。 if(a&b) swap(&a, &b); if(b&c) swap(&b, &c); ______________________; int m = 【代码填空】 (满分 6 分) 下面函数的目的是求出某个日期是该年度的第几天。试完善之。 如果传入:year=1980,month=1, day=1 则返回 1 如果传入:year=1980,month=2, day=1 则返回 32 int getDayOfYear(int year, int month, int day) { int days _____________________; int flag =(year%4==0 && year%100!=0) || year%400 == 0 ? 1 : 0; int sum = for(int i=0;i&i++) { sum += days[flag][i]; } } 【代码填空】 (满分 7 分) 计算 3 个 A,2 个 B 可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》 的研究领域。 但有些情况下, 也可以利用计算机计算速度快的特点通过巧妙的推理来解决问 题。下列的程序计算了 m 个 A,n 个 B 可以组合成多少个不同排列的问题。请完善它。 int f(int m, int n) { if(m==0 || n==0) return 1; return _______________________; } 【代码填空】 (满分 10 分) (a+b)的 n 次幂的展开式中各项的系数很有规律,对于 n=2,3,4 时分别是:1 2 1, 1 3 3 1, 1 4 6 4 1。这些系数构成了著名的杨辉三角形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 下列的程序给出了计算第 m 层的第 n 个系数的计算方法,试完善之(m,n 都从 0 算起) 。 int f(int m, int n) { if(m==0) return 1; if(n==0 || n==m) return 1; return __________________________; } 程序设计(满分 15 分) 从键盘输入一个整数(1~20) 则以该数字为矩阵的大小,把 1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字 2,则程序输出: 12 43 输入数字 3,则程序输出: 123 894 765 输入数字 4, 则程序输出: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 程序设计(满分 9 分) 从键盘输入一个日期,格式为 yyyy-M-d 要求计算该日期与 1949 年 10 月 1 日距离多少天 例如: 用户输入了: 程序输出:1 用户输入了: 程序输出:31程序设计(满分 12 分) 当你输入信用卡号码的时候, 有没有担心输错了而造成损失呢?其实可以不必这么担心, 因 为并不是一个随便的信用卡号码都是合法的,它必须通过 Luhn 算法来验证通过。 该校验的过程: 1、从卡号最后一位数字开始,逆向将奇数位(1、3、5 等等)相加。 2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以 2(如果乘积为两位数,则将其 减去 9) ,再求和。 3、将奇数位总和加上偶数位总和,结果应该可以被 10 整除。 例如,卡号是:8881 则奇数、偶数位(用红色标出)分布:8881 奇数位和=35 偶数位乘以 2(有些要减去 9)的结果:1 6 2 6 1 5 7 7,求和=35。 最后 35+35=70 可以被 10 整除,认定校验通过。 请编写一个程序,从键盘输入卡号,然后判断是否校验通过。通过显示: “成功” ,否则显示 “失败” 。 比如,用户输入:780 程序输出:成功 程序设计(满分 20 分) 任意一个 5 位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数: 65432,一个最小的数 23456。求这两个数字的差,得:41976,把这个数字再次重复上述过 程(如果不足 5 位,则前边补 0) 。如此往复,数字会落入某个循环圈(称为数字黑洞) 。 比如,刚才的数字会落入:[8, 6] 这个循环圈。 请编写程序,找到 5 位数所有可能的循环圈,并输出,每个循环圈占 1 行。其中 5 位数全都 相同则循环圈为 [0],这个可以不考虑。循环圈的输出格式仿照: [8, 6] 其中数字的先后顺序可以不考虑。 2011 模拟 java 高职 注意: 本套模拟题主要模拟命题形式与考核范围。 真实竞赛题的数量、 难度可能与此套模拟题有差 异。 说明: 本试卷包含两种题型:【代码填空】 “ ”与“程序设计” 。 填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正 确、完整。所填写的代码不多于一条语句(即不能出现分号) 。 编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。 注意: 在评卷时使用的 输入数据与试卷中给出的实例数据可能是不同的。 选手的程序必须是通用的, 不能只对试卷 中给定的数据有效。 【代码填空】 (满分 3 分) 以下程序打印出 0~9 的数字,请补充缺少的代码。 public class MyTest { public static void f(int begin, int end) { __________________; System.out.println(begin); f(begin+1, end); } public static void main(String[] args) { f(0,9); } } 【代码填空】 (满分 4 分) 如果要把两个整型变量 a、b 的值交换,一般要采用一个中间变量做过渡,但也可以在不借 助任何其它变量的情况下完成。试填写缺失的代码。 a = a ^ b = _________; a = _________; 【代码填空】 (满分 3 分) 许多人都曾经玩过“拍七”游戏。规则是:大家依次从 1 开始顺序数数,数到含有 7 或 7 的倍数的要拍手或其它规定的方式表示越过(比如:7,14,17 等都不能数出) ,下一人继续数 下面的数字。违反规则者受罚。 下面的程序模拟这个过程,拍 7 的情况输出“*” ,请完善之。 for(int i=1; i&100; i++) { if(i % 7 == 0) printf(&*\n&); else if(___________________) printf(&*\n&); else printf(&%d\n&, i); }【代码填空】 (满分 5 分) 下面的静态方法的目的是求出某个日期是该年度的第几天。试完善之。 如果传入:year=1980,month=1, day=1 则返回 1 如果传入:year=1980,month=2, day=1 则返回 32 public static int getDayOfYear(int year, int month, int day) { int [][]days=_____________________; int flag =(year%4==0 && year%100!=0) || year%400 == 0 ? 1 : 0; int sum = for(int i=0;i&i++) { sum += days[flag][i]; } } 【代码填空】 (满分 2 分) 下列方法的目的是,找出 1~n 之间所有的平方数。试补全缺失的代码。 当 n=10 时,输出结果是: 149 当 n=100 时,输出结果是: 1 4 9 16 25 36 49 64 81 public static void showSqure(int n) { for(int i=0; i&n; i++) { for(int j=1; j&=i; j++) { if(i==_____________) System.out.print(i + & &); } } System.out.println(); } 【代码填空】 (满分 9 分) (a+b)的 n 次幂的展开式中各项的系数很有规律,对于 n=2,3,4 时分别是:1 2 1, 1 3 3 1, 1 4 6 4 1。这些系数构成了著名的杨辉三角形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 下列的程序给出了计算第 m 层的第 n 个系数的计算方法,试完善之(m,n 都从 0 算起) 。 public static int f(int m, int n) { if(m==0) return 1; if(n==0 || n==m) return 1; return __________________________; } 【代码填空】 (满分 4 分) 下面的代码将数组中的元素的位置颠倒过来: 比如:原来的元素是 [1,2,3] 则颠倒后变为:[3,2,1] public static void reverse(int[] arrs) { for (int i = 0, j = arrs.length - 1; i &_________ ; i++, j--) { int temp = arrs[i]; arrs[i] = arrs[j]; arrs[j] = } } 程序设计(满分 15 分) 从键盘输入一个整数(1~20) 则以该数字为矩阵的大小,把 1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字 2,则程序输出: 12 43 输入数字 3,则程序输出: 123 894 765 输入数字 4, 则程序输出: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 程序设计(满分 9 分) 从键盘输入一个日期,格式为 yyyy-M-d 要求计算该日期与 1949 年 10 月 1 日距离多少天 例如: 用户输入了: 程序输出:1 用户输入了: 程序输出:31 程序设计(满分 20 分) 任意一个 5 位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数: 65432,一个最小的数 23456。求这两个数字的差,得:41976,把这个数字再次重复上述过 程(如果不足 5 位,则前边补 0) 。如此往复,数字会落入某个循环圈(称为数字黑洞) 。 比如,刚才的数字会落入:[8, 6] 这个循环圈。 请编写程序,找到 5 位数所有可能的循环圈,并输出,每个循环圈占 1 行。其中 5 位数全都 相同则循环圈为 [0],这个可以不考虑。循环圈的输出格式仿照: [8, 6] 其中数字的先后顺序可以不考虑。 程序设计(满分 9 分) 当你输入信用卡号码的时候, 有没有担心输错了而造成损失呢?其实可以不必这么担心, 因 为并不是一个随便的信用卡号码都是合法的,它必须通过 Luhn 算法来验证通过。 该校验的过程: 1、从卡号最后一位数字开始,逆向将奇数位(1、3、5 等等)相加。 2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以 2(如果乘积为两位数,则将其 减去 9) ,再求和。 3、将奇数位总和加上偶数位总和,结果应该可以被 10 整除。 例如,卡号是:8881 则奇数、偶数位(用红色标出)分布:8881 奇数位和=35 偶数位乘以 2(有些要减去 9)的结果:1 6 2 6 1 5 7 7,求和=35。 最后 35+35=70 可以被 10 整除,认定校验通过。 请编写一个程序,从键盘输入卡号,然后判断是否校验通过。通过显示: “成功” ,否则显示 “失败” 。 比如,用户输入:780 程序输出:成功【代码填空】 (满分 3 分) 计算蔬菜总价 为了丰富群众菜篮子, 平抑菜价, 相关部分组织了蔬菜的调运。 今某箱中有多个品种的蔬菜。 蔬菜的单价(元/公斤)存放在 price 数组中,蔬菜的重量(公斤)存放在 weight 数组中。下 面的代码计算该箱蔬菜的总价,试完善之。 把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt” 中即可。 public static double getTotal(double[] price, double[] weight) { double x = 0; for(int i=0; i&price. i++) { ____________________; } } 【代码填空】 (满分 3 分) 计算行程 低碳生活,有氧运动。骑自行车出行是个好主意。小明为自己的自行车装了个计数器,可以 计算出轮子转动的圈数。在一次骑车旅行中,出发时计算器的示数为 begin,到达目的地时 的示数为 end。下列代码计算了小明一共骑行了多远(单位:公里) 。其中 d 表示小明自行 车轮子的直径(单位:米) 。 把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt” 中即可。 public static double getDistance(int begin, int end, double d) { return (end-begin) * Math.PI * d * d _________; } 【代码填空】 (满分 4 分) 反转的串 解决同一个问题往往有许多方法。小刚很喜欢别出心裁。一天他在纸上草草写了一段程序, 实现了把串 s 中的内容反转后放入 s2 的功能。也就是说,s2 最后的内容变成了“7654321” 。 可惜草纸出现了一处污损,请补全缺失的部分。把填空的答案(仅填空处的答案,不包括题 面)存入考生文件夹下对应题号的“解答.txt”中即可。 String s = &1234567&; String s2 = &&; for(int i=0; i&s.length(); i++) { s2 = s.charAt(i) + __________; } System.out.println(s2); 【代码填空】(满分 6 分) 最近距离 已知平面上的若干点的位置,存入一个 List 中。现在需要计算所有这些点中,距离最近的 两个点间的最小距离。 请补全缺失的代码。把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应 题号的“解答.txt”中即可。 class MyPoint { // 横坐标 // 纵坐标 public MyPoint(double x, double y) { this.x = this.y = } public static double distance(MyPoint p1, MyPoint p2) { double dx = p1.x - p2.x; double dy = p1.y - p2.y; return Math.sqrt(dx*dx + dy*dy); } /* lst 中含有若干个点的坐标 返回其中距离最小的点的距离 */ public static double getMinDistance(List&MyPoint& lst) { double r = ________________; int n = lst.size(); for(int i=0; i&n; i++) { for(int j=i+1; j&n; j++) { MyPoint p1 = lst.get(i); MyPoint p2 = lst.get(j); double d = MyPoint.distance(p1,p2); if( d & r ) ______________; } } } } 【代码填空】 (满分 7 分) 股票风险 股票交易上的投机行为往往十分危险。 假设某股票行为十分怪异, 每天不是涨停 (上涨 10%) 就是跌停(下跌 10%) 。假设上涨和下跌的概率均等(都是 50%) 。再假设交易过程没有任 何手续费。某人在开始的时候持有总价值为 x 的该股股票,那么 100 个交易日后,他盈利的 可能性是多少呢? 以下程序通过计算机模拟了该过程,一般的输出结果在 0.3 左右。请填写缺失的代码。把填 空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即 可。 int N = 10000; int n = 0; for(int i=0; i&N; i++) { double value = 1000.0; for(int k=0; k&100; k++) { if(Math.random() & _______) value = value * 1.1; else value = value * 0.9; } if(____________) n++; } System.out.println(1.0*n/N); 【代码填空】 (满分 9 分) 猜数字 很多人都玩过这个游戏:甲在心中想好一个数字,乙来猜。每猜一个数字,甲必须告诉他是 猜大了,猜小了,还是刚好猜中了。下列的代码模拟了这个过程。其中用户充当甲的角色, 计算机充当乙的角色。为了能更快地猜中,计算机使用了二分法。 阅读分析代码,填写缺失的部分。把填空的答案(仅填空处的答案,不包括题面)存入考生 文件夹下对应题号的“解答.txt”中即可。 System.out.println(&请在心中想好一个数字(1~100) ,我来猜&); System.out.println(&我每猜一个数字,你要告诉我是“猜大了”“猜小了” , ,还是“猜中” &); Scanner scan = new Scanner(System.in); int v1 = 1; int v2 = 100; for(;;) { int m = (v1 + v2)/2; System.out.println(&我猜是:& + m); System.out.println(&1.猜得太大了&); System.out.println(&2.猜得太小了&); System.out.println(&3.猜中!&); System.out.print(&请选择:&); int user = Integer.parseInt(scan.nextLine()); if(user==3) if(user==1) _____________; if(user==2) _____________; } 【代码填空】 (满分 10 分) 基因牛 张教授采用基因干预技术成功培养出一头母牛, 三年后, 这头母牛每年会生出 1 头母牛, 生 出来的母牛三年后,又可以每年生出一头母牛。如此循环下去,请问张教授 n 年后有多少头 母牛? 以下程序模拟了这个过程,请填写缺失的代码。把填空的答案(仅填空处的答案,不包括题 面)存入考生文件夹下对应题号的“解答.txt”中即可。 public static class Cow { public Cow afterYear() { age++; return age & 2 ? new Cow() : ___________; } public static void showTotalCowNum(int n) { List&Cow& list = new ArrayList&Cow&(); list.add(new Cow()); for (int i = 0; i & i++) { int cowCount = list.size(); for (int j = 0; j & cowC j++) { Cow cow = list.get(j).afterYear(); if (cow != null) { ________________; list.add(cow); } } } System.out.println(n + &年后,共有:& + list.size()); } } 程序设计(满分 14 分) 在实际的开发工作中, 对字符串的处理是最常见的编程任务。 本题目即是要求程序对用户输 入的串进行处理。具体规则如下: 把每个单词的首字母变为大写。 把数字与字母之间用下划线字符(_)分开,使得更清晰 把单词中间有多个空格的调整为 1 个空格。 例如: 用户输入: you and me what cpp2005program 则程序输出: You And Me What Cpp_2005_program 用户输入: this is a 99cat 则程序输出: This Is A 99_cat 我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词 间由 1 个或多个空格分隔。 假设用户输入的串长度不超过 200 个字符。 要求考生把所有类写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt” 中即可。相关的工程文件不要拷入。请不要使用 package 语句。 另外,源程序中只能出现 JDK1.5 中允许的语法或调用。不能使用 1.6 或更高版本。 程序设计(满分 17 分) 方阵的主对角线之上称为“上三角” 。 请你设计一个用于填充 n 阶方阵的上三角区域的程序。填充的规则是:使用 1,2,3….的自 然数列,从左上角开始,按照顺时针方向螺旋填充。 例如:当 n=3 时,输出: 123 64 5 当 n=4 时,输出: 1 234 9 10 5 8 6 7 当 n=5 时,输出: 1 2 3 4 5 12 13 14 6 11 15 7 10 8 9 程序运行时,要求用户输入整数 n(3~20) 程序输出:方阵的上三角部分。 要求格式:每个数据宽度为 4,右对齐。 要求考生把所有类写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt” 中即可。相关的工程文件不要拷入。请不要使用 package 语句。 另外,源程序中只能出现 JDK1.5 中允许的语法或调用。不能使用 1.6 或更高版本。 程序设计(满分 27 分) A、B、C、D、E、F、G、H、I、J 共 10 名学生有可能参加本次计算机竞赛,也可能不参 加。因为某种原因,他们是否参赛受到下列条件的约束: 1. 如果 A 参加,B 也参加; 2. 如果 C 不参加,D 也不参加; 3. A 和 C 中只能有一个人参加; 4. B 和 D 中有且仅有一个人参加; 5. D、E、F、G、H 中至少有 2 人参加; 6. C 和 G 或者都参加,或者都不参加; 7. C、E、G、I 中至多只能 2 人参加 8. 如果 E 参加,那么 F 和 G 也都参加。 9. 如果 F 参加,G、H 就不能参加 10. 如果 I、J 都不参加,H 必须参加 请编程根据这些条件判断这 10 名同学中参赛者名单。如果有多种可能,则输出所有的可能 情况。每种情况占一行。参赛同学按字母升序排列,用空格分隔。 比如: CDGJ 就是一种可能的情况。 要求考生把所有类写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt” 中即可。相关的工程文件不要拷入。请不要使用 package 语句。 另外,源程序中只能出现 JDK1.5 中允许的语法或调用。不能使用 1.6 或更高版本。 参考答案: 前面 7 个题目简单这里 略 8. import java.util.Spublic class Test8 { public String zhuanhua(String s) { boolean start= char[] b=s.toCharArray(); String s1=&&; String s2=&&; String s3=&&; for(int i=0;i&b.i++){if(i&0&&b[i-1]==' '&&b[i]==' '){ start= } if(i&0&&b[i-1]!=' '&&b[i]==' '){ start= } if((b[i]==' '&&start)||b[i]!=' ') { s1+=b[i]; } } //System.out.println(s1); char[] c=s1.toCharArray(); if(c[0]&='a'&&c[0]&='z') { c[0]-='a'-'A'; } s2+=c[0]; for(int i=1;i&c.i++){ if(c[i-1]==' '&&c[i]&='a'&&c[i]&='z'){ c[i]-='a'-'A'; s2+=c[i]; } s2+=c[i]; } //System.out.println(s2); char[] d=s2.toCharArray(); s3+=d[0]; for(int i=1;i&d.i++){ boolean m=((d[i-1]&='a'&&d[i-1]&='z')||(d[i-1]&='A'&&d[i-1]&='Z'))&&(d[i]&='0'&&d[i]&='9'); boolean n=((d[i]&='a'&&d[i]&='z')||(d[i]&='A'&&d[i]&='Z'))&&(d[i-1]&='0'&&d[i-1]&='9'); if(m||n){ s3+=&_&; } s3+=d[i]; } return s3; } public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); String s=sc.nextLine(); System.out.println(new Test8().zhuanhua(s)); } } 9. import java.util.Spublic class Testtwo {public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); System.out.println(&put n!&); int n=sc.nextInt(); int k=1; int a[][]=new int[n][n]; for(int i=0;i&n;i++) { for(int j=j&n-1-i*2;j++) { a[i][j]=k; k++; } for(int j=i;j&n-i*2-1;j++) { a[j][n-1-i-j]=k; k++; } for(int j=i;j&n-2*i-1;j++) { a[n-1-i-j][i]=k; k++; } } if((n-1)%3==0) a[(n-1)/3][(n-1)/3]=k; for(int i=0;i&n;i++) { for(int j=0;j&n;j++) { if(a[i][j]==0) if(a[i][j]&10) System.out.print(a[i][j]+& &); else if(a[i][j]&100) System.out.print(a[i][j]+& &); else System.out.print(a[i][j]+& &); } System.out.println(&&); } } } 10. public class Testpailie { /** * @param args */ public int zhuanhua1(String s) { int a=0; a=Integer.parseInt(s, 2); } public String zhuanhua2(int a) { String s=&&; for(;a!=0;a=a/2) s+=a%2; //System.out.println(s); char[] b=s.toCharArray(); String s1=&&; for(int i=s.length()-1;i&=0;i--){ k=(char) (74-i); if(b[i]=='1') s1+=k+& &; } return s1; } public void count() { Testpailie tp=new Testpailie(); for(int count = 0;count&1024;count++){ //1. 如果 A 参加,B 也参加; boolean a1 = count/512%2==1?(count/256%2==1?true:false): //2. 如果 C 不参加,D 也不参加; boolean a2= count/128%2==0?(count/64%4==0?true:false): //3. A 和 C 中只能有一个人参加; boolean a3 = (count/512%2+count/128%2)&=1?true: //4. B 和 D 中有且仅有一个人参加; boolean a4 = (count/256%2+count/64%2)&=1?true: //5. D、E、F、G、H 中至少有 2 人参加; boolean a5 (count/4%2+count/8%2+count/16%2+count/32%2+count/64%2)&=2?true: //6. C 和 G 或者都参加,或者都不参加; boolean a6== count/128%2==1?(count/8%2==1?true:false):(count/8%2==0?true:false); //7. C、E、G、I 中至多只能 2 人参加 boolean a7 = (count/2%2+count/8%2+count/32%2+count/128%2)&=2?true: //8. 如果 E 参加,那么 F 和 G 也都参加。 boolean a8 = count/32%2==1?(count/8%4==3?true:false): //9. 如果 F 参加,G、H 就不能参加 boolean a9 = count/16%2==1?(count/4%4==0?true:false): //a8 和 a9 可 以忽略 //10. 如果 I、J 都不参加,H 必须参加 boolean a10 = count%4==0?(count/4%2==1?true:false):if(a1&&a2&&a3&&a4&&a5&&a6&&a7&&a8&&a9&&a10) { //System.out.println(count); System.out.println(new Testpailie().zhuanhua2(count)); } } } public static void main(String[] args) { new Testpailie().count(); } } 第一题,以下函数的功能是将任意整数进行因式分解, 请完成该程序的空缺使函数能够正常运算 void f(int n) { for(int i=2; i&n/2; i++) { //―――C(1)―――― { printf(D%d D, i); n = n / } } if(n&1) printf(D%d\n‖, n); } 第二题,以下函数的功能是将给定字符串进行倒序输出, 请完成该函数空缺部分。 char* p = Dabcdef‖; char* q = (char*)malloc(strlen(p)+1); for(int i=0, int len=strlen(p); i&len-1; i++) q__1__ = p[i+1]; q[len-1] = p[0]; ―C(2)―-; printf(D%s\n‖, q); 第三题, (这题的题目到底是要干啥,本人到现在沿未明了,数学学统计好,但可以确定原 题给出的代码就是如此) int f(int m, int n) { int a = 1; int m1 = //―C(3)―a *= m1C; int b = 1; while(n&1) b *= nC; return a / } 第四题,任意给出一个四位数, 把它重新组成一个四位的最大数和一个最小数, 算出两者间的差。 例如:3721 这个数,可以重组成:7321 和 1237,相数之差为
请完善下面这个函数,以实现此功能 int f(int n) { int N[4]; for(int i=0; i&4; i++) { N[3-i] = n % 10; ―-(4)―} for(i=0; i&3; i++) for(int j=0; j&3-i; j++) if(N[j]&N[j+1]) { int t = N[j+1]; N[j+1] = N[j]; N[j] = } int n_min=0; for(i=0; i&4; i++) n_min = n_min * 10 + N[i] ; int n_max = 0; for(i=3; i&=0; iC) n_max = n_max * 10 + N[i]; return n_max-n_ } 第五题,假设有 m+n 个人,其中, m 个人手持面额为 5 角的硬币, n 个人手持面额为 1 元的硬币, 他们都要乘车买票, 现假设售票员手中无零钞, 票价为 5 角, 下面这个函数就可以算出这 m+n 个人所有可能的买票情况, 请完善此函数。 //m: 持有 5 角币的人数 //n: 持有 1 元币的人数 //返回:所有顺利完成购票过程的购票次序的种类数 int f(int m, int n) { if(m & n) return 0; if(n==0) return 1; return ___________(5)____________; } 最后一题:编程题: 注: 最后一题的编程题对参赛者的要求相当高, 以下代码在你提交自己的程序设计思路前是 不可见的。 求二十四点: // Calcu24.cpp : Defines the entry point for the console application. // #include Dstdafx.h‖ #include Dconio.h‖ #include Dstdlib.h‖ #include Dtime.h‖ #include Dmath.h‖ #include Dstring.h‖ /* 从一副扑克牌中,任取 4 张。 2-10 按其点数计算(为了表示方便 10 用 T 表示),J,Q,K,A 统一按 1 计算 要求通过加减乘除四则运算得到数字 24。 本程序可以随机抽取纸牌,并用试探法求解。 */ void GivePuzzle(char* buf) { char card[] = {?A‘,‘2′,‘3′,‘4′,‘5′,‘6′,‘7′,‘8′,‘9′,‘T',‘J',‘Q',‘K'}; for(int i=0; i&4; i++){ buf = card[rand() % 13]; } } void shuffle(char * buf) { for(int i=0; i&5; i++){ int k = rand() % 4; char t = buf[k]; buf[k] = buf[0]; buf[0] = } } int GetCardValue(int c) { if(c==‘T') return 10; if(c&=‘0′ && c&=‘9′) return c C ‘0′; return 1; } char GetOper(int n) { switch(n) { case 0: return ?+‘; case 1: return ?-‘; case 2: return ?*‘; case 3: return ?/‘; } return ? ?; } double MyCalcu(double op1, double op2, int oper) { switch(oper) { case 0: return op1 + op2; case 1: return op1 C op2; case 2: return op1 * op2; case 3: if(fabs(op2)&0.0001) return op1 / op2; else return 100000; } return 0; } void MakeAnswer(char* answer, int type, char* question, int* oper) { char p[4][3]; for(int i=0; i&4; i++) { if( question == ?T‘ ) strcpy(p, D10″); else sprintf(p, D%c‖, question); } switch(type) { case 0: sprintf(answer, D%s %c (%s %c (%s %c %s))‖, p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]); case 1: sprintf(answer, D%s %c ((%s %c %s) %c %s)‖, p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]); case 2: sprintf(answer, D(%s %c %s) %c (%s %c %s)‖, p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]); case 3: sprintf(answer, D((%s %c %s) %c %s) %c %s‖, p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]); case 4: sprintf(answer, D(%s %c (%s %c %s)) %c %s‖, p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]); } } bool TestResolve(char* question, int* oper, char* answer) { // 等待考生完成 } // } /* 采用随机试探法:就是通过随机数字产生 加减乘除的 组合,通过大量的测试来命中的解 法 提示: 1. 需要考虑用括号控制计算次序的问题 比如:( 10 C 4 ) * ( 3 + A ), 实际上计算次序的数 目是有限的: A*(B*(c*D)) A*((B*C)*D) (A*B)*(C*D) ((A*B)*C)*D (A*(B*C))*D 2. 需要考虑计算结果为分数的情况:( 3 + (3 / 7) ) * 7 3. 题目中牌的位

我要回帖

更多关于 gt750m能玩绝地求生吗 的文章

 

随机推荐