全球旧事资料 分类
一共整型的数组,同时,为了方便对翻转过程的记录,在定义记录编号信息的同时,定义一个与之相对应的标记数组,数组类型为整型。该程序的核心为一个嵌套的循环,所以定义两个变量ij作为循环条件。
接着开始对变量进行初始化,首先是编号信息数组,使用for循环对数组进行1到52的赋值,代表52纸牌,然后对标记数组赋值,将数组的所有的值初始化为零,方便在接下来的循环中统计每牌的翻牌数。数据初始化结束后,开始按照要求对纸牌进行翻转,在嵌套循环中,定义了一个全局变量Flag,值为1,负数定义为向下,正数定义为向上,这样,翻转一次,即乘以Flag,同时,符合翻
S


f


转条件时,标记数组相应的编号的纸牌翻牌次数1。当每个每次遇到是某个数的倍数时,都会相应的翻一次,这样,每牌会翻的
次数就各不一样,可能很多次,也可能只有一两次,结果就只是要输出在经过各个不同次数的翻牌后,正面向上的牌都有哪几个。举例说明一下,比如24,第一次它是2的倍数时要从正面翻到背面,当进行到3时,就又要从背面翻回来,而到4时还要在翻,同理呢,到6812…它都要来回的翻。如果它在多次的翻牌后,正面还向上了,那么它就是要输出的结果之一。
循环结束后,编号数组中的数据已经更新,因此对数组进行扫描,大于零的即为正面向上的纸牌,输出其编号即可,同时,输出标记数组中的值,显示每牌的翻牌记录,方便观察或者寻找规律。到此,整个题目结束。
22设计原始数据的输入及输出格式
原始数据要求输入纸牌的基础编号,编号的输入为整型。输出的是经过规律翻转后正面向上的纸牌的编号。输入的数据信息如下:纸牌:1、2、3……、51、52。
问题直观分析表:
123456789101112……
1
2






3




4



5


6


7

8

S


f
9101112………………
(注:图中“√”表示翻转一次。)


√√√√………………
S


f
23算法流程图


S


f


开始
设一个一维数组card52,并将所有变量赋初值为0,表示牌正面朝上
2j
j≤52jk
k≤52
j
kj0
翻牌,如果cardk1为0,则变为1;如果为1,则变为0
k
输出card数组中正面朝上的牌的序号
结束
21:算法设计图
S


f


3设计与实现
31数据结构
按照题目要求,整个主体包括一个嵌套的循环,外循环控制从2开始每纸牌都作为基数进行翻牌,循环控制对所有纸牌进行判断,如果是当前r
好听全球资料 返回顶部