很搞笑的一段小程序

/**********************************************************
  很搞笑的一段小程序

  <Edison wong>. QQ139767
**********************************************************/
#include <stdio.h>
#include <stdlib.h>

void main()
{

 int a,b;
 printf("================================<Edison wong>================================/n/n");

 printf("某人的生日是M月N日,/n");
 printf("小强只知道是M月,小明只知道是N日,/n");
 printf("--------------------/n");
 printf("3月4日 3月5日 3月8日/n");
 printf("6月4日 6月7日 9月1日 9月5日/n");
 printf("12月1日 12月8日 12月2日/n");
 printf("他们都知道是上面10个中的一个./n");
 printf("小强说:如果我不知道小明一定不知道,/n");
 printf("小明说:本来我不知道的 但现在我知道了,/n");
 printf("小强接着说:哦..那我也知道了!/n");
 printf("你知道了没,是几月几号?/n");
 printf("================================<Edison wong>================================/n/n");
 
 printf("我做不出来要看答案,俺任意键!!/n");
 system("PAUSE");

 printf("首先你要承认你是傻瓜才可以看到答案!^_^/n");
Here:
 putchar('/n/n/n');
 printf("1 我是的/n");
 printf("2 我不是,你才是/n");
 printf("选择1 or 2 ?/n");
 scanf("%d",&a);
 getchar();
 switch (a)
 {
 case 1:
  printf("恭喜你白痴,答案是9月1日,这都不会,你智商只有10!/n");
  printf("--------------------/n");
  printf("要知道怎么分析出来的嘛?/n");
  printf("1 要看看!/n");
  printf("2 不看!/n");
  printf("--------------------/n");
  printf("选择1 or 2 ?/n");

  scanf("%d",&b);

  if(b==1)
  {
   printf("1,首先分析这10组日期,经观察不难发现,只有6月7日和12月2日这两组日期的,日数是唯一的。由此可知,如果小强得知的N是7或者2,那么他必定知道生日了./n");
   system("PAUSE");
   printf("2,再分析“小明说:如果我不知道的话,小强肯定也不知道”,而该10组日期的 月数分别为3,6,9,12,而且都相应月的日期都有两组以上,所以小明得知M后 是不可能知道老师生日的/n");
   system("PAUSE");
   printf("3,进一步分析“小明说:如果我不知道的话,小强肯定也不知道”,结合第2步 结论,可知小强得知N后也绝不可能知道。/n");
   system("PAUSE");
   printf("4,结合第3和第1步,可以推断:所有6月和12月的日期都不是老师的生日,因为 如果小明得知的M是6,而若小强的N==7,则小强就知道了老师的生日。(由第 1步已经推出),同理,如果小明的M==12,若小强的N==2,则小强同样可以知道老师n的生日。即:M不等于6和9。现在只剩下“3月4日 3月5日 3月8日 9月1日 9月5日”五组日期。而小强知道了,所以N不等于5(有3月5日和9月5日),此时, 小强的N∈(1,4,8)注:此时N虽然有三种可能,但对于小强只要知道其中的 一种,就得出结论。所以有“小强说:本来我也不知道,但是现在我知道了”, 对于我们则还需要继续推理,至此,剩下的可能是“3月4日 3月8日 9月1日”/n");
   system("PAUSE");
   printf("5,分析“小明说:哦,那我也知道了”,说明M==9,N==1,(N==5已经被排除,3月份的有两组)/n");
   break;
  }
  if(b==2)
  {
   printf("唉!不求上进!/n");break;
  }

 case 2:
  printf("哈哈,俺下任意键你将会格式化,除非...../n");break;
 default:
  printf("输入1 和 2两个数字/n");goto Here;
 }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值