历年北京理工大学计算机复试上机真题
在线评测:https://app2098.acapp.acwing.com.cn/
分段函数
题目描述
编写程序,计算下列分段函数 y=f(x) 的值。
- 当 0<= x <2,y= -x+2.5;
- 当 2<= x <4,y=2-1.5(x-3)(x-3);
- 当 4<= x <6,y=x/2-1.5;
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据占一行,包含一个整数 x。
输出格式
每组数据输出一行,一个结果,格式为 y=k
,其中 k 为计算得到的值,保留一位小数。
输入样例
2
1
3
输出样例
y=1.5
y=2.0
整数和
题目描述
编写程序,读入一个整数N。
若N为非负数,则计算 N 到2N 之间的整数和;若N为一个负数,则求 2N 到N 之间的整数和(包括两端整数)。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据一行,一个整数 N。
输出格式
每组数据一行,一个结果。
输入样例
2
2
-1
输出样例
9
-3
围圈报数
题目描述
N 个人围成一圈顺序编号,从 1 号开始按 1、2、3 顺序报数,报 3 者退出圈外,其余的人再从 1、2、3开始报数,报 3 的人再退出圈外,依次类推。
请按退出顺序输出每个退出人的原序号。
要求使用环行链表编程
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据一行,一个整数 N。
输出格式
每组数据输出一行,一个结果,包含每个退出人的原序号,用空格隔开。
数据范围
1≤T≤5
1≤N≤50
输入样例
1
4
输出样例
3 2 4 1
递归求阶乘
题目描述
给定一个整数 n,计算并输出 n 的阶乘。
输入格式
第一行包含整数 m,表示共有 m 组数据。
每组数据占一行,包含一个整数 n。
输出格式
每组数据输出一行,一个结果。
输入样例
1
3
输出样例
6
球的计算
题目描述
给定一个球的中心点坐标和球面上某一点的坐标,请你计算球的半径和体积。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据占一行,包含六个整数 x0,y0,z0,x1,y1,z1,分别表示球的球心坐标 (x0,y0,z0)和球面上一点坐标 (x1,y1,z1)。
输出格式
每组数据输出一行,一个结果,首先输出球的半径,然后输出球的体积。
两数之间空格隔开,保留两位小数。
数据范围
1≤T≤10
−5≤x0,y0,z0,x1,y1,z1≤5
输入样例
1
0 0 0 1 0 0
输出样例
1.00 4.19
学生查询
题目描述
输入n个学生的信息,每行包括学号、姓名、性别和年龄,每一个属性使用空格分开。最后再输入一学号,将该学号对应的学生信息输出。
输入格式
测试数据有多组,第一行为样例数m。对于每个样例,第一行为学生人数n(n不超过20),接下来n行每行4个整数分别表示学号、姓名、性别和年龄,最后一行表示查询的学号。
输出格式
输出m行,每行表示查询的学生信息,格式参见样例。
输入样例
1
4
1 李江 男 21
2 刘唐 男 23
3 张军 男 19
4 王娜 女 19
2
输出样例
2 刘唐 男 23
计算天数
题目描述
输入年月日,计算该填是本年的第几天。例如1990 年9 月20 日是1990 年的第263 天,2000 年5 月1 日是2000 年第122 天。
输入格式
输入第一行为样例数m,接下来m行每行3个整数分别表示年月日。
输出格式
输出m行分别表示题目所求。
输入样例
2
1990 9 20
2000 5 1
输出样例
263
122
重载运算符
题目描述
建立一个角类,在这个类中重载减号运算符(角度相减),并实现求出角度的正弦值的函数。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据占一行包含两个整数表示角度。
输出格式
每组数据输出一行,一个结果,表示两角相减的正弦值,保留小数点后两位。
数据范围
1≤T≤100,
角度取值范围 [−360,360]。
输入样例
1
60 30
输出样例
0.50
一元二次方程
题目描述
建立一个求一元二次方程解的类(ax2+bx+c=0),输入系数a,b,c 的值后打印出这个方程的解。
输入格式
输入第一行为样例数m,接下来m行每行3个整数a、b、c。
输出格式
输出m行,要求格式如下:若无解则输出-1,若有单解则输出x=…,若有两解则输出x1=…,x2=…,具体参见样例,保留小数点后两位。
输入样例
3
1 -3 2
1 -2 1
2 1 2
输出样例
x1=1.00,x2=2.00
x=1.00
-1
year
2019
多项式的值
题目描述
实现一个多项式的类(a+b×x+c×x2+d×x3+…),要求输入该多项式的系数和 xx 的值后打印出这个多项式的值。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据第一行为多项式最高项次数 n。
第二行 n+1个整数表示每项系数。
第三行一个整数 x。
输出格式
每组数据输出一行,一个结果,表示多项式代入 x 后的值。
数据范围
1≤T≤100,
1≤n≤10
0≤x≤5
系数取值范围 [−10,10]。
输入样例
1
2
1 2 3
2
输出样例
17
日期类
题目描述
编写一个日期类,要求按 xxxx-xx-xx
的格式输出日期,实现加一天的操作。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据占一行,包含 3 个用空格隔开的整数,分别表示年月日。
输出格式
每组数据输出一行,一个结果,按 xxxx-xx-xx
的格式输出,表示输入日期的后一天的日期。
数据范围
输入日期保证合法且不会出现闰年。
年份范围 [1000,3000]
输入样例
2
1999 10 20
2001 1 31
输出样例
1999-10-21
2001-02-01
复数加法
题目描述
编写一个复数类,有构造函数,能对复数初始化;重载加法操作符并按 a+bi 的形式输出。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据占一行,包含 4 个用空格隔开的整数,分别表示 2 个复数的实部和虚部。
输出格式
每组数据输出一行,一个结果,按 a+bi 或者 a−bi的格式输出,表示两个复数相加的和。
数据范围
1≤T≤10
输入整数的绝对值均不超过 100。
输入样例
1
3 4 1 -2
输出样例
4+2i
判断数字位置
题目描述
给定一个由字母和数字构成的字符串,请你判断字符串中数字的位置。
位置坐标从 1 开始。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据占一行,包含一个字符串。
输出格式
每组数据输出一行数字,用空格隔开,按顺序表示字符串中出现的数字的位置。
数据范围
1≤T≤10,
给定字符串长度不超过 50。
输入样例
1
a3b4c5
输出样例
2 4 6
整型存储
题目描述
写一个类,能接收 int 型的变量,接收变量后能存储原变量(譬如 12345)和其反向变量(54321),最多处理数量为 10 个,当输入达到 10 个或者输入变量为 0 的时候停止,并且在类销毁前输出存储的所有变量。
**注意:**反向变量的前导 0 不用输出。
输入格式
输入若干个整数。
输出格式
若干行,每行输出一个原变量及其反向变量,用单个空格隔开。
数据范围
输入整数范围 [1,10000]。
输入样例
12 3442 0
输出样例
12 21
3442 2443
整型存储1
题目描述
写一个类,能接受int 型的变量,接收变量后能存储原变量(譬如12345)和其反向变量(54321),最多处理数量为10 个,当输入达到10 个或者输入变量为0 的时候停止。并且在类销毁前输出存储的所有变量。
输入格式
输入若干个整数。
输出格式
按类里存储的数个数m输出m行。每行两个数,表示原变量及其反向变量。
输入样例
12 3442 0
输出样例
12 21
3442 2443
三角形相加
题目描述
写一个 CTriangle 类,要求可以接受CTriangle(y,x)
形式的构造。
表示含义如下:A(0,y) B(0,0) C(x,0)。
要求能够处理若干个三角形的相加(点B保持不变,两直角边相加)。
输入格式
输入有若干行,每行两个数y,x,读到0表示结束。
输出格式
输出一行表示三点坐标,格式参见样例。
数据范围
输入不超过 100 对数对。
1≤x,y≤100
输入样例
10 20
1 31
0
输出样例
A(0,11),B(0,0),C(51,0)
弹地小球
题目描述
一个小球,从高为H的地方下落,下落弹地之后弹起高度为下落时的一半,比如第一次弹起高度为H/2,如此往复,计算从小球H 高度下落到第n 次弹地往返的总路程。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据占一行,包含两个整数 H 和 n。
输出格式
每组数据输出一行,一个结果,表示小球往返的总路程。
输出结果与标准答案的绝对误差不超过 10−2 即视为正确。
数据范围
1≤T≤10
1≤H≤100
1≤n≤5
输入样例
1
5 2
输出样例
10.00
点的距离
题目描述
创建一个 CPoint 类,代表平面直角坐标系中的点,创建构造函数和运算符重载函数,运算符重载为类重载(非友元重载),可以实现计算两个点之间的距离。
要求:
- 输入两个点的坐标,输出两个点之间的距离
- 重载运算符为“-”
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据一行,每行 4 个整数分别表示两个点的横纵坐标。
输出格式
每组数据输出一行,一个答案,表示两点之间距离,保留两位小数。
数据范围
1≤T≤10
坐标取值范围 [0,10]
输入样例
1
0 0 2 0
输出样例
2.00
直角三角形
题目描述
创建一个CTriangle 类,需要用到第二题中创建的类,即用3点来代表一个三角形,输入三个点的坐标,实现判断此三角形是不是直角三角形,并输出此三角形的周长。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据占一行,包含 6 个整数分别表示三个点的横纵坐标。
输出格式
对于每个样例输出两行,第一行根据是否直角三角形输出Yes或No,第二行输出三角形的周长,保留小数点后两位。
数据范围
1≤T≤10
坐标取值范围 [0,5]
保证输入的三个点能够构成三角形。
输入样例
1
0 0 3 0 0 4
输出样例
Yes
12.00
日期累加
题目描述
设计一个程序能计算一个日期加上若干天后是什么日期。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据占一行,包含四个整数 y,m,d,a,分别表示给定日期的年、月、日和累加的天数。
输出格式
每组数据输出一行,一个结果,每行按 yyyy-mm-dd
的格式输出。
数据范围
1≤T≤1000
1000≤y≤3000
1≤m≤12
1≤d≤31
1≤a≤106
保证输入日期合法。
输入样例
1
2008 2 3 100
输出样例
2008-05-13
编排字符串
题目描述
请输入字符串,最多输出 4 个字符串,要求后输出的字符串排在前面,例如
输入:EricZ
输出:1=EricZ输入:David
输出:1=David 2=EricZ输入:Peter
输出:1=Peter 2=David 3=EricZ输入:Alan
输出:1=Alan 2=Peter 3=David 4=EricZ输入:Jane
输出:1=Jane 2=Alan 3=Peter 4=David
输入格式
第一行为字符串个数 m。
接下来 m 行每行一个不包含空格的字符串。
输出格式
输出m行,每行按照样例格式输出,注意用一个空格隔开。
数据范围
m 不超过100,每个字符串长度不超过 20。
输入样例
5
EricZ
David
Peter
Alan
Jane
输出样例
1=EricZ
1=David 2=EricZ
1=Peter 2=David 3=EricZ
1=Alan 2=Peter 3=David 4=EricZ
1=Jane 2=Alan 3=Peter 4=David
分组统计
给定 n 个整数 a1,a2,…,an,这 n 个数对应 m 个不同的数值,从小到大依次为 v1,v2,…,vm。(m≤nm≤n)
这 n 个数被分到了 k 个小组中。
k 个小组编号 1∼k且每个小组都不为空。
现在,请你统计每个小组中,每个数值的数有多少个。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据第一行包含整数 n,表示整数个数。
第二行包含 n 个整数 a1,a2,…,an
第三行包含 n 个整数,其中第 i 个整数表示 ai 所在的小组编号。
输出格式
每组数据输出 k 行,第 i 行输出第 i 组的各数值统计情况,格式如下:
i={v_1=xx,v_2=xx,...,v_m=xx}
具体可参照样例。
数据范围
1≤T≤10
1≤k≤n≤100
1≤ai≤1000
输入样例:
1
7
3 2 3 8 8 2 3
1 2 3 2 1 3 1
输出样例:
1={2=0,3=2,8=1}
2={2=1,3=0,8=1}
3={2=1,3=1,8=0}
单词识别
题目描述
输入一行英文句子,统计句子中出现的各个单词(不区分大小写)及其出现次数。
要求能识别英文句号和逗号,即是说单词由空格、句号和逗号隔开。
输入格式
共一行,包含一个长度不超过 1000 的字符串。
字符串中只包含大小写字母,空格,英文句号和逗号。
输出格式
按字典顺序,输出每个单词及其出现次数。
单词在输出时,应将字母全部转化为小写。
每个单词的输出占一行。
具体格式为:
word:times
数据范围
输入字符串长度不超过 1000。
至少存在一个有效单词,单词一定完全由字母构成。
输入样例
A blockhouse is a small castle that has four openings through which to shoot.
输出样例
a:2
blockhouse:1
castle:1
four:1
has:1
is:1
openings:1
shoot:1
small:1
that:1
through:1
to:1
which:1
加法等式
题目描述
设a、b、c 均是0 到9 之间的数字,abc、bcc 是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c 的值。
输入格式
无。
输出格式
每行输出3个数,分别表示abc的值,用一个空格隔开。
输入样例
输出样例
3 2 1
完数与盈数
题目描述
一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1,则称其为“完数”;若因子之和大于该数,则称其为“盈数”。求出2 到60 之间所有“完数”和“盈数”,并以如下形式输出: E: e1 e2 e3 …(ei 为完数) G: g1 g2 g3 …(gi 为盈数)
输入格式
无
输出格式
按描述要求输出(注意EG后面的冒号之后有一个空格)。
输入样例
输出样例
E: 6 28 G: 12 18 20 24 30 36 40 42 48 54 56 60
反序相等
题目描述
设N是一个四位数,它的9倍恰好是其反序数(例如:1234 的反序数是4321),求N的值。
输入格式
无
输出格式
每行一个数,表示满足题目要求的数。
输入样例
输出样例
1089
邮票2
题目描述
某人有8 角的邮票5 张,1 元的邮票4 张,1 元8 角的邮票6 张,用这些邮票中的一张或若干张可以得到多少种不同的邮资?
输入格式
无
输出格式
输出一行,表示题目所求。
输入样例
输出样例
82
对称平方数
题目描述
打印所有不超过n(n<256)的,其平方具有对称性质的数。如11*11=121。
输入格式
无
输出格式
每行一个数,表示对称平方数。
输入样例
输出样例
0
1
2
3
11
22
26
101
111
121
202
212
year
2018
身份证校验
题目描述
身份证号码共 18 位,最后一位是校验位。
校验的规则如下:
身份证的前十七位数字和对应的权值相乘后相加后所得的和对 11 取余的余数与校验位(身份证最后一位)能够相对应,则身份证合法。
前十七位的权值分别是:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
余数 x 和校验位 y 的对应规则如下:
x: 0 1 2 3 4 5 6 7 8 9 10
y: 1 0 X 9 8 7 6 5 4 3 2
现在,给定若干个身份证号,请你判断这些身份证号是否合法。
输入格式
若干行,每行包含一个字符串表示输入身份证号。
输出格式
如果所输入身份证号码合法,输出 ID Correct
,否则输出 ID Wrong
。
每个身份证号的输出占一行。
数据范围
输入不超过 100 行,
每个字符串的长度不超过 20。
输入样例
1222222222
11111111111111111111
341181198809150011
11010119900307387X
150102199003075131
150102200003075131
输出样例
ID Wrong
ID Wrong
ID Corrent
ID Corrent
ID Corrent
ID Wrong
year
2017
墨滴扩散
题目描述
给你一个 m*n 大小的矩阵,每个点有 0,1,2 三种取值;0 代表障碍物,1
代表白纸,2 代表墨滴。每一秒墨滴可以向其上下左右扩散,将四周的白纸染色,
被染色之后的白纸可以继续向四周扩散,以此类推。问经过几秒,矩阵中所有的白
纸都被染色,如果可以,则输出扩散时间;如果不可以,则输出 FALSE。
输入格式
m n 的大小以及矩阵每个点的值
输出格式
扩散时间 或 FALSE
输入样例
3 3
0 1 0
1 2 1
0 1 0
输出样例
1
year
2020
字符串重复组合
题目描述
输入三个字符串,问第三个字符串能否由前两个字符串多次重复组合形成。
如果能,则输出前两个字符串各自的使用次数;如果不能,则输出 FALSE。
输入格式
三个字符串
输出格式
前两个字符串各自的次数 或 FALSE
输入样例
aa bb bbaaaabbaa
输出样例
3 2
year
2020
字符串解析
题目描述
字符串解析 将字符串看成不同的字符切片 切片不可重复 按字母序输出所有切片 每个
切片一行
输入格式
如题
输出格式
如题
输入样例
aaabbcaaabaa
输出样例
aa
aaa
b
bb
c
year
2019
重复数字
题目描述
给定任意个整数,以逗号隔开,输出最后一个重复数字,没有重复数字输出-1
输入格式
如题
输出格式
如题
输入样例
1,2,3,4,4,3,2,1
1,2,3,4,5,6,7,8
输出样例
1
-1
year
2019