zoukankan      html  css  js  c++  java
  • 每天10道编程题-第一天

    【程序1】   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?  

    【程序2】   题目:判断101-200之间有多少个素数,并输出所有素数。  

    【程序3】   题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。  

    【程序4】   题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。  

    【程序5】   题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。  

    【程序6】   题目:输入两个正整数m和n,求其最大公约数和最小公倍数。  

    【程序7】   题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。  

    【程序8】   题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。  

    【程序9】   题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程   找出1000以内的所有完数。  

    【程序10】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在   第10次落地时,共经过多少米?第10次反弹多高?  

    【程序1】   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 

    可以这样思考:第一个月后即第二个月时,1对兔子变成了两对兔子,其中一对是它本身,另一对是它生下的幼兔. 第三个月时两对兔子变成了三对,其中一对是最初的一对,另一对是它刚生下来的幼兔,第三对是幼兔长成的大兔子. 第四个月时,三对兔子变成了五对,第五个月时,五对兔子变成了八对······

     1 package com.daliu.suanfa;
     2 
     3 /**
     4  * 【程序1】
     5  * 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
     6  * 小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
     7  * 
     8  */
     9 public class exp1_1 {
    10     public static void main(String args[]) {
    11         int i = 0;
    12         math mymath = new math();
    13         for (i = 1; i <= 20; i++)
    14             System.out.println(mymath.f(i));
    15     }
    16 
    17 }
    18 
    19 class math {
    20     public int f(int x) {
    21         if (x == 1 || x == 2)
    22             return 1;
    23         else
    24             return f(x - 1) + f(x - 2);
    25     }
    26 }
     1 package com.daliu.suanfa;
     2 
     3 /**
     4  * 【程序1】
     5  * 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
     6  * 小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
     7  * 1 1  2  3  5  8  13  21 34 55 ....
     8  */
     9 public class exp1_2 {
    10     public static void main(String args[]) {
    11         int i = 0;
    12         
    13         for (i = 1; i <= 20; i++)
    14             System.out.print(f(i) + " ");
    15     }
    16 
    17     
    18     public static int f(int x) {
    19         if (x == 1 || x == 2)
    20             return 1;
    21         else
    22             return f(x - 1) + f(x - 2);
    23     }
    24 }

    涨姿势:
     斐波纳契数列还暗含着许多有趣的数字规律,如从第3个数开始每隔两个必是2的倍数,从第4个数开始每隔3个必是3的倍数,从第5个数开始每隔4个必是5的倍数……另外,这个数列最具有和谐之美的地方是,越往后,相邻两项的比值会无限趋向于黄金比0.61803……即[5^(1/2)-1]/2。

    【程序2】   题目:判断101-200之间有多少个素数,并输出所有素数。  

     1 package com.daliu.suanfa;
     2 
     3 /**
     4  * 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。
     5  */
     6 public class exp2 {
     7     public static void main(String args[]) {
     8         int i = 0;
     9         math2 mymath = new math2();
    10         for (i = 2; i <= 200; i++)
    11             if (mymath.iszhishu(i) == true)
    12                 System.out.print(i + " ");
    13     }
    14 }
    15 
    16 class math2 {
    17 
    18     public boolean iszhishu(int x) {
    19         for (int i = 2; i <= Math.sqrt(x); i++)
    20             if (x % i == 0)
    21                 return false;
    22         return true;
    23     }
    24 }


    【程序3】   题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。

     1 package com.daliu.suanfa;
     2 
     3 /**
     4  * 
     5  【程序3】 题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。
     6  例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
     7  * 
     8  */
     9 public class exp3 {
    10     public static void main(String args[]) {
    11         int i = 0;
    12         math3 mymath = new math3();
    13         for (i = 100; i <= 999; i++)
    14             if (mymath.shuixianhua(i) == true)
    15                 System.out.print(i + " ");
    16     }
    17 }
    18 
    19 class math3 {
    20     
    21     public boolean shuixianhua(int x) {
    22         int i = 0, j = 0, k = 0;
    23         i = x / 100;
    24         j = (x % 100) / 10;
    25         k = x % 10;
    26         if (x == i * i * i + j * j * j + k * k * k)
    27             return true;
    28         else
    29             return false;
    30 
    31     }
    32 }

    【程序4】   题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

    程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:  
    (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。  
    (2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你,重复执行第一步。  
    (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

     1 package com.daliu.suanfa;
     2 
     3 import java.util.Scanner;
     4 
     5 /**
     6  * 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
     7  * 
     8  */
     9 public class exp4 {
    10 
    11     public static void fengjie(int n) {
    12         for (int i = 2; i <= n / 2; i++) {
    13             if (n % i == 0) {
    14                 System.out.print(i + "*");
    15                 fengjie(n / i);
    16             }
    17         }
    18         System.out.print(n);
    19         System.exit(0);// /不能少这句,否则结果会出错
    20     }
    21 
    22     public static void main(String[] args) {
    23 
    24         // 获取输入值 方法 一
    25         // String str = "";
    26         // str = javax.swing.JOptionPane.showInputDialog("请输入N的值(输入exit退出):");
    27         // int N = 0;
    28         // try {
    29         // N = Integer.parseInt(str);
    30         // } catch (NumberFormatException e) {
    31         // e.printStackTrace();
    32         // }
    33 
    34         // 获取输入值 方法二
    35         Scanner scan = new Scanner(System.in);
    36         System.out.print("请输入要分解的值:");
    37         int N = scan.nextInt();
    38         System.out.print(N + "分解质因数:" + N + "=");
    39         fengjie(N);
    40     }
    41 }

    【程序5】   题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。  

     1 package com.daliu.suanfa;
     2 
     3 import java.util.Scanner;
     4 
     5 /**
     6  * 【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
     7  * 
     8  */
     9 public class exp5 {
    10     public static void main(String[] args) {
    11 
    12         // 获取输入值 方法一
    13         // String str = "";
    14         // str = JOptionPane.showInputDialog("请输入N的值(输入exit退出):");
    15         // int N;
    16         // N = 0;
    17         // try {
    18         // N = Integer.parseInt(str);
    19         // } catch (NumberFormatException e) {
    20         // e.printStackTrace();
    21         // }
    22 
    23         // 获取输入值 方法二
    24         String str = "";
    25         Scanner scan = new Scanner(System.in);
    26         System.out.println("请输入分数:");
    27         int N = scan.nextInt();
    28         str = (N >= 90 ? "A" : (N >= 60 ? "B" : "C"));
    29         System.out.println(str);
    30     }
    31 }

    【程序6】   题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

     1 package com.daliu.suanfa;
     2 /**
     3 【程序6】   题目:输入两个正整数m和n,求其最大公约数 
     4  *
     5  */
     6 public class exp6_1 {
     7     public static void main(String args[]) {
     8         commonDivisor(50, 100);
     9     }
    10 
    11     static int commonDivisor(int M, int N) {
    12         if (N < 0 || M < 0) {
    13             System.out.println("ERROR!");
    14             return -1;
    15         }
    16         if (N == 0) {
    17             System.out.println("最大公约数是:" + M);
    18             return M;
    19         }
    20         return commonDivisor(N, M % N);
    21     }
    22 }
     1 package com.daliu.suanfa;
     2 /**
     3  * 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
     4  *
     5  */
     6 public class exp6_2 {
     7     // 下面的方法是求出最大公约数
     8     public static int gcd(int m, int n) {
     9         while (true) {
    10             if ((m = m % n) == 0)
    11                 return n;
    12             if ((n = n % m) == 0)
    13                 return m;
    14         }
    15     }
    16 
    17     public static void main(String args[]) throws Exception {
    18         // 取得输入值
    19         // Scanner chin = new Scanner(System.in);
    20         // int a = chin.nextInt(), b = chin.nextInt();
    21         int a = 50;
    22         int b = 100;
    23         int c = gcd(a, b);
    24         System.out.println("最小公倍数:" + a * b / c + "
    最大公约数:" + c);
    25     }
    26 }

    【程序7】   题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。  

     1 package com.daliu.suanfa;
     2 
     3 import java.util.Scanner;
     4 /**
     5  * 【程序7】   题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
     6  *
     7  */
     8 public class exp7 {
     9     public static void main(String args[]) {
    10         
    11         //获取字符串
    12         System.out.println("请输入字符串:");
    13         Scanner scan = new Scanner(System.in);
    14         String str = scan.next();
    15         
    16         //将获得的字符串转变成字符数组
    17         char[] arrChar = str.toCharArray();
    18         
    19         //将字符数组的值通过循环放到字符串数组中
    20         String[] arrStr = new String[arrChar.length];
    21         for (int i = 0; i < arrChar.length; i++) {
    22             arrStr[i] = String.valueOf(arrChar[i]);
    23         }
    24         
    25         //然后利用正则表达式来判断
    26         String E1 = "[u4e00-u9fa5]";
    27         String E2 = "[a-zA-Z]";
    28         int countH = 0;
    29         int countE = 0;
    30         for (String i : arrStr) {
    31             if (i.matches(E1)) {
    32                 countH++;
    33             }
    34             if (i.matches(E2)) {
    35                 countE++;
    36             }
    37         }
    38         System.out.println("汉字的个数" + countH);
    39         System.out.println("字母的个数" + countE);
    40     }
    41 }

    【程序8】   题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。  

     1 package com.daliu.suanfa;
     2 
     3 import java.io.*;
     4 /**
     5  * 【程序8】   题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
     6  * 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制
     7  *
     8  */
     9 public class exp8_1 {
    10     public static void main(String[] args) throws IOException {
    11         int s = 0;
    12         String output = "";
    13         BufferedReader stadin = new BufferedReader(new InputStreamReader(
    14                 System.in));
    15         System.out.println("请输入a的值");
    16         String input = stadin.readLine();
    17         for (int i = 1; i <= Integer.parseInt(input); i++) {
    18             output += input;
    19             int a = Integer.parseInt(output);
    20             s += a;
    21         }
    22         System.out.println(s);
    23     }
    24 }
     1 package com.daliu.suanfa;
     2 
     3 import java.io.*;
     4 /**
     5  * 【程序8】   题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
     6  * 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 
     7  *
     8  */
     9 public class exp8_2 {
    10     public static void main(String[] args) throws IOException {
    11         int s = 0;
    12         int n;
    13         int t = 0;
    14         BufferedReader stadin = new BufferedReader(new InputStreamReader(
    15                 System.in));
    16         String input = stadin.readLine();
    17         n = Integer.parseInt(input);
    18         for (int i = 1; i <= n; i++) {
    19             t = t * 10 + n;
    20             s = s + t;
    21             System.out.println(t);
    22         }
    23         System.out.println(s);
    24     }
    25 }

    【程序9】   题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程   找出1000以内的所有完数。  

     1 package com.daliu.suanfa;
     2 
     3 /**
     4  * 
     5  【程序9】 题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。
     6  例如6=1+2+3.编程 找出1000以内的所有完数。
     7  * 
     8  */
     9 public class exp9 {
    10     public static void main(String[] args) {
    11         int s;
    12         for (int i = 1; i <= 1000; i++) {
    13             s = 0;
    14             for (int j = 1; j < i; j++)
    15                 if (i % j == 0)
    16                     s = s + j;
    17             if (s == i)
    18                 System.out.print(i + " ");
    19         }
    20         System.out.println();
    21     }
    22 }

    【程序10】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在   第10次落地时,共经过多少米?第10次反弹多高?

     1 package com.daliu.suanfa;
     2 
     3 /**
     4  * 【程序10】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;
     5  * 再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
     6  * 
     7  */
     8 public class Ex10 {
     9     public static void main(String[] args) {
    10         double s = 0;
    11         double t = 100;
    12         for (int i = 1; i <= 10; i++) {
    13             s += t;
    14             t = t / 2;
    15         }
    16         System.out.println(s);
    17         System.out.println(t);
    18 
    19     }
    20 }


     

  • 相关阅读:
    头条java 后台一面凉经
    JVM运行时数据区
    基础篇——Spring Cloud Hystrix
    bug篇——idea拉取代码认证失败重新登录
    基础篇——代理模式之SpringAOP
    基础篇——代码优化100条之(11—20)
    电商项目实战(架构八)——RabbitMQ实现延迟消息
    电商项目实战(架构七)——Mongodb实现文档操作
    基础篇——代码优化100条之(1—10)
    电商项目实战(架构六)——Elasticsearch实现商品搜索
  • 原文地址:https://www.cnblogs.com/liuhongfeng/p/4134227.html
Copyright © 2011-2022 走看看