|
10鱼币
本帖最后由 巴巴鲁 于 2020-7-9 14:54 编辑
问题:n个人围成一圈,并从1到n编号。轮流喊1,2,3,喊到3的出局,
循环往复,问最后剩的一个人的起始编号为多少?
我写的代码如下:
#include <stdio.h>
int main(void)
{
int n;
printf("请输入有几个人围成一圈:");
scanf("%d", n);
int a[n];
int i, j, k;
for(i = 0; i < n; i++)
{
a[i] = i + 1; // 数组编号从1 ~ n
}
i = j = k = 0;
while(k < n - 1)
{
if(a[i])
{
j++;
}
if(j == 3)
{
a[i] = 0; //当报数为3时,令其为0
j = 0;
k++;
}
i++;
if(i == n)
{
i = 0; // i = n时表示一圈结束,重新开始
}
}
for(i = 0; i < n; i++)
{
if(a[i]) // 遍历寻找最后结果不为0的
{
printf("%d\n",a[i]);
break;
}
}
return 0;
}
发帖子的时候,用编辑器上面的 <> 按钮发代码就不会丢i了
你的程序问题是scanf的时候,n前没有加&
|
最佳答案
查看完整内容
发帖子的时候,用编辑器上面的 按钮发代码就不会丢i了
你的程序问题是scanf的时候,n前没有加&
|