青少年软件编程C++二级题库(41-50)

41 、二进制分类
若将一个正整数化为二进制数,在此二进制数中,我们将数字 1 的个数多于数
字 0 的个数的这类二进制数称为 A 类数,否则就称其为 B 类数。
例如:
(13)10=(1101)2,其中 1 的个数为 3,0 的个数为 1,则称此数为 A 类数;
(10)10=(1010)2,其中 1 的个数为 2,0 的个数也为 2,称此数为 B 类数;
(24)10=(11000)2,其中 1 的个数为 2,0 的个数为 3,则称此数为 B 类数;
程序要求:求出 1~1000 之中(包括 1 与 1000),全部 A、B 两类数的个数。
输入
(无)
输出
一行,包含两个整数,分别是 A 类数和 B 类数的个数,中间用单个空格隔开。
42 、十六进制转十进制
输入一个十六进制数,输出相应的十进制数。
十六进制的基数是 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f。
输入
输入有若干行,每行表示一个十六进制的数。
输出
输出每个十六进制数对应的十进制数。
样例输入
a1
1a
110
样例输出
161
26
272
43 、十进制转十六进制
十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 共 16 个符号,分别表示十进制数的 0 至 15。十六
进制的计数方法是满 16 进 1,所以十进制数 16 在十六进制中是 10,而十进制的 17 在
十六进制中是 11,以此类推,十进制的 30 在十六进制中是 1E。
给出一个非负整数,将它表示成十六进制的形式。
输入格式
输入包含一个非负整数 a,表示要转换的数。0<=a<=2147483647
输出格式
输出这个整数的 16 进制表示
样例输入
30
样例输出
1E
44 、简单密码
Julius Caesar 曾经使用过一种很简单的密码。对于明文中的每个字符,将它用它
字母表中后 5 位对应的字符来代替,这样就得到了密文。比如字符 A 用 F 来代替。如下
是密文和明文中字符的对应关系。
密文
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
明文
V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
你的任务是对给定的密文进行解密得到明文。
你需要注意的是,密文中出现的字母都是大写字母。密文中也包括非字母的字符,
对这些字符不用进行解码。
输入
一行,给出密文,密文不为空,而且其中的字符数不超过 200。
输出
输出一行,即密文对应的明文。
样例输入
NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX
样例输出
IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES
45 、蛇形填充数组
用数字 1,2,3,4,...,n*n 这 n2 个数蛇形填充规模为 n*n 的方阵。
蛇形填充方法为:
对于每一条左下-右上的斜线,从左上到右下依次编号 1,2,...,2n-1;按编号从小
到大的顺序,将数字从小到大填入各条斜线,其中编号为奇数的从左下向右上填写,编
号为偶数的从右上到左下填写。
比如 n=4 时,方阵填充为如下形式:
1 2 6 7
3 5 8
13
4 9
12 14
10 11 15 16 内部资料 请勿外传 翻印必究
123 页 共 251
输入:输入一个不大于 10 的正整数 n,表示方阵的行数。
输出:输出该方阵,相邻两个元素之间用单个空格间隔。
样例输入:4
样例输出
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
46 、图像相似度( 2021 真题)
给出两幅相同大小的黑白图像(用 0-1 矩阵)表示,求它们的相似度。
说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素
点。两幅图像的相似度定义为相同像素点数占总像素点数的百分比。
输入
第一行包含两个整数 m 和 n,表示图像的行数和列数,中间用单个空格隔开。1 <= m
<= 100, 1 <= n <= 100。 之后 m 行,每行 n 个整数 0 或 1,表示第一幅黑白图像上各
像素点的颜色。相邻两个数之间用单个空格隔开。 之后 m 行,每行 n 个整数 0 或 1,表
示第二幅黑白图像上各像素点的颜色。相邻两个数之间用单个空格隔开。
输出 内部资料 请勿外传 翻印必究
一个实数,表示相似度(以百分比的形式给出),精确到小数点后两位。
样例输入
3 3
1 0 1
0 0 1
1 1 0
1 1 0
0 0 1
0 0 1
样例输出
44.44
47 、和为给定数( 2021 真题)
给出若干个整数,询问其中是否有一对数的和等于给定的数。
输入
共三行: 第一行是整数 n(0 < n <= 100,000),表示有 n 个整数。 第二行是 n 个
整数。整数的范围是在 0 到 10^8 之间。 第三行是一个整数 m(
0 <= m <= 2^30),表示
需要得到的和。
输出
若存在和为 m 的数对,输出两个整数,小的在前,大的在后,中间用单个空格隔开。
若有多个数对满足条件,选择数对中较小的数更小的。若找不到符合要求的数对,输出
一行 No。
样例输入
4
2 5 1 4
6
样例输出
1 5
48 、计算两个日期之间的天数 ( 2021 真题)
给定两个日期,计算相差的天数。比如 2010-1-1 和 2010-1-3 相差 2 天。
输入
共两行: 第一行包含三个整数 startYear,startMonth,startDay,分别是起始年、
月、日。 第二行包含三个整数 endYear,endMonth,endDay,分别是结束年、月、日。 内部资料 请勿外传 翻印必究
127 页 共 251
相邻两个整数之间用单个空格隔开。 年份范围在 1~3000。保证日期正确且结束日期不
早于起始日期。
输出
输出一个整数,即是两个日期相差的天数。
样例输入
2008 1 1
2009 1 1
样例输出
366
提示:闰年被定义为能被 4 整除的年份,但是能被 100 整除而不能被 400 整除的年
是例外,它们不是闰年。闰年的 2 月份有 29 天。
解题思路: 直接算两个日期距离公元元年 1 月 1 日的天数然后相减
//直接算两个日期距离公元元年 1 月 1 日的天数然后相减
49 、石头剪刀布( 2021 真题)
石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出
拳一样,则不分胜负。
一天,小 A 和小 B 正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的,比如:
“石头-布-石头-剪刀-石头-布-石头-剪刀……”,就是以“石头-布-石头-剪刀”为周
期不断循环的。请问,小 A 和小 B 比了 N 轮之后,谁赢的轮数多?
输入
输入包含三行。 第一行包含三个整数:N,NA,NB,分别表示比了 N 轮,小 A 出拳
的周期长度,小 B 出拳的周期长度。0 < N,NA,NB < 100。 第二行包含 NA 个整数,表
示小 A 出拳的规律。 第三行包含 NB 个整数,表示小 B 出拳的规律。 其中,0 表示“石
头”,2 表示“剪刀”,5 表示“布”。相邻两个整数之间用单个空格隔开。
输出
输出一行,如果小 A 赢的轮数多,输出 A;如果小 B 赢的轮数多,输出 B;如果两人
打平,输出 draw。
样例输入
10 3 4
0 2 5
0 5 0 2
样例输出
A
提示:对于测试数据,猜拳过程为:
A:0 2 5 0 2 5 0 2 5 0
B:0 5 0 2 0 5 0 2 0 5
A 赢了 4 轮,B 赢了 2 轮,双方打平 4 轮,所以 A 赢的轮数多。
50 、最长最短单词( 2021 真题)
输入 1 行句子(不多于 200 个单词,每个单词长度不超过 100),只包含字母、空
格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。
试输出第 1 个最长的单词和第 1 个最短单词。
输入
一行句子。
输出
两行输出: 第 1 行,第一个最长的单词。 第 2 行,第一个最短的单词。
样例输入
I am studying Programming language C in Peking University
样例输出
Programming
I
提示
如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值