C#日常练习·第一题


前言

题目:

某著名的在线通信软件公司出过这么一道面试题,说“经理有3个女儿,她们的年龄和是13岁,年龄的乘积等于经理的年龄。有位员工知道经理年龄,但是不能确定他3个女儿都是多大,这时,经理跟他说,我只有一个女儿超过5岁,于是那位员工就知道了经理3个女儿的年龄,那么经理的3个女儿都分别是多大?”
使用C#推算经理3个女儿的年龄。

提示:以下是本篇文章正文内容,下面案例可供参考

一、题目分析

已知国内的劳动法允许22岁到65岁的人工作,因此三个女儿的和不为13,且乘积不在此类范围的一律排除。又因为只有一个超过5岁的女儿,所以其他两个女儿的年龄最大不过5岁,最小不过1岁。同时,二女儿的年龄≥三女儿。根据上述条件,可以用循环语句求出准确结果。
又使用排除法,大女儿最大只有11岁,此时两个小女儿只能都为1岁,经理年龄为11岁,排除;10岁时,只有{10,1,2}一种可能(集合的无序性),年龄为20岁,排除;9岁时,有{9,1,4}符合条件,因此大女儿的年龄最大只能是9岁,最小为6岁。

二、题解

代码如下(示例):

using System;

namespace CalculateManagerAge
{
	internal class Program
	{
		static void Main()
		{
			int DaughterA, DaughterB, DaughterC, Manager;
			DaughterA = 6;
			DaughterB = DaughterC = 1;
			bool DaughterBRange = (1 <= DaughterB) && (DaughterB <=5);
			int CalculateManager(int A, int B, int C)
			{
				return A*B*C;
			}
			while (DaughterA <= 9)
			{
				{
					do
					{
						do
						{
							Manager = CalculateManager(DaughterA, DaughterB, DaughterC);
							bool ManagerRange = (22 <= Manager) && (Manager <= 65);
							if ((DaughterA + DaughterB + DaughterC == 13) && ManagerRange && DaughterB >= DaughterC)
							{
								Console.WriteLine("经理的年龄可能是:{0},大女儿的年龄是{1},二女儿的年龄是{2},三女儿的年龄是{3}。", Manager, DaughterA, DaughterB, DaughterC);
							}
						} while (DaughterC <= 5);
						DaughterB++;DaughterC = 1
					} while (DaughterB <= 5);
				}
				DaughterA++;DaughterB = DaughterC = 1;
			}
		}
	}
}

计算结果

如图所示:
计算结果

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值