目录
习题1、
#include <iostream>
using namespace std;
int main()
{
int i, k, m, n, num[50], * p;
cin >> n;
p = num;
for (int j = 0;j < n;j++)
{
*(p + j) = j + 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 << *p << endl;
return 0;
}
习题2、
#include<iostream>
using namespace std;
int main()
{
int a[50];
int n;
cin>>n;
for(int i=0;i<n;i++)
{
a[i]=i+1;
}
int i=0,k=0,m=0;
while(m<n-2) //不同
{
if(a[i]!=0)
{
k++;
}
if(k==2) //不同
{
cout<<a[i]<<" ";
a[i]=0;
m++;
k=0;
}
i++;
if(i==n) i=0;
}
cout<<endl;
for(int j=0;j<n;j++)
if(a[j]!=0)
cout<<a[j]<<" ";
return 0;
}