模拟测试汇总试题.docx
- 文档编号:4672802
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:12
- 大小:36.15KB
模拟测试汇总试题.docx
《模拟测试汇总试题.docx》由会员分享,可在线阅读,更多相关《模拟测试汇总试题.docx(12页珍藏版)》请在冰豆网上搜索。
模拟测试汇总试题
1_1、世纪末的星期(5分)
曾有邪教称1999年12月31日是世界末日。
当然该谣言已经不攻自破。
还有人称今后的某个世纪末的12月31日,如果是星期一则会....
有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!
!
于是,“谣言制造商”又修改为星期日......
1999年的12月31日是星期五,请问:
未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
请给出表示该年份的4位整数。
1_2、2014幸运字母(5分)
把abcd...zABCD…L共38个字母组成的序列重复拼接53次,得到长度为2014的串。
接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母。
得到的新串再进行删除奇数位置字母的动作。
如此下去,最后只剩下一个字母,请写出该字母。
注:
答案是一个小写字母。
2_1、切面条(6分)
一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。
那么,连续对折9次,中间切一刀,会得到多少面条呢?
答案是个整数。
2_2、巧排数字(6分)
将1、2、…、20这20个数排成一排,使得相邻的两个数之和为一个素数,且首尾两数字之和也为一个素数。
请求出所有的排法,答案是个整数。
3_1、请你帮助小明算一算40!
(符号“!
”表示阶乘)(8分)
答案是个整数。
3_2、凑一百(8分)
在123456789九个数字中插入“+”或“-”符号使得结果为100,编程实现所有的组合。
注:
数字的顺序不能改变。
如:
123-45-67+89=100
12-3-4+5-6+7+89=100
答案是个整数。
4_1、神秘的三位数(C++,4分)
有这样一个3位数,组成它的3个数字阶乘之和正好等于它本身。
即:
abc=a!
+b!
+c!
下面的程序用于搜索这样的3位数。
请补全缺失的代码。
intJC[]={1,1,2,6,24,120,720,5040,40320,362880};
inti;
for(i=100;i<1000;i++)
{
intsum=0;
intx=i;
while( )//填空
{
sum+=JC[x%10];
x/=10;
}
if(i==sum)
printf("%d\n",i);
}
4_2、大衍数列(Java,4分)
中国古代文献中,曾记载过“大衍数列”,主要用于解释中国传统文化中的太极衍生原理。
它的前几项是:
0、2、4、8、12、18、24、32、40、50...
其规律是:
对偶数项,是序号平方再除2,奇数项,是序号平方减1再除2。
以下的代码打印出了大衍数列的前100项。
for(inti=1;i<100;i++)
{
if()//填空
System.out.println(i*i/2);
else
System.out.println((i*i-1)/2);
}
4_3、圆周率的计算(Java,4分)
数学发展历史上,圆周率的计算曾有许多有趣甚至是传奇的故事。
其中许多方法都涉及无穷级数。
一种用连分数的形式表示的圆周率求法。
下面的程序实现了该求解方法。
实际上数列的收敛对x的初始值并不敏感。
结果打印出圆周率近似值(保留小数点后4位,并不一定与圆周率真值吻合)。
doublex=111;
for(intn=10000;n>=0;n--){
inti=2*n+1;
x=2+(i*i/x);
}
System.out.println(String.format("%.4f",));
5_1、中奖计算(C++,8分)
某抽奖活动的规则是:
每位参与者在纸上写下一个8位数的号码。
最后通过摇奖的办法随机产生一个8位数字。
参与者写下的数字中最多有多少个连续位与开奖号码中的相同,则称为中了几个号。
例如:
小张写的数字是:
12345678,而开奖号码是:
42347856。
则称小张中了3个号,因为其中最长的相同连续位是:
“234”。
如果小张写的是:
87654321,则他只中了一个号。
下面的代码根据传入的参数,返回中了几个号。
其中:
a表示被评价的号码,b表示摇号产生的数字。
请填写缺少的代码。
intg(inta,intb)
{
charsa[]="00000000";
charsb[]="00000000";
intn=0;
inti,j;
sprintf(sa,"%8d",a);
sprintf(sb,"%8d",b);
for(i=0;i<8;i++)
{
for(j=1;j<=8-i;j++)
{
chart= ;//填空
sa[i+j]=0;
if(strstr(sb,sa+i))//如果在sb中存在(sa+i)字符串,就放回在sb中sa+i的起始地址,否则返回空指针。
{
if(j>n)
;//填空
}
sa[i+j]=t;
}
}
returnn;
}
5_2、数制转换(Java,8分)
下列代码把16进制表示的串转换为3进制表示的串。
试完善之。
例如:
x=“5”
则返回:
“12”
又例如:
x=”F”
则返回:
“120”
privatestaticintgetRealValue(charx)
{
if(x>='0'&&x<='9')returnx-'0';
if(x>='a'&&x<='f')returnx-'a'+10;
if(x>='A'&&x<='F')returnx-'A'+10;
return0;
}
publicstaticStringjin_zhi_16_3(Stringx)
{
intn=0;//累加真值
for(inti=0;i { n= +getRealValue(x.charAt(i));//填空 } Stringt=""; for(;;) { if(n==0)break; t=(n%3)+t; ;//填空 } returnt; } 6_1、奇怪的算式(10分) 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE*? =EDCBA 他对华生说: “ABCDE应该代表不同的数字,问号也代表某个数字! ” 华生: “我猜也是! ” 于是,两人沉默了好久,还是没有算出合适的结果来。 请你利用计算机的优势,找到破解的答案。 把ABCDE所代表的数字写出来。 注意: 答案是个整数 6_2、奇怪的分式(10分) 上小学的时候,小明经常自己发明新算法。 一次,老师出的题目是: 小明居然把分子拼接在一起,分母拼接在一起,答案是: 18/45 老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼! 对于分子、分母都是 1-9中的一位数的情况,还有哪些算式可以这样计算呢? 请写出所有不同算式的个数(包括题中举例的)。 显然,交换分子分母后,例如: 4/1 乘以5/8是满足要求的,这算做不同的算式。 但对于分子分母相同的情况,2/2 乘以3/3这样的类型太多了,不在计数之列! 注意: 答案是个整数(考虑对称性,肯定是偶数)。 7、棋盘放棋子(10分) 今有6x6的棋盘格。 其中某些格子已经预先放好了棋子。 现在要再放上去一些,使得: 每行每列都正好有3颗棋子。 我们希望推算出所有可能的放法。 注意: 答案是个整数(考虑对称性,肯定是偶数)。 8_1、蚂蚁感冒(10分) 长100厘米的细长直杆子上有n只蚂蚁。 它们的头有的朝左,有的朝右。 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。 这些蚂蚁中,有1只蚂蚁感冒了。 并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。 请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。 【数据格式】 第一行输入一个整数n (1 接着的一行是n个用空格分开的整数 Xi(-100 正值表示头朝右,负值表示头朝左,数据中不会出现0值,也不会出现两只蚂蚁占用同一位置。 其中,第一个数据代表的蚂蚁感冒了。 要求输出1个整数,表示最后感冒蚂蚁的数目。 例如,输入: 3 5-28 程序应输出: 1 再例如,输入: 5 -108-201225 程序应输出: 3 资源约定: 峰值内存消耗<256M CPU消耗 <1000ms。 8_2、一元多项式加法(10分) 实现两个整系数一元多项式的加法。 例如,对于多项式 5*X^6+4*X^3-7*X^4+1与多项式50*X^2+4*X,运算结果为: 5*X^6-7*X^4+4*X^3+50*X^2+4*X+1。 程序要求: 键盘输入多项式的各项系数及指数,每项系数及指数为一组数据(系数及指数之一可为零),以'0,0'结束一个多项式的输入,结果按降幂排列,同类项要合并(指数最大不超过30)。 例如,若输入为: 5,6 4,3 -7,4 1,0 0,0 3,4 12,2 4,1 0,0 输出结果应为: 5*x^6-4*x^4+4*x^3+12*x^2+4*x+1. 9_1、Playfair密码变种加密方法(15分) 一种Playfair密码变种加密方法如下: 首先选择一个密钥单词(称为pair)(字母不重复,且都为小写字母),然后与字母表中其他字母一起填入至一个5x5的方阵中,填入方法如下: 1)首先按行填入密钥串。 2)紧接其后,按字母序按行填入不在密钥串中的字母。 3)由于方阵中只有25个位置,最后剩下的那个字母则不需变换。 如果密钥为youandme,则该方阵如下: youan dmebc fghij klpqr stvwx 在加密一对字母时,如am,在方阵中找到以这两个字母为顶点的矩形(红色字体): youan dmebc fghij klpqr stvwx 这对字母的加密字母为该矩形的另一对顶点,如本例中为ob。 请设计程序,使用上述方法对输入串进行加密,并输出加密后的串。 另外有如下规定: 1)一对一对取字母,如果最后只剩下一个字母,则不变换,直接放入加密串中; 2)如果一对字母中的两个字母相同,则不变换,直接放入加密串中; 3)如果一对字母中有一个字母不在正方形中,则不变换,直接放入加密串中; 4)如果字母对出现在方阵中的同一行或同一列,如df或hi,则只需简单对调这两个字母,即变换为fd或ih; 5)如果在正方形中能够找到以字母对为顶点的矩形,假如字母对为am,则该矩形的另一对顶点字母中,与a同行的字母应在前面,在上例中应是ob;同样若待变换的字母对为ta,则变换后的字母对应为wo; 6)本程序中输入串均为小写字母,并不含标点、空格或其它字符。 解密方法与加密相同,即对加密后的字符串再加密,将得到原始串。 要求输入形式如下: 从控制台输入两行字符串,第一行为密钥单词(长度小于等于25),第二行为待加密字符串(长度小于等于50),两行字符串末尾都有一个回车换行符,并且两行字符串均为小写字母,不含其它字符。 在标准输出上输出加密后的字符串。 例如,若输入: youandme welcometohangzhou 则表示输入的密钥单词为youandme,形成的正方形如上所示;待加密字符串为welcometohangzhou。 在正方形中可以找到以第一对字母we为顶点的矩形,对应另一对顶点字母为vb,因此加密后为vb,同理可找到与字母对lc,et,oh,ho对应的顶点字母对。 而字母对om位于上述正方形中的同一列,所以直接以颠倒这两个字母来加密,即为mo,字母对an同理。 字母对gz中的z不在上述正方形中,因此原样放到加密串中。 最后剩一个字母u也原样输出。 因此输出的结果为: Vbrmmomvugnagzguu 9_2、最小公倍数(15分) 为什么1小时有60分钟,而不是100分钟呢? 这是历史上的习惯导致。 但也并非纯粹的偶然: 60是个优秀的数字,它的因子比较多。 事实上,它是1至6的每个数字的倍数。 即1,2,3,4,5,6都是可以除尽60。 我们希望寻找到能除尽1至n的的每个数字的最小整数。 不要小看这个数字,它可能十分大,比如n=100,则该数为: 69720375229712477164533808935312303556800 请编写程序,实现对用户输入的n(n<100)求出1~n的最小公倍数。 例如: 用户输入: 6 程序输出: 60 用户输入: 10 程序输出: 2520 10、矩阵翻硬币(24分) 小明先把硬币摆成了一个n行m列的矩阵。 随后,小明对每一个硬币分别进行一次Q操作。 对第x行第y列的硬币进行Q操作的定义: 将所有第i*x行,第j*y列的硬币进行翻转。 其中i和j为任意使操作可行的正整数,行号和列号都是从1开始。 当小明对所有硬币都进行了一次Q操作后,他发现了一个奇迹——所有硬币均为正面朝上。 小明想知道最开始有多少枚硬币是反面朝上的。 于是,他向他的好朋友小M寻求帮助。 聪明的小M告诉小明,只需要对所有硬币再进行一次Q操作,即可恢复到最开始的状态。 然而小明很懒,不愿意照做。 于是小明希望你给出他更好的方法。 帮他计算出答案。 【数据格式】 输入数据包含一行,两个正整数nm,含义见题目描述。 输出一个正整数,表示最开始有多少枚硬币是反面朝上的。 【样例输入】 23 【样例输出】 1 【数据规模】 对于10%的数据,n、m<=10^3; 对于20%的数据,n、m<=10^7; 对于40%的数据,n、m<=10^15; 对于10%的数据,n、m<=10^1000(10的1000次方)。 资源约定: 峰值内存消耗(含虚拟机)<256M CPU消耗<2000ms
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 测试 汇总 试题