| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 724 人关注过本帖
标题:一个习题看不懂 来个人帮我看看啊
只看楼主 加入收藏
honghong88
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2011-10-16
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
一个习题看不懂 来个人帮我看看啊
#include <iostream>
using namespace std;
int main()
 {int i,k,m,n,num[50],*p;
  cout<<"input number of person: n=";
  cin>>n;
  p=num;
  for (i=0;i<n;i++)
    *(p+i)=i+1;          // 以1至n为序给每个人编号
  i=0;                   // i为每次循环时计数变量
  k=0;                   // k为按1,2,3报数时的计数变量
  m=0;                   // m为退出人数
  while (m<n-1)          // 当退出人数比n-1少时(即未退出人数大于1时)执行循环体
  {if (*(p+i)!=0)  k++;
   if (k==3)             // 将退出的人的编号置为0
     {*(p+i)=0;
      k=0;
      m++;
     }
   i++;
   if (i==n) i=0;        // 报数到尾后,i恢复为0
   }
  while(*p==0) p++;
  cout<<"The last one is NO."<<*p<<endl;
  return 0;



}


红色这段 这个循环体有 可能m>=n-1的时候吗 我的想象在应该是  的 while (m<n-2)的时候 循环体才有 可能结束
搜索更多相关主题的帖子: include person number 
2011-11-15 19:56
jcw08120110
Rank: 8Rank: 8
来 自:南京
等 级:蝙蝠侠
帖 子:272
专家分:742
注 册:2009-6-8
收藏
得分:10 
这时一个出圈游戏  一群人分别给他们编号~ 1~n 一共n个人  要离开n-1个人 最后那个是胜利者~ 也就是意味着要做n-1次循环;而m初始为0;如果以m为循环判断条件;那么就是m从0~n-2 一共 循环 n-1次;

君生我未生 我生君以老
2011-11-16 16:29
心灵百合
Rank: 5Rank: 5
等 级:职业侠客
帖 子:215
专家分:367
注 册:2011-3-30
收藏
得分:10 
可以while(m<=n-1)吧!当m=n-1时;还剩一个人
2011-11-17 17:46
honghong88
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2011-10-16
收藏
得分:0 
我有一点疑问的是  当最后剩下2个人的时候 计数 器 k无法 再等于3  因此也无法 在退出一个人  我认为最近剩下的情况有可能是2个人呢 不知道这样想 对不对
2011-11-17 17:53
快速回复:一个习题看不懂 来个人帮我看看啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025997 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved