- 论坛徽章:
- 0
|
这是我当初刚学C++的时候,用最笨的方法写的程序!
大家都不回,那我就抛砖引玉!:em11::em11:
# include<iostream>
int main()
{
int a,j,*p,b; //用j来计算每数3次跳一个,用b来计算已经跳下去的人数
int s[100];
using namespace std;
cout<<"请输入船上的人数(3-100):"<<endl;
cin>>a;
s[0]=1;
p=&s[0];
b=0;
for(int i=1;i<a;i++)
s[i]=s[i-1]+1; //为数组中每个元素附值,为每个人定位(从1到a)
for(i=0,j=1;i<a;i++,j++)
{
if(*(p+i)!=0) //判断该元素是否为0(0表示以跳海的人)
{
if(j%3==0) //判断是否数到了3
{
*(p+i)=0; //将这个位置的元素值为0(表示此人已跳海)
b=b+1; //将跳海人数加1
}
}
else j=j-1; //如果该元素为0,将j减1,即此处不算一次(表示跳过此元素)
if(i==a-1) //判断是否到了数组最后
{
p=&s[0]; //将指针重新指向数组首地址
i=-1; //将i也相应的值为首地址的值
}
if(b==a-1) //判断是否只剩下一个活着的人
break; //剩下一个活着的人时退出循环
}
for(i=0;i<a;i++)
{
if(s[i]!=0) //找数组中剩下的唯一的非零数,即唯一活着的人
cout<<s[i]<<endl; //输出此人的位置
}
return 0;
} |
|