历年华中科技大学计算机考研复试上机真题
2022华中科技大学计算机考研复试上机真题
2021华中科技大学计算机考研复试上机真题
2019华中科技大学计算机考研复试上机真题
在线评测:https://pgcode.cn
八进制
题目描述
输入一个整数,将其转换成八进制数输出。
输入格式
输入包括一个整数N(0<=N<=100000)。
输出格式
可能有多组测试数据,对于每组数据,
输出N的八进制表示数。
输入样例
7
8
9
输出样例
7
10
11
统计单词
题目描述
编一个程序,读入用户输入的,以“.”结尾的一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个字符。 (凡是以一个或多个空格隔开的部分就为一个单词)
输入格式
输入包括1行字符串,以“.”结束,字符串中包含多个单词,单词之间以一个或多个空格隔开。
输出格式
可能有多组测试数据,对于每组数据
输出字符串中每个单词包含的字母的个数。
输入样例
hello how are you.
输出样例
5 3 3 3
打印日期
题目描述
给出年分m和一年中的第n天,算出第n天是几月几号。
输入格式
输入包括两个整数y(1<=y<=3000)
n(1<=n<=366)。
输出格式
可能有多组测试数据,对于每组数据,
按 yyyy-mm-dd的格式将输入中对应的日期打印出来。
输入样例
2000 3
2000 31
2000 40
2000 60
2000 61
2001 60
输出样例
2000-01-03
2000-01-31
2000-02-09
2000-02-29
2000-03-01
2001-03-01
大整数排序
题目描述
对N个长度最长可达到1000的数进行排序。
输入格式
输入第一行为一个整数N,(1<=N<=100)。
接下来的N行每行有一个数,数的长度范围为1<=len<=1000。
每个数都是一个正数,并且保证不包含前缀零。
输出格式
可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。
输入样例
3
11111111111111111111111111111
2222222222222222222222222222222222
33333333
输出样例
33333333
11111111111111111111111111111
2222222222222222222222222222222222
排序
题目描述
对输入的n个数进行排序并输出。
输入格式
输入的第一行包括一个整数n(1<=n<=100)。
接下来的一行包括n个整数。
输出格式
可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格。
每组测试数据的结果占一行。
输入样例
4
1 4 3 2
输出样例
1 2 3 4
特殊排序
题目描述
输入一系列整数,将其中最大的数挑出(如果有多个,则挑出一个即可),并将剩下的数进行排序,如果无剩余的数,则输出-1。
输入格式
输入第一行包括1个整数N,1<=N<=1000,代表输入数据的个数。
接下来的一行有N个整数。
输出格式
可能有多组测试数据,对于每组数据,
第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。
第二行将排序的结果输出。
输入样例
4
1 3 4 2
输出样例
4
1 2 3
二叉树遍历2
题目描述
二叉树的前序、中序、后序遍历的定义:
- 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树;
- 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;
- 后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。
给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。
输入格式
两个字符串,其长度n均小于等于26。
第一行为前序遍历,第二行为中序遍历。
二叉树中的结点名称以大写字母表示:A,B,C…最多26个结点。
输出格式
输入样例可能有多组,对于每组测试样例。
输出一行,为后序遍历的字符串。
输入样例
ABC
BAC
FDXEAG
XDEFAG
输出样例
BCA
XEDGAF
成绩排序 - 华科
题目描述
有N个学生的数据,将学生数据按成绩从低到高排序,如果成绩相同则按姓名字符的字典序排序,如果姓名的字典序也相同则按照学生的年龄从小到大排序,并输出N个学生排序后的信息。
输入格式
测试数据有多组,每组输入第一行有一个整数N(N<=1000),接下来的N行包括N个学生的数据。
每个学生的数据包括姓名(长度不超过100的字符串)、年龄(整形数)、成绩(小于等于100的正数)。
输出格式
将学生信息按成绩进行排序,成绩相同的则按姓名的字母序进行排序。
然后输出学生信息,按照如下格式:
姓名 年龄 成绩
学生姓名的字母序区分字母的大小写,如A要比a的字母序靠前(因为A的ASC码比a的ASC码要小)。
输入样例
3
abc 20 99
bcd 19 97
bed 20 97
输出样例
bcd 19 97
bed 20 97
abc 20 99
二叉排序树
题目描述
输入一系列整数,建立二叉排序树,并进行前序,中序,后序遍历。
输入格式
输入第一行包括一个整数n(1<=n<=100)。
接下来的一行包括n个整数。
输出格式
可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。
每种遍历结果输出一行。每行最后一个数据之后有一个空格。
输入中可能有重复元素,但是输出的二叉树遍历序列中重复元素不用输出。
输入样例
5
1 6 5 9 8
输出样例
1 6 5 9 8
1 5 6 8 9
5 8 9 6 1
N阶楼梯上楼问题
题目描述
N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。
(要求采用非递归)
输入格式
输入包括一个整数N,(1<=N<90)。
输出格式
可能有多组测试数据,对于每组数据,
输出当楼梯阶数是N时的上楼方式个数。
输入样例
4
输出样例
5
二叉排序树 - 华科
题目描述
二叉排序树,也称为二叉查找树。
可以是一颗空树,也可以是一颗具有如下特性的非空二叉树:
- 若左子树非空,则左子树上所有节点关键字值均不大于根节点的关键字值;
- 若右子树非空,则右子树上所有节点关键字值均不小于根节点的关键字值;
- 左、右子树本身也是一颗二叉排序树。
现在给你N个关键字值各不相同的节点,要求你按顺序插入一个初始为空树的二叉排序树中,每次插入后成功后,求相应的父亲节点的关键字值,如果没有父亲节点,则输出-1。
输入格式
输入包含多组测试数据,每组测试数据两行。
第一行,一个数字N(N<=100),表示待插入的节点数。
第二行,N个互不相同的正整数,表示要顺序插入节点的关键字值,这些值不超过10^8。
输出格式
输出共N行,每次插入节点后,该节点对应的父亲节点的关键字值。
输入样例
5
2 5 1 3 4
输出样例
-1
2
2
5
3
遍历链表
题目描述
建立一个升序链表并遍历输出。
输入格式
输入的每个案例中第一行包括1个整数:n(1<=n<=1000),接下来的一行包括n个整数。
输出格式
可能有多组测试数据,对于每组数据,
将n个整数建立升序链表,之后遍历链表并输出。
输入样例
4
3 5 7 9
输出样例
3 5 7 9
矩阵转置
题目描述
输入一个N*N的矩阵,将其转置后输出。
要求:不得使用任何数组(就地逆置)。
输入格式
输入的第一行包括一个整数N,(1<=N<=100),代表矩阵的维数。
接下来的N行每行有N个整数,分别代表矩阵的元素。
输出格式
可能有多组测试数据,对于每组数据,将输入的矩阵转置后输出。
输入样例
3
1 2 3
4 5 6
7 8 9
输出样例
1 4 7
2 5 8
3 6 9
回文字符串
题目描述
给出一个长度不超过1000的字符串,判断它是不是回文(顺读,逆读均相同)的。
输入格式
输入包括一行字符串,其长度不超过1000。
输出格式
可能有多组测试数据,对于每组数据,如果是回文字符串则输出"Yes!”,否则输出"No!"。
输入样例
hellolleh
helloworld
输出样例
Yes!
No!
字符串连接
题目描述
不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。
输入格式
每一行包括两个字符串,长度不超过100。
输出格式
可能有多组测试数据,对于每组数据,
不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。
输出连接后的字符串。
输入样例
abc def
输出样例
abcdef
IP地址 - 华科
题目描述
输入一个ip地址串,判断是否合法。
输入格式
每行有一个IP地址,IP地址的形式为a.b.c.d,其中a、b、c、d都是整数。
输出格式
可能有多组测试数据,对于每组数据,如果IP地址合法则输出"Yes!”,否则输出"No!”。
合法的IP地址为:
a、b、c、d都是0-255的整数。
输入样例
255.255.255.255
输出样例
Yes!
梅森素数
题目描述
关于梅森素数。所谓梅森数,是指形如2p-1的一类数,其中指数p是素数,常记为M§。
如果p是素数的同时,梅森数(即2^p-1)也是素数,就称这个梅森数为梅森素数。
输入一个长整型数n,输出不大于它的所有梅森素数。
输入格式
输入一个长整型数
输出格式
输出比该数字小的梅森素数
输入样例
1000
输出样例
M(2)=3
M(3)=7
M(5)=31
M(7)=127
题目来源
华中科技大学2019年机试题
对称矩阵
题目描述
输入一个N维矩阵,判断是否对称。
输入格式
输入第一行包括一个数:N(1<=N<=100),表示矩阵的维数。
接下来的N行,每行包括N个数,表示N*N矩阵的元素。
输出格式
可能有多组测试数据,对于每组数据,
输出"Yes!”表示矩阵为对称矩阵。
输出"No!”表示矩阵不是对称矩阵。
输入样例
4
16 19 16 6
19 16 14 5
16 14 16 3
6 5 3 16
2
1 2
3 4
输出样例
Yes!
No!
守形数
题目描述
守形数是这样一种整数,它的平方的低位部分等于它本身。
比如25的平方是625,低位部分是25,因此25是一个守形数。 编一个程序,判断N是否为守形数。
输入格式
输入包括1个整数N,2<=N<100。
输出格式
可能有多组测试数据,对于每组数据,
输出"Yes!”表示N是守形数。
输出"No!”表示N不是守形数。
输入样例
25
4
输出样例
Yes!
No!
a+b - 华科
题目描述
实现一个加法器,使其能够输出a+b的值。
输入格式
输入包括两个数a和b,其中a和b的位数不超过1000位。
输出格式
可能有多组测试数据,对于每组数据,
输出a+b的值。
输入样例
2 6
10000000000000000000 10000000000000000000000000000000
输出样例
8
10000000000010000000000000000000
找位置
题目描述
对给定的一个字符串,找出有重复的字符,并给出其位置.
如:abcaaAB12ab12
输出:a,1;a,4;a,5;a,10,b,2;b,11,1,8;1,12, 2,9;2,13。
输入格式
输入包括一个由字母和数字组成的字符串,其长度不超过100。
输出格式
可能有多组测试数据,对于每组数据,
按照样例输出的格式将字符出现的位置标出。
-
下标从0开始。
-
相同的字母在一行表示出其出现过的位置。
输入样例
abcaaAB12ab12
输出样例
a:0,a:3,a:4,a:9
b:1,b:10
1:7,1:11
2:8,2:12
阶乘2
题目描述
输入n, 求y1=1!+3!+…m!(m是小于等于n的最大奇数) y2=2!+4!+…p!(p是小于等于n的最大偶数)。
输入格式
每组输入包括1个整数:n
输出格式
可能有多组测试数据,对于每组数据,
输出题目要求的y1和y2
输入样例
4
输出样例
7 26
进制转换
题目描述
十二进制是数学中一种以12为底数的计数系统,它由0~9,a,b组成,与十进制的对应关系是:0~9对应0~9,a对应10,b对应11。例如,十二进制的a2,十进制是122。输入一个仅含十二进制数字的字符串(字母一律小写,不超过8个字符),完成下列任务:
(1)输出该十二进制数每一位对应的十进制数(从高位到低位顺序输出,空格隔开);
(2)实现“十二进制”转“十进制”算法,输出该十二进制数对应的十进制数;
(3)输出转换后的十进制数在内存中的每个二进制位(共4字节,每字节之间空格隔开)。
输入格式
输入一个十二进制数(字母一律小写,不超过8个字符)。
输出格式
第一行输出该十二进制数每一位对应的十进制数(由高位到低位,以空格隔开)
第二行输出该十二进制数对应的十进制数
第三行输出转换后的十进制数在内存中的每个二进制位(共4个字节,每字节之间空格隔开)
输入样例
a2
输出样例
10 2
122
00000000 00000000 00000000 01111010
矩阵最大值
题目描述
编写一个程序输入一个mXn的矩阵存储并输出,并且求出每行的最大值和每行的总和。
要求把每行总和放入每行最大值的位置,如果有多个最大值,取下标值最小的那一个作为最大值。
最后将结果矩阵输出。
输入格式
输入的第一行包括两个整数m和n(1<=m,n<=100),分别代表矩阵的行和列的维数。
接下来的m行每行有n个数,代表矩阵的元素。
输出格式
可能有多组测试数据,对于每组数据,输出按题目要求执行后的矩阵。
输入样例
3 3
1 1 1
1 1 1
1 1 1
3 3
3 2 3
2 3 2
3 2 3
输出样例
3 1 1
3 1 1
3 1 1
8 2 3
2 7 2
8 2 3
单词个数统计
题目描述
从键盘输入一行英文句子,句子中只有英文单词和空格,每个单词之间用若个空格隔开,英文单词由大小写字母组成,编程完成以下任务:
(1)统计并输出此句子中英文字母的个数;(10分)
(2)统计并输出此句子中单词的个数;(10分)
(3)查找此句子中出现次数最多的字母(不区分大小写,大小写字母是相同的)及次数。当出现最多的字符不止一个时,都能找到,并输出找到的所有字母及次数。(输出字母时大小写均可)
输入格式
输入只有一行句子。仅有空格和英文字母构成,末尾以回车作为结束。(不超过1000个字符)
输出格式
在接下来的每一行分别输出字母个数、单词个数、出现次数最多的字符(不止一个则用空格隔开)、出现的次数。
输入样例
This is An Pencil Case
输出样例
18
5
i s
3
最小年龄的3个职工
题目描述
职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来。
输入格式
输入第一行包括1个整数N,1<=N<=30,代表输入数据的个数。
接下来的N行有N个职工的信息:
包括职工号(整数), 姓名(字符串,长度不超过10), 年龄(1<=age<=100)。
输出格式
可能有多组测试数据,对于每组数据,
输出结果行数为N和3的较小值,分别为年龄最小的职工的信息。
关键字顺序:年龄>工号>姓名,从小到大。
输入样例
5
501 Jack 6
102 Nathon 100
599 Lily 79
923 Lucy 15
814 Mickle 65
输出样例
501 Jack 6
923 Lucy 15
814 Mickle 65
最大的两个数
题目描述
输入一个四行五列的矩阵,找出每列最大的两个数。
输入格式
接下来的四行每行包括五个整数。代表一个四行五列的矩阵,矩阵元素全部是整数。
输出格式
可能有多组测试数据,对于每组数据,按照样例输出的格式将每列最大的两个数输出,如果最大的两个数中的一个数在这一列中有多个相同的值,则行值取行值小的那一个。
输出时要保留原矩阵的行列顺序,即在原矩阵中行值小的,在输出矩阵中的行值依然小。
输入样例
1 2 4 9 8
-1 4 9 8 8
12 9 8 7 0
7 8 9 7 0
输出样例
12 9 9 9 8
7 8 9 8 8
最长&最短文本
题目描述
输入多行字符串,请按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。
输入格式
输入包括多行字符串,字符串的长度len,(1<=len<=1000)。
输出格式
按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。
输入样例
hello
she
sorry
he
输出样例
he
hello
sorry
字符串的操作
题目描述
凯撒密码。
从键盘输入一个由字母组成的字符串,对字符串中的每个字符进行偏移操作,每个字符都向后偏移两个。
即:a->c,Z->B。
然后输出偏移后的每个字符的奇校验码及其对应的十进制数,如果字符中1的个数为偶数,将其最高位置为1。
输入样例
aD
输出样例
原文:aD
密文:cF
c 11100011 227
F 01000110 70
排序去重
题目描述
输入一个长度为n的数组,先将其进行排序输出,然后对排序后的结果去重再次输出
输入样例
6
3 2 3 6 5 6
输出样例
2 3 3 5 6 6
2 3 5 6
奇偶校验
题目描述
输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数(如’3’,输出:10110011)。
输入格式
输入包括一个字符串,字符串长度不超过100。
输出格式
可能有多组测试数据,对于每组数据,
对于字符串中的每一个字符,输出按题目进行奇偶校验后的数,每个字符校验的结果占一行。
输入样例
3
3a
输出样例
10110011
10110011
01100001
十进制加密
题目描述
输入一个占32比特位的十进制正整数,按下述规则输出加密后的十进制整数:
设这个整数的二进制表示为x x x x p p p p x x x x e e e e x x x x e e e e x x x x e e e e ,将其中标记为e的均左移8位,标记为p的右移24位,标记为x的位置不变,输出加密后的数的十进制表示
输入样例
1234
输出样例
262864
删除数字
题目描述
输入两个整数a和n,要求从a中删除n个位置上的数后剩下的数按原来的相对顺序组成的新数最小,求这个数。
输入样例
62354 2
输出样例
234
文件处理
题目描述
文件操作及字符串处理。输入一个源文件abc.c的代码。在abc.c文件中有相当数量的注释,包括//和/…/两种形式的注释。
1、将输入的abc.c文件的内容,将其显示在控制台上,(并为每行代码增加一个行号)。
2、使源代码中的//类型的注释内容不显示在控制台中。
3、使源代码中的/…/类型的注释内容不显示在控制台中。
输入格式
输入多行源代码
输出格式
输出处理过的源代码
输入样例
#include <stdio.h>
/*
这是一个求两数之和的程序
*/
int main() {
int a, b;//定义
//输入
scanf("%d%d", &a, &b);
/* 输出 */
printf("%d\n", a + b);
return 0;
}
输出样例
#include <stdio.h>
int main() {
int a, b;
scanf("%d%d", &a, &b);
printf("%d\n", a + b);
return 0;
}
切牌、洗牌
题目描述
有2-9共八张扑克牌,从小到大依次叠放,需要进行3轮切牌、洗牌的操作(切牌之后立马洗牌,再进行下一轮)。
切牌的定义如下(其实就是循环左移n位):
原序列:2 3 4 5 6 7 8 9
切2张
新序列:4 5 6 7 8 9 2 3
另外,如果切牌张数不在1-7之间,则是无效操作,不移动序列
洗牌的定义如下(就是将序列分为两半,然后交错插在一起):
原序列:4 5 6 7 8 9 2 3
洗牌
新序列:4 8 5 9 6 2 7 3
分别给出三次切牌的张数,问你最后的结果是多少。
输入样例
1 2 3
输出样例
27543698
农夫、羊、菜和狼的故事
题目描述
有一个农夫带一只羊、一筐菜和一只狼过河。如果没有农夫看管,则狼要吃羊,羊要吃菜。但是船很小,只够农夫带一样东西过河。问农夫该如何解此难题?
输入格式
题目没有任何输入。
输出格式
题目可能有种解决方法,求出步骤最少的解决方法,
按顺序输出农夫想把羊、菜、狼全部运过河需要哪几个步骤。
如果需要将羊带过河去则输出“sheep_go”。
如果需要将羊带回来则输出“sheep_come”。
如果需要将菜带过河去则输出“vegetable_go”。
如果需要将菜带回来则输出“vegetable_come”。
如果需要将狼带过河去则输出“wolf_go”。
如果需要将狼带回来则输出“wolf_come”。
如果需要空手返回则输出“nothing_come”。
如果需要空手过河则输出“nothing_go”。
每输出一种方案,输出一行“succeed”。
输入样例
输出样例
sheep_go
nothing_come
wolf_go
sheep_come
vegetable_go
nothing_come
sheep_go
succeed
表达式计算
题目描述
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。
表达式的符号有+, -, *, /, (, ), <<, >>, ^, &, |,
其中定义了几个变量a = 1, b = 2, c = 3, d = 4, e = 5,可能会出现要你计算a+1的情况。
保证表达式合法
输入样例
1+b*3+d/(2-1)+e
输出样例
16
压缩日期
题目描述
给定三个数,分别代表年、月、日,将其压缩为一个16bit的short型整数,要求取年的后两位,然后将其移动到前7位的位置上,将日移动到中间5位,后4位代表月,输出这个数。
另外,如果输入的日期,超过所在月份的最大日期数,则输出当前月份的最大日期。
输入样例
2020 5 20
输出样例
10565
分数转小数
题目描述
编写程序,接受4个以N/D形式输入的分数,其中N(0<=N<=65535)为分子,D(0<=D<=65535)为分母,输出他们的小数形式。
如果小数存在循环节,则用括号括起来,如1/3=.33333…表示为0.(3)。
输入格式
输入4个N/D形式的分数
输出格式
输出N/D=整数部分.小数部分,小数部分如存在循环节则将循环部分用括号括起来。
输入样例
8/5 1/3 11/13 2/15
输出样例
1.6
0.(3)
0.(846153)
0.1(3)