求幸运数字
n个人站成一个圈,然后报数,隔个的就出去,剩下的两个数字是幸运数字,3<=n<=50;比如说 1,2,3,4,5,6 则2463出队 1,5是幸运数字 1,2,3,4,5 则2,4,1出队 3,5是幸运数字
看一下我的程序:
#include "iostream.h"
void pd(int *,int );
void pd1(int *,int );
void main()
{
int n,i,*p,*r;
cin>>n;
if(n<3||n>50)
cout<<"请正确输入:";
else
for(i=0;i<n;i++)
{
*p=i+1;
p++;
}
r=p-n;
pd(r,n);
}
void pd(int *p,int n)
{
int *q,*k;
if(n%2==0) //如果n是偶数就把隔空数输出
{ //
//
for(int i=0;i<n;i=i+2) //就把隔个数字输出
{
cout<<*(p+1)<<" ";
p=p+2;
}
p=p-n;
for( i=0;i<n/2;i++)//把剩下的留下来放在一个数组中 再去判断
{
*q=*p;
p=p+2;
q++;
}
p=p-n/2;
n=i;
}
else //n为奇数时
{
for(int i=0;i<n;i=i+2)//先把隔个数字输出
{
cout<<*(p+1)<<" ";
p=p+2;
}
*k=*(p+1);//n是奇数话,最后一个将是幸运数字,所以要保留 把他放在数组的第一个位置;
k++;
for(i=1;i<n/2+1;i++)//然后把保留的数字保留继续去判断
{
*k=*p;
p=p+2;
k++;
}
p=p-n/2-1,n=i;
}
if(n<3)
for(int i=0;i<n;i++)//如果是小于3,直接输出幸运数
{
cout<<*p;
p++;
}
else
pd(p,n);
}
他显示只有警告 但是不见运行的窗口 麻烦大家帮我看一下 或者觉得有更好的程序 可以发给我看看 谢谢!!!!