http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 6407|回复: 9

[C#语言基础] 开灯关灯问题。。。

[复制链接]
发表于 2013-12-10 14:33:06 | 显示全部楼层 |阅读模式
刚才在光逻辑吧发现者道题 思考了下可以编程实现的嘛,,,大神们快贴出你们的代码给小生我瞧瞧{:soso_e142:}

有100个灯泡,每个都有自己的序号,从1—100,每个都有各自的拉线开关,
  且现在均处于关闭状态;另有100个同学,第一名同学把1的倍数序号的灯泡开
  关拉了一次,然后第二名同学把2的倍数序号的灯泡又拉了一次,之后第三名同
  学把3的倍数序号的灯泡再拉一次……依此类推,直至第100名同学拉完。问:这
  是有哪些个序号的灯泡是亮着的?   



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-12-15 14:21:42 | 显示全部楼层
不考虑格式,简要的代码如下:
[C#] 纯文本查看 复制代码
  
 // 100个数,代表100盏灯,默认初始化为0
            int []all = new int[100];
            // 100个人开始拉灯
            for (int i = 1; i <= 100;i++ )
            {
                // 100盏灯进行判断
                for (int j = 1; j <= 100;j++ )
                {
                    // 逻辑判断
                    if ( j%i == 0)
                    {
                        all[j-1]++; // 注意数组是从0开始
                    }
                }
            }
            // 判断最终结果,拉一次数字加1,因为初始状态为关,所以可以认为奇数为开,偶数为关。
            for (int k = 0; k < 100;k++ )
            {
                if ( all[k] % 2 != 0)
                {
                    Console.WriteLine("{0}号灯亮着", k+1);
                }
            }

最终结果如图:
无标题.png
发表于 2013-12-10 22:42:25 | 显示全部楼层
本帖最后由 mydebug 于 2015-12-29 11:41 编辑

int[] arr = new int[100];
            for (int i = 1; i <= 100; i++)
            {
                for (int j = 0; j < arr.Length; j++)
                {
                    if ((j + 1) % i == 0)
                    {
                        arr[j] = arr[j] == 1 ? 0 : 1;
                    }
                }
            }
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr == 1)
                {
                    Console.WriteLine("第"+(i+1) + "个灯是亮着的");
                }
            }
 楼主| 发表于 2013-12-11 11:36:27 | 显示全部楼层
mydebug 发表于 2013-12-10 22:42
先定义一个数组arr用来放100个灯泡,每个默认值都是“灭”的值

for(int i=1;i

{:soso_e112:}这是我写的
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i,j;
int arr[101];
    for(i=0;i<101;i++){  //0为灭 1为亮
  arr=0;
    }
    for(i=1;i<101;i++){
  for(j=1;j<101;j++){
   if(j%i==0){            
    if(arr[j]==0)
     arr[j]=1;
                    else if(arr[j]==1)
                    arr[j]=0;
            }
        }
        
     }
        printf("还有以下灯亮着:");
        for(i=0;i<101;i++){
   if(arr==1)
    printf("%d  ",i);
    }

system("pause");
return 0;
}
发表于 2013-12-11 12:38:32 | 显示全部楼层
zk9474 发表于 2013-12-11 11:36
这是我写的
#include
#include

判断原来的状态有点多余
发表于 2014-1-2 16:31:10 | 显示全部楼层
本帖最后由 aixuexi 于 2014-1-2 16:35 编辑

[C#] 纯文本查看 复制代码
 bool[] states = new bool[100];


private void lamps_Load(object sender, EventArgs e)
{
//给100个灯泡状态初值;
for (int i = 0; i < 100; i++)
{
states[i] = false;
}





}


#region 第j个同学进行拉灯
public void Operate(int j)
{
for (int k = 1; k < 101; k++)
{
if (Math.IEEERemainder(k,j)==0) //获得操作权
{
if (states[k - 1] == true) //改变两种状态
{ states[k - 1] = false; }
else if (states[k - 1] == false)
{ states[k - 1] = true; }

}

}


}

#endregion

private void button1_Click(object sender, EventArgs e)
{
for (int j = 1; j < 101; j++) //遍历100个同学操作
{
Operate(j);
}

for (int m = 0; m < 100; m++)
{
if (states[m] == true)
{
textBox1.Text += m + 1 + " ";
}

}
}
发表于 2014-2-20 15:27:46 | 显示全部楼层
新人不懂,怎么都写那么多呢?有什么说道吗?这样写成不?
[C#] 纯文本查看 复制代码
int[] ar = new int[100];
            for(int i=1;i<=100;i++)
                for(int j=i;j<=100;j+=i)
                {
                    ar[j-1] = 1 - ar[j-1];
                }
发表于 2014-3-14 13:47:49 | 显示全部楼层
C#新人 发表于 2014-2-20 15:27
新人不懂,怎么都写那么多呢?有什么说道吗?这样写成不?
[mw_shl_code=csharp,false]int[] ar = new int ...

7楼的不错
发表于 2014-3-14 13:48:12 | 显示全部楼层
C#新人 发表于 2014-2-20 15:27
新人不懂,怎么都写那么多呢?有什么说道吗?这样写成不?
[mw_shl_code=csharp,false]int[] ar = new int ...

7楼的不错
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-15 19:57

© 2014-2021

快速回复 返回顶部 返回列表