逻辑题一:
问题描述:
在一条街上,有5座房子,喷了5种颜色。
2、每个房里住着不同国籍的人
3、每个人喝不同的饮料,抽不同品牌的香烟,养不同的宠物
问题是:谁养鱼?
提示:
1、英国人住红色房子
2、瑞典人养狗
3、丹麦人喝茶
4、绿色房子在白色房子左面
5、绿色房子主人喝咖啡
6、抽Pall Mall 香烟的人养鸟
7、黄色房子主人抽Dunhill 香烟
8、住在中间房子的人喝牛奶
9、 挪威人住第一间房
10、抽Blends香烟的人住在养猫的人隔壁
11、养马的人住抽Dunhill 香烟的人隔壁
12、抽Blue Master的人喝啤酒
13、德国人抽Prince香烟
14、挪威人住蓝色房子隔壁
15、抽Blends香烟的人有一个喝水的邻居
答案:德国人
逻辑题二:
问题描述:
对一批编号为1~100,全部开关朝上(开)的灯进行以下操作:凡是1的倍数反方向拨一次开关.2的倍数反方向又拨一次开关.3的倍数反方向又拨一次开关..仍此类推.问:最后为关熄状态的灯的编号.
代码实现:
using System;
namespace cchoopDemo
{
class Program
{
static void Main(string[] args)
{
//定义100个布尔型变量,true代表灯亮,false代表灯灭
bool[] light = new bool[100];
//初始化所有灯亮的状态
for (int i = 0; i < 100; i++)
{
light[i] = true;
}
//进行操作:凡是1的倍数反方向拨一次开关.
//2的倍数反方向又拨一次开关.
//3的倍数反方向又拨一次开关..
for (int i = 0; i < 100; i++)
{
int lightId = i;
//灯的编号从1开始,所以判断是i需加1
for (int j = 1; j <= i + 1; j++)
{
if ((i + 1) % j == 0)
{
light[lightId] = !light[lightId];
}
}
}
//打印出灯亮的编号
Console.Write("亮灯的编号为:");
for (int i = 0; i < 100; i++)
{
if (light[i] == false)
{
Console.Write((i + 1) + " ");
}
}
Console.ReadKey();
}
}
}
运行结果:
逻辑题三:
一个商人骑一头驴要穿越1000公里长的沙漠,去卖3000根胡萝卜。已知驴一次性可驮1000根胡萝卜,但每走一公里又要吃掉一根胡萝卜。问:商人共可卖出多少胡萝卜
代码实现:
using System;
namespace cchoopDemo
{
class Program
{
static void Main(string[] args)
{
//要使萝卜消耗的数量最少,必须让萝卜消耗量的距离最短
//当萝卜总数大于2000时小于等于3000,萝卜运输的消耗量 = 运输距离 * 5。
//当萝卜总数大于1000时小于等于2000,萝卜运输的消耗量 = 运输距离 * 3。
//第一段距离:1000/5 = 200;
//第二段距离:1000/3 = 334
//第三段距离为:1000-200-334 = 466
int num1 = (1000 / 5) * 5;
int num2 = (1000 / 3 + 1) * 3;
int num3 = 1000 - 1000 / 5 - (1000 / 3 + 1);
Console.WriteLine("商人最后可卖的萝卜数量为:" + (3000 - num1 - num2 - num3));
Console.ReadKey();
}
}
}
运行结果: