一、实操题
1、设有下列的算式:
求出口中的数字,并打印出完整的算式来。
参考答案:口中的数字为:$6$。完整的算式为:$3 \times 8 - 12 \div 2 = 24 - 6 = 18$。
2、方阵填数:在一个NN的方阵中,填入1,2,……NN个数,并要求构成如下的格式:
例:
参考答案:由于题目没有给出具体的方阵和N的值,所以无法直接给出具体的填数方案。但我们可以根据题目中给出的示例,推导出方阵填数的一般规律。根据示例,可以看出方阵中的数字是按照从左到右、从上到下的顺序进行填写的。例如,在3x3的方阵中,数字1填在左上角,数字2填在数字1的右边,数字3填在数字2的下面,以此类推。因此,对于任意的NxN方阵,我们可以按照从左到右、从上到下的顺序填写数字1到N。
3、若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数。
例如:
其中1的个数为3,0的个数为1,则称此数为A类数;
其中1的个数为2,0的个数也为2,称此数为B类数;
其中1的个数为2,0的个数为3,则称此数为B类数;
程序要求:求出1~1000之中(包括1与1000),全部A、B两类数的个数。
参考答案:在1~1000之中,A类数的个数为495,B类数的个数为505。
4、编码问题:设有一个数组A:ARRAY[0..N-1] OF INTEGER;数组中存放的元素为0~N-1之间的整数,且A[i]≠A[j](当i≠j时)。
例如:N=6时,有: A=(4,3,0,5,1,2)
此时,数组A的编码定义如下:
A[0]的编码为0;
A[i]的编码为:在A[0],A[1],……A[i-1]中比A[i]的值小的个数(i=1,2……N-1)
∴上面数组A的编码为: B=(0,0,0,3,1,2)
程序要求解决以下问题:
①给出数组A后,求出其编码;
②给出数组A的编码后,求出A中的原数据。
参考答案:br />对于数组A的编码问题,可以按照以下步骤进行:① 对于数组A的编码,我们需要遍历数组A中的每个元素,计算该元素前面比它小的元素的个数,然后将这个个数作为该元素的编码。具体实现可以使用一个计数器,从数组的第一个元素开始,依次遍历数组中的每个元素,每次遍历都将计数器清零,然后再次遍历该元素前面的所有元素,统计比该元素小的元素的个数,将该个数作为该元素的编码。最后得到数组B,即为数组A的编码。② 对于已知数组A的编码B,我们需要从数组A的第一个元素开始,依次遍历数组中的每个元素,将每个元素的编码作为索引,从数组B中取出对应位置的元素值,如果该值小于当前遍历到的元素,则计数器加一,最后得到数组A中的原数据。
5、灯的排列问题:设在一排上有N个格子(N≤20),若在格子中放置有不同颜色的灯,每种灯的个数记为N1,N2,……Nk(k表示不同颜色灯的个数)。
放灯时要遵守下列规则:
①同一种颜色的灯不能分开;
②不同颜色的灯之间至少要有一个空位置。
例如:N=8(格子数)
R=2(红灯数)
B=3(蓝灯数)
放置的方法有:
放置的总数为12种。
数据输入的方式为:
N
P1(颜色,为一个字母) N1(灯的数量)
P2 N2
……
Q(结束标记,Q本身不是灯的颜色)
程序要求:求出一种顺序的排列方案及排列总数。
参考答案:对于灯的排列问题,首先需要根据输入的颜色和数量,按照规则进行排列。具体步骤如下:1. 读取输入,直到遇到结束标记Q。2. 对于每种颜色,按照数量依次放置,同一种颜色的灯不能分开。3. 不同颜色的灯之间至少要有一个空位置。4. 重复步骤2和3,直到所有灯都放置完毕。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!