注册 登录
编程论坛 C++教室

1 到 3 报数

於晓琪123 发布于 2014-11-20 19:51, 351 次点击
#include
using namespace std;
int main()
{
    int i,k,m,n,num[50],*p;
    cout<<"input";
    cin>>n;
    p=num;
    for(i=0;i<N;I++)
        *(p+i)=i+1;
      i=0;
      k=0;
      m=0;
      while(m<N-1)
      {
          if(*(p+i)!=0)
              k++;
          if(k==3)
          {
              *(p+i)=0;
              k=0;
              m++;
          }
          i++;
          if(i==n)
              i=0;

      }
     while(*p==0)
         p++;
     cout<<"the last one is on"<<*p<<ENDL;
     return 0;
}
这个代码的中文算法是什么 有木有看懂的解释一下     就是n个人绕一个圈  1到3报数  最后一个人原来的编号
2 回复
#2
天使梦魔2014-11-20 21:26
程序代码:
int main()

 {
     int i,k,m,n,num[50],*p;//还不知道
     cout<<"input";//输出文字
     cin>>n;//输入一个数
     p=num;//指针指向num[0]
     for(i=0;i<N;I++)//循环输入数字的次数
         *(p+i)=i+1;//操作num数组从0开始加1
       i=0;//不知道
       k=0;//不知道
       m=0;//不知道
       while(m<N-1)//再次循环输入数字的次数
       {
           if(*(p+i)!=0)//sum数组从0开始判断如果不等于0
               k++;//不知道
           if(k==3)//如果本次while循环让上面if满足3次
           {
               *(p+i)=0;//本次sum数组所在的数字为0
               k=0;//重置k计数,以便第一个if使用
               m++;//m标签应该记录本次条件满足了多少次
           }
           i++;//指针增加
           if(i==n)//当指针等于输入的数组的时候
               i=0;//重置指针
       }
      while(*p==0)//指针现在所指向sum数组的某一个位置时候,并且判断它是否为0
          p++;//我估计是循环找到sum里不为0的数,当它为0时p指针会移动自己
      cout<<"the last one is on"<<*p<<ENDL;//输出位置是第几个
      return 0;

 }
#3
午夜小学仔2014-11-25 00:15
1到3报数,最后一个人的下一个人的原本编号
1