A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田磊阳   /  2013-3-29 20:35  /  15592 人查看  /  218 人回复  /   3 人收藏 转载请遵从CC协议 禁止商业使用本文

小程序标题:爱因斯坦阶梯问题
小程序题目:爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;若每步上7阶,最后一阶也不剩。问该阶梯至少有多少阶?
小程序答案:
  1. /*
  2. 需求:爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;若每步上7阶,最后一阶也不剩。问该阶梯至少有多少阶?

  3. 思路:
  4. 1、设该阶梯共有x阶,则由题目可得出
  5.         x%2=1
  6.         x%3=2
  7.         x%5=4
  8.         x%6=5
  9.         x%7=0
  10.         解方程可得x的解有无数个。但这里求最小解。
  11. 2、因为x%7=0,所以x为7的倍数。同时x依次与2、3、5、6进行取模运算。
  12. 3、需要用一个循环遍历7的倍数,从而查出符合条件的最小解,因为x没有上限,故优先考虑while循环

  13. */
  14. class JieTi
  15. {
  16.         public static void main(String[] args)
  17.         {
  18.                 //调用函数返回最小阶梯数
  19.                 int jt=qiuJie();
  20.                 if(jt==-1)
  21.                         sop("符合条件的阶梯数不存在");
  22.                 sop("最小的阶梯数为:"+jt);
  23.         }

  24.         //求最小阶梯数
  25.         public static int qiuJie()
  26.         {
  27.                 int x=7;
  28.                 while(x<7000)        //按常理假设一个上限
  29.                 {
  30.                         //按条件遍历查找,符合条件的就返回
  31.                         if((x%2==1)&&(x%3==2)&&(x%5==4)&&(x%6==5))
  32.                                 return x;
  33.                         x+=7;//将阶梯数按7的倍数增长
  34.                         sop(x);
  35.                 }
  36.                 //考虑不存在的情况
  37.                 return -1;
  38.         }

  39.         //打印
  40.         public static void sop(Object obj)
  41.         {
  42.                 System.out.println(obj);
  43.         }
  44. }
复制代码
上一题楼层及时间:第157楼,时间为:2013年4月6日
上一题推荐的理由:将现实中的问题通过编程解决,练习思路的转换
本题目楼层及时间:第207楼,时间为:2013年4月10日

评分

参与人数 1技术分 +2 收起 理由
黄玉昆 + 2

查看全部评分

回复 使用道具 举报
这......顶一下  我理解一下!
回复 使用道具 举报
不错,不错...
回复 使用道具 举报
来的晚了,不知道还有没有。
回复 使用道具 举报
抢一个···
回复 使用道具 举报
报个到。  早上好。/
回复 使用道具 举报
本帖最后由 段旭东 于 2013-4-14 09:35 编辑

小程序标题:练习java语言的经典小例子。
小程序题目:有一堆苹果,你第一天吃掉一半加一个,第二天又吃掉剩下的一半加一个,到第十三天吃了剩下的最后一个苹果,问:最初有几个苹果?

PS:吃掉的是一堆苹果的一半哦!第二天是剩下半堆的一半哦!不是一个苹果分开吃。。。。
       可以用很多方法,结果不重要 最主要的是算法,思想!
结果:做出的的结果数量可能有点巨大!各位不要惊讶!
小程序答案:
  1. public class d1 {
  2. //有一堆苹果,你第一天吃掉一半加一个,第二天又吃掉剩下的一半加一个,到第十三天吃了剩下的最后一个苹果,问:最初有几个苹果?
  3.         public static void main(String[] args){
  4.                
  5.                 int m = 1,i;
  6.                 for(i=12;i>=1;--i)
  7.                 {
  8.                   m=(m+1)*2;
  9.                
  10.                 }
  11.                 System.out.println(m);//这是第一种方法
  12.                 System.out.println(total(1));//这是第二种方法
  13.         }
  14.         static int total(int day){
  15.                    if(day == 13){
  16.                     return 1;
  17.                    }
  18.                    else{
  19.                     return (total(day+1)+1)*2;
  20.                    }
  21.         
  22.         }
  23.         
  24. }
复制代码
上一题楼层及时间:无
上一题推荐的答案:无
回复者楼层:213楼
本题目楼层及时间:第213楼,时间为:2013年4月14日

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 丘凤光 于 2013-4-14 17:41 编辑

我已坚持出题五次,楼层为:74楼,172楼,175楼,207楼,214楼。每一题都给了思路了{:soso_e100:}

小程序标题:模拟抽奖
小程序题目:某抽奖活动。中一等奖的概率为0.1,中二等奖的概率为0.2,中三等奖的概率为0.3,不中奖的概率为0.4。编程模拟张三、李四、王五抽奖。
小程序答案:
  1. /*
  2. 需求:某抽奖活动。中一等奖的概率为0.1,中二等奖的概率为0.2,中三等奖的概率为0.3,不中奖的概率为0.4。编程模拟张三、李四、王五抽奖。


  3. 思路:
  4. 1、模拟人抽奖,首先需要有Person类,该类有name属性,和抽奖方法。
  5. 2、抽奖活动(方法)具有随机性,马上想到Random类和Math类的random方法
  6. 3、应为随机函数的范围是0~1.0,将其划分为四部分,比例为中奖概率即0.1:0.2:0.3:0.4即1:2:3:4
  7. 4、因为产生的一个随机数就代表一张奖票,应该为正整数,将票一般很大,设为100,故随机产生的数应该在1~100间

  8. */

  9. import java.util.*;
  10. class ChouJiang
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 //使用Person类进行抽奖
  15.                 Person p1=new Person("张三");
  16.                 Person p2=new Person("李四");
  17.                 Person p3=new Person("王五");
  18.                 p1.chouJiang();
  19.                 p2.chouJiang();
  20.                 p3.chouJiang();
  21.         }        
  22. }

  23. //Person类
  24. class Person
  25. {
  26.         private String name;
  27.         Person(String name)        //人这对象一建立就初始化使其有姓名
  28.         {
  29.                 this.name=name;
  30.         }

  31.         //抽奖函数
  32.         public void chouJiang()
  33.         {
  34.                 Random r=new Random();        //建立随机类Random对象
  35.                 int i=(int)(r.nextDouble()*100+1);
  36.                 //按中奖概率划分随机产生奖票
  37.                 if(i>=1&&i<=10)
  38.                         sop(this.name+"抽中一等奖");
  39.                 else if(i>=11&&i<=30)
  40.                         sop(this.name+"抽中二等奖");
  41.                 else if(i>=31&&i<=60)
  42.                         sop(this.name+"抽中三等奖");
  43.                 else
  44.                         sop("很遗憾,"+this.name+"没有中奖");
  45.         }

  46.         //输出函数
  47.         private void sop(Object obj)
  48.         {
  49.                 System.out.println(obj);
  50.         }
  51. }
复制代码
上一题楼层及时间:第207楼,时间为:2013年4月10日
上一题推荐的答案:(已给出)
本题目楼层及时间:第214楼,时间为:2013年4月14日


评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
邵震 发表于 2013-3-29 20:59
版主  你这个帖子我还是没看懂  回帖方式看迷糊了。。。。。

同感,发帖回帖方式太复杂,看了一阵都没懂
回复 使用道具 举报
天行健,君子以自强不息
回复 使用道具 举报
本帖最后由 、__WSD吴少东 于 2013-4-18 20:04 编辑

标题:IO流入门小程序
题目: 编写程序拷贝一个文件, 尽量使用效率高的方式.

上一题楼层及时间:第198楼 时间为:2013年4月10日
上一题答案,201楼
本题目楼层及时间:第217楼,时间为:2013年4月18日
小程序答案:
  1. /*
  2. 思路:拷贝就是将一个文件读取,写到另外一个文件下,所以可以创建一个Io流来完成。
  3. 步骤:
  4. 1.用该文件夹下的文件进行测试,
  5. 2.创建读写流,和文件关联,
  6. 3.通过不断的读写完成拷贝,
  7. 4.关闭资源,
  8. */
  9. import java.io.*;
  10. class  Test06
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 Copy();
  15.         }
  16.         public static void Copy()
  17.         {
  18.                 //使用缓冲区,提高效率
  19.                 BufferedWriter bufw = null;
  20.                 BufferedReader bufr = null;
  21.                 try
  22.                 {
  23.                         //创建IO流
  24.                         bufw = new BufferedWriter(new FileWriter("Test01_copy.txt"));
  25.                         bufr = new BufferedReader(new FileReader("Test01.java"));

  26.                         String s = null;//中转站,

  27.                         while((s = bufr.readLine())!= null)//当没有文本的时候,readLine 返回null
  28.                         {
  29.                                 bufw.write(s);//打印缓冲区内的内容
  30.                                 bufw.newLine();//换行
  31.                                 bufw.flush();//刷新缓冲区
  32.                         }

  33.                 }
  34.                 catch (IOException e)//接受异常
  35.                 {
  36.                         throw new RuntimeException("读写失败");//抛出中断异常
  37.                 }
  38.                 finally//释放资源,必须执行,
  39.                 {
  40.                         if (bufr != null)
  41.                                 try
  42.                                 {
  43.                                         bufr.close();//关闭缓冲区就相当于关闭缓冲区内的流
  44.                                 }
  45.                                 catch (IOException e)
  46.                                 {
  47.                                 }
  48.                         if (bufw != null)
  49.                                 try
  50.                                 {
  51.                                         bufw.close();//先刷新缓冲区,后关闭资源
  52.                                 }
  53.                                 catch (IOException e)
  54.                                 {
  55.                                 }
  56.                 }
  57.         }
  58. }
  59. 今天刚学,试着写了下,BOSS照顾我点吧<img alt="" src="http://cache.soso.com/img/img/e144.gif" border="0" smilieid="soso_e144">
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
顶起哦   哈哈
回复 使用道具 举报
{:soso_e130:}
回复 使用道具 举报
{:soso_e130:}
回复 使用道具 举报
抢一个{:soso_e113:}
回复 使用道具 举报
抢楼吧!
回复 使用道具 举报
本帖最后由 傻瓜一点红 于 2013-4-27 20:55 编辑

俺是新手,4月24日零基础刚开始学java,也出道题试试,不足的地方还请各位大虾多多指点{:soso_e100:}
小程序标题:制作一个生日星期查询系统
小程序题目:用比较简短的代码制作一个生日星期查询系统,即用户只需输入自己的出生年月日,就可知道自己的生日是星期几
小程序答案:1、先接受用户所输入的相关信息;2、在程序里运用泰勒公式进行计算出用户生日是星期几;3、计算完成后进行输出。(请各位大虾指教,如有更简洁的思路及程序实现相同的功能,热烈欢迎跟帖)
  1. import java.util.Scanner;
  2. public class calendar1 {
  3.         public static void main(String[] args){
  4.                 Scanner in=new Scanner(System.in);
  5.                 System.out.println("欢迎来到生日星期查询系统,在这你只需输入你的出生年月日,即可知道你的生日是星期几!");
  6.                 System.out.println("请输入年:");
  7.                 int y=in.nextInt();
  8.                 System.out.println("请输入月:");
  9.                 int m=in.nextInt();
  10.                 System.out.println("请输入日:");
  11.                 int d=in.nextInt();
  12.                 System.out.println("你所输入日期为:"+y+"年"+m+"月"+d+"日");
  13.                 int w=0;
  14.                 int b=13*(13+m)/5;
  15.                 int c=13*(1+m)/5;
  16.                 if(m==1||m==2){
  17.                         if(y<=2000){
  18.                                 int a=(y-1901)/4;
  19.                                 w=(y+a+b+d-1936)%7;
  20.                                 if(w!=0){
  21.                                         System.out.println("你的生日是星期"+w);
  22.                                 }else{
  23.                                         System.out.println("你的生日是星期日");
  24.                                 }
  25.                         }else{
  26.                                 int a=(y-2001)/4;
  27.                                 w=(y+a+b+d-2037)%7;
  28.                                 if(w!=0){
  29.                                         System.out.println("你的生日是星期"+w);
  30.                                 }else{
  31.                                         System.out.println("你的生日是星期日");
  32.                                 }
  33.                         }
  34.                 }else if(y<=2000){
  35.                         int a=(y-1900)/4;
  36.                         w=(y+a+c+d-1935)%7;
  37.                         if(w!=0){
  38.                                 System.out.println("你的生日是星期"+w);
  39.                         }else{
  40.                                 System.out.println("你的生日是星期日");
  41.                         }
  42.                 }else{
  43.                         int a=(y-2000)/4;
  44.                         w=(y+a+c+d-2036)%7;
  45.                         if(w!=0){
  46.                                 System.out.println("你的生日是星期"+w);
  47.                         }else{
  48.                                 System.out.println("你的生日是星期日");
  49.                         }
  50.                 }
  51.         }
  52. }
复制代码
本题目楼层及时间:第223楼,时间为:2013年4月27日

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
大家就是要有这种激情,加油
回复 使用道具 举报
{:soso_e114:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马