我有一个好玩的程序
1.获取你QQ号码的第一位 2.用你QQ号码的第一位乘以五 3.把这个数加上8 4.再把所得的结果乘以20 5.如果你的生日过了,加1848,如果没过,加1847 6.把所得结果减去你的出生年份 7.现在你会得到一个3位数 8.百位上的数字就是你的QQ号码的第一位 9.十位和个位就成了一个两位数,用这个数加上3就是你的年龄了。 10.准不准、 准吧 我也不知道为什么会这嘛准、... 
这个是在网上流传的,我写了一下程序,我不知道为什么,谁知道跟贴.public class smain { public static void main(String args[]) {
// A a = new A();
// System.out.println("在给A值之前的A B值是:");
// a.showAB();
// System.out.println("在给值之后AB值是:");
// a.intIt(5);
// a.showAB();
b a= new b();
int i=a.age(2, "我的生日过了");
}}class A {
private int a = 0, b = 0; void intIt(int x) {
a = x;
b = 7;
System.out.println("a=" + a + "   " + "b=" + b);
} void showAB() {
System.out.println("a=" + a + "   " + "b=" + b);
}
}
class b{
 int age(int s,String go3){
 s=s*5;
 s=s+8;
 s=s*20;
String go="我的生日过了";
String go2="我的生日没过";
if(go3==go){
s=s+1848;
s=s-1986;
int b=s%100;
int c=b+3;
int age=(s-b)/100;
System.out.println("你的QQ号第一位是"+age);
System.out.println("你的年龄是:"+c);
}
if(go3==go2){
s=s+1847;
s=s-1986;
int b=s%100;
int c=b+3;
int age=(s-b)/100;
System.out.println("你的QQ号第一位是"+age);
System.out.println("你的年龄是:"+c);
}
return s;
}
}

解决方案 »

  1.   

    比如说,你的首位是x,出生年份是y
    拿生日过了的情况看,根据计算就是
    (x*5+8)*20+1848-y=100*x+2008-y
    那么3位数首位就是x,后两位+3就是2011-y也就是你的年龄生日没过的话最后就是100*x+2007-y,一样的
      

  2.   

    恒等式的问题,忽悠人的。类似的问题很多。
    假设QQ第一位为q,出生年份为y,根据上面前5步(q*5+8)*20+1848=q*100+2008
    如果这个人1908年前出生,或者2008年后出生的,bug出来了。对1908-2008区间以后出生的人,上面那个算式-出生年根本不会影响百位。
    同理可以得到年龄。
      

  3.   

    忽悠人的 列个式子就清楚了 有很多这种问题
    (x*5+8)*20+1848-year=x*100+2008-year
    这个问题 对100岁以上的人不成立
      

  4.   

    System.out.println("请输入你QQ号码的第一位:");
             int x=new Scanner(System.in).nextInt();//获得QQ号码的第一位
             int a,b = 0,c,d,e;                        
             a=(x*5+8)*20;//第一、二、三步:用获得的QQ号的第一位乘以5,再把这个数加上8 ,再把所得的结果乘以20
             //判断您的生日是否已过
             System.out.println("请判断今年你的生日是否已过?输入1表示你的生日已过,输入2则表示你的生日还未过,注意大小写!!!");
             System.out.println("");
             int q=new Scanner(System.in).nextInt();
             switch (q) {
    case 1:
    b=a+1848;
    break;
    case 2:
    b=a+1847;
    break;
    }
             System.out.println("请输入你的出生年份");
             int y=new Scanner(System.in).nextInt();//获得你的出生年份,方便后面的减去
             c=b-y;
             d=c/100;
             System.out.println("你的QQ号码第一位是"+d+"吗?");
             e=(c%100)+3;
             System.out.println("你今年是满"+e+"岁吗?");
             System.out.println("呵呵,我做这个还是特老套了,望给为见谅!");
      

  5.   

    呵呵,其实吧,我早知道为啥了,就是想复习一下基础知识,我一开始是这样的,我给你了QQ的首字,还有出生年那,一定能得到首字和年龄啊,对吧,我很欣赏这个网友kissau,也就是10楼,人家知道有BUG,有些网友,我不是说什么,你们看问题,看什么,看热闹,感觉自己聪明?