此题利用数组来解决。
从a[0]开始计数,每三个计数初始化一次,第三个数赋值为0(最后留下的那个不为0),每次计数到最后一个元素时,令i=0,又从头开始计数。
1 #include <stdio.h>
2
3 int main()
4 {
5 int n;
6 printf("please input a number:\n");
7 scanf("%d",&n);
8
9 int a[1000];
10 int i,sum;
11 int count = 0;
12 sum=n;
13 for(i=0;i<n;i++)
14 {
15 a[i] = i+1;
16 }
17 i = 0;
18 while (sum > 1)
19 {
20 if(a[i]!=0)
21 {
22 count++;
23 }
24 if(count == 3)
25 {
26 a[i]=0;
27 sum--;
28 count = 0;
29 }
30 i++;
31 if(i == n)
32 {
33 i = 0;
34 }
35 }
36
37 for(i=0;i<n;i++)
38 {
39 if(a[i] != 0)
40 printf("留下来的精英是第%d号\n",i+1);
41 }
42
43 return 0;
44 }