源程序:
#include <stdio.h>
int main()
{
int n, i;
int mark = 0;
printf("请输入一个正整数n:\n");
scanf("%d", &n);
int sum = n; //用来计总数
int arr[n];
for (i = 0; i < n; i++)
{
arr[i] = i + 1;
}
for (i = 0; ; i++)
{
if (i == n) //到末尾了继续下一轮
{
i = 0;
}
if (arr[i] != 0) //下面定义循环到3赋值0,不是0就继续,mark是标记的位置
{
mark++;
}
else
{
continue;
}
if(mark % 3 == 0) //这个就是从0一直加,到三的倍数就赋值为0,总数-1
{
arr[i] = 0;
sum--;
}
if (sum == 1) //还剩一个就退出
{
break;
}
}
for (i = 0; i < n; i++)
{
if (arr[i] != 0)
{
printf("最后剩下的是%d\n", arr[i]);
}
}
return 0;
}
运行结果: