一、单选题
1、执行 cout << '9'*3; 语句后,输出的结果是( )。
A 27
B 9*3
C 999
D 171
2、已定义: int a = 02023, b = 0x212; a + b 的值是( )。
A 八进制数4771
B 十进制数1573
C 十进制数2553
D 十六进制数9f9
3、执行以下代码,输出的结果是( )。
using namespace std;
int func(int x)
{
if (x <= 4)
return 2 * x - 1;
else if (x > 7)
return func(x - 4) + x;
else
return func(x + 3) + 2;
}
int main()
{
cout << func(10);
return 0;
}
A 26
B 29
C 38
D 45
4、下列选项中,判断a不等于0且b不等于0的正确的条件表达式是( )。
A !(a==0 && b==0)
B !a=0 && !b=0
C a && b
D !((a!=0) && (b!=0))
5、执行语句 int a[3][4] = {{1, 2}, {3}, {4, 5, 6, 7}}; 后,a[1][2] 和a[2][1] 的值分别为:( )。
A 2、3
B 0、5
C 2、5
D 5、0
二、实操题
6、促销活动
【题目描述】
某超市搞促销活动,活动内容:购物金额每满200元(含200元)就可以享受“满200减25”的优惠。已知小维的购物金额为N(1<N≤1000000),请计算出享受优惠后他需要支付多少元。例如:N=430 ,380 元(380=430-2×25)。
【输入格式】
输入一个正整数N(1<N≤1000000),表示购物金额(单位:元)
【输出格式】
输出一个正整数,表示享受优惠后需要支付的金额(单位:元)
【样例输入】
430
【样例输出】
380
参考答案:根据题目描述,当购物金额每满200元(含200元)就可以享受“满200减25”的优惠。因此,我们需要计算N中200的整数倍有多少个,然后计算需要减去的金额,最后得到享受优惠后需要支付的金额。具体步骤如下:1. 计算N中200的整数倍有多少个,设为k;2. 计算需要减去的金额,即25×k;3. 计算享受优惠后需要支付的金额,即N-25×k。
7、相邻身高差
时间限制:1000MS
内存限制: 65536KB
题目描述:
有N (4<N<100) 名同学站成一队,已知每名同学的身高 (单位: 厘米),请比较该队中任意相邻两名同学的身高差(取正值),并输出最大的身高差。
例如: N = 8,8名同学的身高分别是 151、120、144、182、160、158、147、161.相邻两名同学的身高差依次是31、24、38、22、2、11、14,其中最大身高差是 38.
输入描述
第一行输入一个正整数 N (4N<100),表示站队的同学人数
第二行输入N个正整数(80<正整数<220),表示队列中学生的身高(单位: 厘米),相邻两个正整数之间用一个空格隔开
输出描述
输出一个非负整数,表示相邻两名同学中最大身高差。
样例输入
8 151 120 144 182 160 158 147 161
样例输出
38
参考答案:```#include
8、九进制回文数
提示信息
回文数: 反向排列与原来一样的数就叫做回文数
例如,12321 是回文数,1231 不是回文数。
九进制数: 指逢9进位的一种进位计数制,以0、1、2、3、4、5、6、7、8共九个数码表示。例如: 十进制数 9等于九进制数 10,十进制数 81 等于九进制数 100,以此类推.
时间限制:1000MS
内存限制:65536KB
题目描述:
给定两个正整数N和M (1SNsMs5000),请计算出N到M之间 (含N和M) 总共有多少个数满足以下条件:
1、转换为九进制之后为回文数:
2、转换为九进制后每个数位上的数字都是奇数
例如:
当N=90,M=120,90到 120之间(含90和120) 总共有2 个数满定条件,为91 和109;
91 转换为九进制为 111,是一个回文数,且每个数位上的数字都是奇数;
109 转换为九进制为 131,是一个回文数,且每个数位上的数字都是奇数;
故输出2。
输入描述:
输入两个正整数N 和 M (1<N<M<5000),两个正整数之间用一个空格隔开
输出描述
输出一个整数,表示 N到M之间 (含 N和 M) 总共有多少个满足条件的正整数
样例输入
90 120
样例输出
2
参考答案:输入两个正整数N和M,输出N到M之间(含N和M)满足条件的正整数个数。
9、收集宝石
题目描述:
聪聪在玩冒险岛游戏,为了召唤法力更强大的神龙,他必须尽可能收集更多的魔法宝石,每颗宝石都有不同的功效。不过在游戏里,几乎每一颗魔法宝石都会和另外一颗宝石相冲。相冲表示这两颗宝石不能同时拥有。例如,宝石A和宝石B 相冲,那么,你可以选择两颗宝石都不收集,也可以只收集宝石A 或者只收集宝石 B,但不能同时拥有宝石 A和宝石B现在给定了游戏里宝石的数量N(2≤N≤100),宝石从1到N依次编号,并给出M对(2≤M≤2000)相冲的宝石编号,请帮聪聪计算出最多能够收集到多少颗宝石。
例如: N=6,M=8时,6颗宝石的编号分别为 1、2、3、4、5、6,其中有8对相冲的宝石,对应编号如下:
1 2
2 3
2 4
2 5
2 6
3 4
4 5
5 6
这表示宝石1和宝石2相冲,宝石2和宝石3,4,5都相冲,宝石3和宝石4相冲,宝石4和宝石5相冲,宝石5和宝石6 相冲。
有三个方案收集到的宝石数量最多: (1 3 5)、(1 3 6)、(1 4 6),这些方案里,最多收集到的宝石数量都是3,所以程序输出3。
输入描述
第一行输入两个正整数N和 M(2≤N≤100,2≤M≤2000),分别表示游戏里的宝石数量和 M 对相冲的宝石,两个正整数之间用一个空格隔开。
接下来输入 M 行,每行两个正数,分别表示相冲的两颗宝石的编号,两个正整数之间用一个空格隔开
输出描述
输出一个整数,表示聪聪在游戏里最多能够收集到的宝石数量
样例输入
6 8 1 2 2 3 2 4 2 5 2 6 3 4 4 5 5 6
样例输出
3
参考答案:根据题目描述,我们可以使用图论中的最大团问题来解决这个问题。首先,我们可以将宝石看作图中的节点,如果两颗宝石相冲,则它们之间有一条边相连。这样,问题就转化为在图中找到最大的团,即最大的宝石集合,使得集合中的任意两颗宝石都不相冲。为了找到最大的团,我们可以使用回溯法来枚举所有可能的宝石集合,然后检查是否存在一个集合,使得集合中的任意两颗宝石都不相冲。回溯法的时间复杂度是指数级的,但是对于本题来说,宝石的数量最多只有100,所以回溯法是可以接受的。具体实现时,我们可以使用一个布尔数组来表示宝石的收集状态,数组的每个元素对应一个宝石,如果宝石被收集,则对应位置的元素为true,否则为false。然后,我们可以从空集开始,依次尝试添加宝石到集合中,直到无法添加更多的宝石为止。在添加宝石的过程中,我们需要检查新加入的宝石是否与集合中的任意一颗宝石相冲,如果相冲,则不能加入。最后,我们返回收集到的宝石数量最多的集合即可。
10、简易炸弹超人
【题目描述】
有一块矩形游戏场地,场地被分成N×M的网格(4≤N≤100 ,4≤M≤10),其中一部分小方格是水域,另一部分小方格是陆地。
为防御敌军攻击,玩家需要在游戏场地安置炸弹:
1. 炸弹只能安置在陆地上;
2. 每颗炸弹爆炸后,可以波及到炸弹所在的小方格,及相邻的上、下、左、右小方格;
3. 任意两颗炸弹爆炸后不能波及到同一个小方格。
请帮助玩家计算出如何安置炸弹,可以使炸弹波及到的范围最大,输出最多可以波及到的小方格数量。
例如:N=4,M=4,网格中水域和陆地的情况如图1所示:
图中,蓝色区域代表水域,绿色区域代表陆地;安置炸弹的最优方案之一如图2所示;炸弹波及的范围如图3所示(黑色区域)。
这块4×4的矩形游戏场地最多可以波及到11个小方格,其他方案都不会优于这个结果
【输入格式】
第一行输入两个正整数N和M(4≤N≤100 ,4≤M≤10 ),分别表示网格的行数和列数,两个正整数之间以一个空格隔开
接下来输入N行,每行M个字符(字符只能是大写字母A或B),A表示水域,B表示陆地,字符之间以一个空格隔开.
【输出格式】
输出一个整数,表示最多可以波及到的小方格数量
【样例输入】
4 4 B A A A A B A B B A B B A B A A
【样例输出】
11
参考答案:首先,我们需要读取输入的行数和列数,以及每个方格的状态(水域或陆地)。然后,我们可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来遍历每个陆地方格,并尝试放置炸弹。对于每个陆地方格,我们可以递归地搜索其相邻的方格,并标记它们为已访问。如果相邻的方格已经被访问,则不能放置炸弹。最后,我们可以计算访问的方格数量,并更新最大访问方格数。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!