码迷,mamicode.com
首页 > 编程语言 > 详细

C语言 百人拉百灯问题

时间:2014-09-08 00:59:36      阅读:335      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   ar   strong   for   2014   

题目:

有100人,编号从1到100; 另有100盏灯,编号也从 1到100. 现要求每人去拉能被自己编号整除的所有电灯, 例如编号为1者应把所有的灯都拉一遍, 编号为2者应把所有编号为偶数的灯都拉一遍,而  编号为100者只能拉编号为100的灯. 假设一开始 所有的电灯都是灭的,那么最后有几盏灯是亮的? 编号分别是多少?

要求:

定义两个函数:                       
      void switch_light(int light[], int man);
      int lights_on(int *light, int *on); 

           
   main()中定义一个数组light,各个元素的值表示
   各盏灯的亮灭状态(比如1表示亮,0表示灭),再
   定义另外一个数组on,各个元素的值表示最后亮
   着的灯的编号。


   switch_light()的作用是编号为man的人尝试拉可
   以被他编号整除的灯,结果影响数组light各元素
   的值;


   lights_on()统计一共有几盏灯是亮的,并把亮着
   的灯的编号存放到on中,返回值是亮着的灯总数。

程序:

 

 1 #include <stdio.h> 
 2 #define LIGHT 100 
 3 int main(void)
 4 {
 5     int i, j, a[LIGHT + 1] = { 0 }, count = 0;
 6     for (i = 1; i <= LIGHT; i++)
 7     for (j = i; j <= LIGHT; j += i)
 8         a[j] ^= 1;
 9     printf("●:亮 ○:暗\n");
10     for (i = 1; i <= LIGHT; i++)
11     {
12         if (a[i])
13         {
14             printf("");
15             count++;
16         }
17         else printf("");
18     }
19     printf("\n总计 %d 盏灯亮着", count);
20     return 0;
21 }

 

bubuko.com,布布扣

 

 1 #include <stdio.h>
 2 int main()
 3 {
 4     void switch_light(int light[], int man); 
 5     int lights_on(int *light, int *on);
 6     int i,man,light[101]={0},on[100],sum;
 7     for(man=1;man<=100;man++)
 8         switch_light(light,man);
 9     sum=lights_on(light,on);
10     printf("last there are %d lights on!\n",sum); 
11     printf("these lights are:");
12     for(i=0;i<sum;i++)printf("%d   ",on[i]);
13 }
14 void switch_light(int light[], int man)
15 {
16     int i;
17     for(i=man;i<=100;i++)
18     if(i%man==0)
19     {
20         if(light[i]==0)
21             light[i]=1; 
22         else light[i]=0;
23     }
24 }
25 
26 int lights_on(int *light, int *on)
27 {
28     int i,j=0;
29     for(i=1;i<=100;i++)
30     if(light[i]==1)
31     {
32         on[j]=i; j++;
33     }
34     return(j);
35 }

 

bubuko.com,布布扣

 

C语言 百人拉百灯问题

标签:style   blog   http   color   io   ar   strong   for   2014   

原文地址:http://www.cnblogs.com/yfzhang/p/3960989.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!