用while loop计算阶乘_20072019北京航空航天大学计算机考研复试961机试真题

注意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个客户,每行输入他的目的(叶节点)和优先级(数字越小越优先,不会有相同优先级),从起点出发,按照优先级把客户送到目标节点,然后从该节点继续送下一个,全送完之后返回起点,记录每段经过的路径输出出来

输出格式:两个数之间一个空格,行尾不能有多余空格,每一条路径回车隔开

913ed0d3-7813-eb11-8da9-e4434bdf6706.png

样例输入:

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 阿奇

?点击阅读原文查看原帖

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值