1. 题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.
提示:用数组完成
1 #include<stdio.h>
2 main()
3 {
4 int num_input;
5 int a[1000];
6 int count;
7 int num=1;
8 int jishu=0;
9 printf("please input a number");
10 scanf("%d",&num_input);
11 for(count=1;count<=num_input;count++)
12 {
13 a[count]=count;
14 }
15 while(1)
16 {
17 while(!a[num])
18 {
19 num++;
20 if(num>num_input)
21 {
22 num=1;
23 }
24 }
25 num++;
26 if(num>num_input)
27 {num=1;}
28 while(!a[num])
29 {
30 num++;
31 if(num>num_input)
32 {
33 num=1;
34 }
35 }
36 num++;
37 if(num>num_input)
38 {
39 num=1;
40 }
41 while(!a[num])
42 {
43 num++;
44 if(num>num_input)
45 {
46 num=1;
47 }
48 }
49 a[num]=0;
50 jishu++;
51 while(!a[num])
52 {
53 num++;
54 if(num>num_input)
55 {num=1;}}
56 if(jishu==num_input-1)
57 break;
58 }
59 printf("%d",num);
60 }
虽然实现了功能,但是代码太繁琐了。。。百度上的算法比较简单,但是之前想不到
等下还要按照华为的要求进行规范化处理-ˉ-
提示:用数组完成
1 #include<stdio.h>
2 main()
3 {
4 int num_input;
5 int a[1000];
6 int count;
7 int num=1;
8 int jishu=0;
9 printf("please input a number");
10 scanf("%d",&num_input);
11 for(count=1;count<=num_input;count++)
12 {
13 a[count]=count;
14 }
15 while(1)
16 {
17 while(!a[num])
18 {
19 num++;
20 if(num>num_input)
21 {
22 num=1;
23 }
24 }
25 num++;
26 if(num>num_input)
27 {num=1;}
28 while(!a[num])
29 {
30 num++;
31 if(num>num_input)
32 {
33 num=1;
34 }
35 }
36 num++;
37 if(num>num_input)
38 {
39 num=1;
40 }
41 while(!a[num])
42 {
43 num++;
44 if(num>num_input)
45 {
46 num=1;
47 }
48 }
49 a[num]=0;
50 jishu++;
51 while(!a[num])
52 {
53 num++;
54 if(num>num_input)
55 {num=1;}}
56 if(jishu==num_input-1)
57 break;
58 }
59 printf("%d",num);
60 }
虽然实现了功能,但是代码太繁琐了。。。百度上的算法比较简单,但是之前想不到
等下还要按照华为的要求进行规范化处理-ˉ-