问题描述:
30 个人在一条船上,超载,需要 15 人下船。
于是人们排成一队,排队的位置即为他们的编号。
报数,从 1 开始,数到 9 的人下船。
如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?
解题思路:
该问题中有两个状态,上船与下船,因此需要对这两个状态分别进行标记,常用的即0与1,另需一个记数变量来结束循环,剩余15人为止。另需一变量来表示报数值,并当报数值为9的时候进行状态更改操作。
给30个人编号1-30,使用数组a[30]={0}表示,用于存储每个人的报数值;
使用数组b[30]={0}标记每个人的状态,即在船上还是船下,,这里将每个人的初值标记为0(表示在船上)1表示下船;
i代表他们的编号,当i等于31时,手动将i置为1;
c代表被扔下船的人数(c=15时循环结束);
变量j用来记数,j=9时将对应编号i的人置 0(扔下船)并让j重新记数。
#include<stdio.h>
int c = 0;//c代表被扔下船的人数
int i = 1;
int j = 0;
int a[30] = { 0 };
int b[30] = { 0 };
int main()
{
while (i<=31)
{
if (i == 31)//当i等于31时,手动将i置为1
{
i = 1;
}

最低0.47元/天 解锁文章
384

被折叠的 条评论
为什么被折叠?



