注意19年的机试和答案,都是我根据自己的记忆回忆出来的题目,一些背景细节都忽略了,样例特别是第二题,原题已经不记得了,这个也是自己测试提供的,不排除有错误的情况,程序和题目都可能有所偏差
1.输入为两个数a,b。求出区间[a,b]之间所有相邻素数组成的等差数列。其中a>=2,b<100000。求素数的步骤必须优化。输出格式,每个数之间有空格,一行最后一个数也有空格。
样例1:
输入:
199 300
输出:
199 211 223
251 257 263 269
样例2:
输入:
2 500
输出:
3 5 7
47 53 59
151 157 163
167 173 179
199 211 223
251 257 263 269
367 373 379
2.(原题比较复杂,这里只能尽量还原出来,样例也是自己设计的,核心不变就行)
题目是输入N,接下来N行每行四个数,第一个输入为分支节点,后三个输入为孩子节点(-1为空)。输入的第一个分支节点为根节点是起点。然后输入M,接下来输入M个客户,每行输入他的目的(叶节点)和优先级(数字越小越优先,不会有相同优先级),从起点出发,按照优先级把客户送到目标节点,然后从该节点继续送下一个,全送完之后返回起点,记录每段经过的路径输出出来
输出格式:两个数之间一个空格,行尾不能有多余空格,每一条路径回车隔开
样例输入:
6
100 101 102 103
101 1 104 2
102 3 105 4
103 5 6 -1
104 7 8 -1
105 9 10 -1
5
7 7
9 3
6 2
8 1
4 5
样例输出:
100 101 104 8
104 101 100 103 6
103 100 102 105 9
105 102 4
102 100 101 104 7
104 101 100
——made by zuishixuan
2018:
18年的题目是我亲自考过的题目,具体的题目记不太清了,在此大概说一下题目的内容
1. 最长线段长度
输入是N条线段,每条线段由两个坐标点连接而成(每个坐标点都不相同),当两条线段首尾相接则称为这两条线段相连,问这些线段从左到右相连的最大长度(相连的线段数目)是多少
2.三叉树的构建与遍历
构建一个三叉树,然后对三叉树进行前序遍历和中序遍历(或者是后序遍历…),然后找到有三个节点的树的最大深度
2017:
1. 中位数的位置:
先输入一个整型数字N,接着输入n个无序的数字。要求输出升序排列后的中位数,以及该中位数输入的次序。如果N为偶数,则输出有两个中位数,如果N为奇数,输出最中间的数即可。
样例输入1:
5
9 2 7 1 6
样例输出1:
6 5
样例输入2:
6
9 6 7 1 2 3
样例输出2:
3 6
6 2
2. 查找未定义的变量
输入两个C语言语句,第一句为正常的C语言变量定义语句,符合C语言的语法要求,变量间可以有多个空格,包含数组,指针定义等,第二句为变量运算语句,要求输出第二个C语言语句中未定义的变量。
样例输入:
int x12, y=1, num_stu=89,a[30],*p;
Sum=num+x12*y
样例输出:
Sum num
3. 找家谱成员
输入若干行,每一行的第一个输入为家谱中的某成员,该行接着输入的信息为每个孩子的姓名。最后一行的输入为要求查找的二个家谱成员的关系,包括输出他们最近邻的共同祖先以及在家谱中相差的层次数
样例输入:
Ye Shu Ba
Shu Ge Mei1
Ba Self Mei2
Ge Son1 Son2
Son2 Mei1
样例输出:
Shu 1
2016:
1. 逆序数
给定一个数n,将这个数的各位顺序颠倒,成为逆序数m。例如1234的逆序数为4321。如果m是n的k倍(k是整数),那么输出n*k=m。例如输入1089,输出1089*9=9801。如果m不是n的整数倍,那么输出n和m的逆序数,例如输入1234,输出1234 4321。再例输入23200,输出23200 00232。已知输入开头不包含多余的0。
2. enum排班输出
给一个c语言的enum定义语句,输出enum中规定的各项值
样例输入:
enumBOOL{true,false};
样例输出:
true0
false1
enumdate{JAN=1,FEB,MAR,APR,MAY,JUN,JULY,AUG,SEP,OCT,NOV,DEC,MON=1,
TUE,WED,THU,FRI,SAT,SUN,found=1949};
输出:
JAN1
FEB2
MAR3
APR4
MAY5
JUN6
JULY7
AUG8
SEP9
OCT10
NOV11
DEC12
MON1
TUE2
WED3
THU4
FRI5
SAT6
SUN7
found1949
2015:
1. 求相亲数
即输入两个正整数a和b,若a的所有约数(包括1,但不包括a本身)的和等于b,且b的所有约数(包括1,但不包括b的本身)的和等于a,则两个数是相亲数。要求分别输出两个正整数的约数和的式子,再换行输出1或者0,表示这两个数是否是相亲数。
样例输入:
220 284
样例输出:
220,1+2+4+5+10+11+20+22+44+55+110=284
284, 1+2+4+71+142=220
1
2. 模拟鼠标点击桌面时桌面的窗口叠放次序
先输入一个数字n,表示左面窗口的数量,再输入n行,每行5个数,分别为窗口ID,窗口左下角横坐标,左下角纵坐标,右上角横坐标,右上角纵坐标(坐标均以屏幕左下角为0点),先输入的窗口叠放在后输入的窗口的上面。再输入m行,表示m次点击,每行两个数,分别表示点击的横坐标和纵坐标。要求按窗口叠放次序从高到低依次输出窗口的ID。
样例输入:
2
1 5 1 1 5
2 7 1 3 5
3
1 2
4 3
6 4
样例输出:
2 1
3. 统计词语
输入一段含标点的英文语段(若干行,以ctrl+Z结束)
统计这段话中出现的所有词语,要求按字典顺序输出词语,没输出一个词换一行。
样例输入:
we are family.you and me are family, you are my sister.
样例输出:
and
are
family
me
my
sister
we
you
2014:
1. 阶乘数
输入一个正整数,输出时,先输出这个数本身,跟着一个逗号,再输出这个数的各位数字的阶乘之和,等号,阶乘和的计算结果,并判断阶乘和是否等于原数,如果相等则输出YES,否则输出NO。题目说明:输入的正整数以及各位阶乘和都不会超过int型的表示范围。
样例输入:
145
样例输出:
145,1!+4!+5!=145
YES
2. 五子棋
输入一个19*19的矩阵,只包含数字0、1、2,表示两个人下五子棋的棋牌状态,1、2分别表示两人的棋子,0表示空格。要求判断当前状态是否有人获胜(横向、竖向或者斜线方向连城5个同色棋子)。题目说明:输入样例保证每条线上至多只有连续5个同色棋子,并且保证至多只有一人获胜,如果有人获胜,出书获胜者1或者2,加一个冒号,接着输出获胜的五连珠的第一个棋子的坐标,从上到下从左到右序号最小的为第一个,序号从1开始编号,如果无人获胜,则输出no。
3. 排版题
输入若干行字符,表示某电影的演职员表,每行只有一个冒号,冒号前面是职位,冒号后面是姓名,要求把各行冒号对齐,删除多余空格后输出。线束出一个数字,表示排版要求的冒号位置,该位置号保证比各行冒号前的最大字符数还要大。再输入若干行字符,最多50行,每行最多100个字符,除了空格、制表符和回车之外都是有效字符,要求每行的冒号处于格式要求的位置,冒号两边与有效单词之间个有一个空格,冒号前面的单词之间只有一个空格(删除多余的空格和制表符),再冒号左边右对齐,前面全由空格填充,冒号后面的单词之间也只有一个空格,在冒号右边左对齐,最后一个单词后不加空格,直接换行。
2013:
1. 分数化简
给一个真分数的分子分母,输出约分后的分子分母。
2. 简单版八皇后
8皇后是个经典的问题,如果使用暴力方法,每个格子都考虑放皇后与否,一共用2^64可能,所以暴力法不是个好方法。由于皇后们是不能放在同一行的,所以我们可以去掉“行”这个因素,即我们第一次考虑把皇后放在第一行的某个位置,第二次放的时候就不用去放在第一行了,因为这样皇后间是可以互相攻击的。第二次我们就考虑把皇后放在第2行的某个位置,第三次考虑把皇后放在第三行的某个位置,这样依次去递归。每计算1行,递归1次,每次递归里面考虑8列,即对每一行皇后有8个位置可以放。找到一个与前面行的皇后都不会互相攻击的位置,然后递归进入下一行。找到一组可行解即可输出,然后程序回溯去找下一组可行解。
3. 科学记数法
给出一个标准输入的正数(开头结尾没有多余的0),输出其科学记数法表示。比如,输入0.000002,输出2e-6;输入123.456,输出1.23456e2;输入123456,输出1.23456e5
2012:
1.某些整数能分解成若干个连续整数和的形式,例如:
15=1+2+3+4+5
15=4+5+6
15=7+8
某些整数不能分解为连续整数的和,例如16
输入:一个整数N(N<10000)
输出:整数N对应的所有分解组合,按照分解组合中的最小整数从小到大输出,每个分解占一行,每个数字之间有一个空格(每行最后保留一个空格),如果没有任何分解组合,则输出NONE。
2.小岛面积
1 1 1 1 1 1
1 1 0 0 0 1
1 0 0 0 1 0
1 1 0 1 1 1
0 1 0 1 0 0
1 1 1 1 1 1
上面矩阵中的1代表海岸线,0代表小岛,求小道面积。即仅求这样的0.该0在行中被两个1保卫,该0在列中被两个1包围。
输入:第一行输入一个整数N,表示输入的方阵的维数
输入一个N维方阵
输出:小岛面积
样例输入:
6
1 1 1 1 1 1
1 1 0 0 0 1
1 0 0 0 1 0
1 1 0 1 1 1
0 1 0 1 0 0
1 1 1 1 1 1
样例输出:
8
3.统计关键字的出现位置
输入:一行标准的c语言代码(字符数小于300),统计出该字符串中关键字的if,while,for所在的位置,按照关键字出现的顺序依次输出,注意双引号内的不需要统计。输出格式为:关键字,后跟冒号,然后是出现的位置。扫描到关键字就输出,每个输出占一行。
样例输出:
if:43
while:88
if:133
if:170
2011:
1.孪生数
定义:如果A的约数(包括1,但不包含A本身)之和等于B,B的约数之和等于A,则成A和B是孪生数(A和B不相等)。试找出M和N之间的孪生数。
输入:两个正整数M和N(1<=M
输出:全部孪生数对,包括M和N,每行输出一对,用空格隔开,小的先输出。如果没有符合要求的,则输出NONE。
样例输入:
20 300
200 250
样例输出:
220 284
NONE
2. 矩阵替换输出
先输入两个矩阵A和B,然后输入替换位置(相对左上角),编写程序将矩阵A中从替换位置开始的子矩阵(与B同样大小)替换为B,并输出替换后的矩阵。
输入:从控制台先输入矩阵A的行数和列数(大于等于1,小于等于20),然后在新的行上输入矩阵A的各行数字(以一个空格分隔的整数),再以同样的方式输入矩阵B。最后输入替换位置(用一个空格分隔的两个整数表示,行数和列数都从1开始技术,因此两个整数都大于等于1)。若替换位置超出了矩阵A的行数或者列数,则原样输出A。
输出:在标准输出上分行输出替换后的矩阵,每行中数字之间以一个空格分隔。
样例输入:
5 6
10 2 34 -1 800 90
2 76 56 -200 23 1
35 0 0 98 8 3000
2000 100 -1 1 2 0
9 7 85 963 496 8
2 3
9 9 9
9 9 9
3 3
样例输出:
10 2 34 -1 800 90
2 76 56 -200 23 1
35 0 9 9 9 3000
2000 100 9 9 9 0
9 7 85 963 496 8
3. 从键盘上输入包含“-”的字符串,将其扩展为等价的完整字符,例如将a-d扩展为abcd,并输出扩展后的字符串。
要求:只处理[a-z],[A-Z],[0-9]范围内的字符扩展,即只有当扩展符前后的字符同时是小写字母,大写字母或者数字时才进行扩展,其他情况不进行扩展,原样输出。例如:a-R,0-b,4-B都不进行扩展。
样例输入1:
ADEa-g-m02
样例输出1:
ADEabcdefghijklm02
样例输入2:
cdeT-bcd
样例输出2:
cdsT-bcd
2010:
1.利用泰勒公式求cos(x)=1-x^2/2!+x^4/4!-.....
2.归并两个有序字符串,要求输出不能有重复字符(实现merge函数)
3.两个整数数组(无序,可有重复元素),判断两个整数数组是否完全相同(重复元素的话,重复元素也要相同)
2009:
1.立方根的逼近迭代方程是y(n+1)=y(n)*2/3+x/(3*y(n)*y(n)),其中y0=x,求给定的x经过n次迭代后的立方根的值。
输入:每组一行,输入x和n
输出:迭代n次的立方根,double精度,保留小数点后面六位
样例输入:
3000000 28
样例输出:
133.224957
2.数组排序:
输入一个数组的值,求出各个值从小到大排序后的应该的次序。
输入:第一个数为数组的长度,后面的数为数组中的值。以空格分隔
输出:各输入的值按从小到大排列的次序
样例输入:
4
-3 75 12 -3
样例输出:
1 3 2 1
3. 字符串的查找删除:
给定文件filein.txt按要求输出fileout.txt
输入:无空格的字符串
输出:将filein.txt删除输入的字符串(不包含大小写)至fileout.txt
样例输入:
in
样例输出:
将filein.txt内的In,IN,iN,in删除,每行中的空格全部提前至行首,输出至fileout.txt
2008:
1. 素数
输入一个整数,要求输出所有从1到这个整数之间的,个位是1的,素数,如果没有则输出-1
2.旋转矩阵:
任意输入两个9阶以下的矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0,90,180,270),如果不是,输出-1
要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意空格分隔,行之间用回车分隔,两个矩阵间用任意的回车分隔。
3.字符串匹配
从string.in中读入数据,然后用户输入一个短字符串,要求查找string.in中和短字符串的所有匹配,输出行号、匹配字符到string.out文件中,匹配时不区分大小写,并且可以有一个用中括号表示的模式匹配。如"aa[123]bb",就是说aa1bb,aa2bb,aa3bb都算匹配
2007:
1.从输入的字符串中。统计空格,回车,TAB出现的次数
2.将两个升序字符串合并成一个升序字符串,相同的只合成一次
3.两个多项式相加
——made by 阿奇
?点击阅读原文查看原帖