|  | 
 
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前没有加& |