Java经典基础练习1-10

来源:互联网 发布:淘宝客佣金在哪设置 编辑:程序博客网 时间:2024/06/05 06:04
【程序1   
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?   

//这是一个菲波拉契数列问题

[java] view plain copy
print?
  1. public class lianxi01 {  
  2.     public static void main(String[] args) {  
  3.         System.out.println(”第1个月的兔子对数:    1”);  
  4.         System.out.println(”第2个月的兔子对数:    1”);  
  5.         int f1 = 1, f2 = 1, f, M = 24;  
  6.         for (int i = 3; i <= M; i++) {  
  7.             f = f2;  
  8.             f2 = f1 + f2;  
  9.             f1 = f;  
  10.             System.out.println(”第” + i + “个月的兔子对数: ” + f2);  
  11.         }  
  12.     }  
  13. }  
public class lianxi01 {    public static void main(String[] args) {        System.out.println("第1个月的兔子对数:    1");        System.out.println("第2个月的兔子对数:    1");        int f1 = 1, f2 = 1, f, M = 24;        for (int i = 3; i <= M; i++) {            f = f2;            f2 = f1 + f2;            f1 = f;            System.out.println("第" + i + "个月的兔子对数: " + f2);        }    }}


【程序2   
题目:判断101-200之间有多少个素数,并输出所有素数。 
程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。   

[java] view plain copy
print?
  1. public class lianxi02 {  
  2.     public static void main(String[] args) {  
  3.         int count = 0;  
  4.         for (int i = 101; i < 200; i += 2) {  
  5.             boolean b = false;  
  6.             for (int j = 2; j <= Math.sqrt(i); j++) {  
  7.                 if (i % j == 0) {  
  8.                     b = false;  
  9.                     break;  
  10.                 } else {  
  11.                     b = true;  
  12.                 }  
  13.             }  
  14.             if (b == true) {  
  15.                 count++;  
  16.                 System.out.println(i);  
  17.             }  
  18.         }  
  19.         System.out.println(”素数个数是: ” + count);  
  20.     }  
  21. }  
public class lianxi02 {    public static void main(String[] args) {        int count = 0;        for (int i = 101; i < 200; i += 2) {            boolean b = false;            for (int j = 2; j <= Math.sqrt(i); j++) {                if (i % j == 0) {                    b = false;                    break;                } else {                    b = true;                }            }            if (b == true) {                count++;                System.out.println(i);            }        }        System.out.println("素数个数是: " + count);    }}

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

[java] view plain copy
print?
  1. public class lianxi03 {  
  2.     public static void main(String[] args) {  
  3.         int b1, b2, b3;  
  4.         for (int m = 101; m < 1000; m++) {  
  5.             b3 = m / 100;  
  6.             b2 = m % 100 / 10;  
  7.             b1 = m % 10;  
  8.             if ((b3 * b3 * b3 + b2 * b2 * b2 + b1 * b1 * b1) == m) {  
  9.                 System.out.println(m + ”是一个水仙花数”);  
  10.             }  
  11.         }  
  12.     }  
  13. }  
public class lianxi03 {    public static void main(String[] args) {        int b1, b2, b3;        for (int m = 101; m < 1000; m++) {            b3 = m / 100;            b2 = m % 100 / 10;            b1 = m % 10;            if ((b3 * b3 * b3 + b2 * b2 * b2 + b1 * b1 * b1) == m) {                System.out.println(m + "是一个水仙花数");            }        }    }}


【程序4   
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5   
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:   
(1)
如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。   
(2)
如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。   
(3)
如果n不能被k整除,则用k+1作为k的值,重复执行第一步。  
[java] view plain copy
print?
  1. import java.util.*;  
  2.   
  3. public class lianxi04 {  
  4.     public static void main(String[] args) {  
  5.         Scanner s = new Scanner(System.in);  
  6.         System.out.print(”请键入一个正整数:     ”);  
  7.         int n = s.nextInt();  
  8.         int k = 2;  
  9.         System.out.print(n + ”=”);  
  10.         while (k <= n) {  
  11.             if (k == n) {  
  12.                 System.out.println(n);  
  13.                 break;  
  14.             } else if (n % k == 0) {  
  15.                 System.out.print(k + ”*”);  
  16.                 n = n / k;  
  17.             } else  
  18.                 k++;  
  19.         }  
  20.     }  
  21. }  
import java.util.*;public class lianxi04 {    public static void main(String[] args) {        Scanner s = new Scanner(System.in);        System.out.print("请键入一个正整数:     ");        int n = s.nextInt();        int k = 2;        System.out.print(n + "=");        while (k <= n) {            if (k == n) {                System.out.println(n);                break;            } else if (n % k == 0) {                System.out.print(k + "*");                n = n / k;            } else                k++;        }    }}

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

[java] view plain copy
print?
  1. import java.util.*;  
  2.   
  3. public class lianxi05 {  
  4.     public static void main(String[] args) {  
  5.         int x;  
  6.         char grade;  
  7.         Scanner s = new Scanner(System.in);  
  8.         System.out.print(”请输入一个成绩: ”);  
  9.         x = s.nextInt();  
  10.         grade = x >= 90 ? ‘A’ : x >= 60 ? ‘B’ : ‘C’;  
  11.         System.out.println(”等级为:” + grade);  
  12.   
  13.     }  
  14. }  
import java.util.*;public class lianxi05 {    public static void main(String[] args) {        int x;        char grade;        Scanner s = new Scanner(System.in);        System.out.print("请输入一个成绩: ");        x = s.nextInt();        grade = x >= 90 ? 'A' : x >= 60 ? 'B' : 'C';        System.out.println("等级为:" + grade);    }}

题目:输入两个正整数mn,求其最大公约数和最小公倍数。   
/**
在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /

[java] view plain copy
print?
  1. </pre><pre name=“code” class=“java”>import java.util.*;  
  2.   
  3. public class lianxi06 {  
  4.     public static void main(String[] args) {  
  5.         int a, b, m;  
  6.         Scanner input = new Scanner(System.in);  
  7.         System.out.print(”键入一个整数: ”);  
  8.         a = input.nextInt();  
  9.         System.out.print(”再键入一个整数: ”);  
  10.         b = input.nextInt();  
  11.         m = deff(a, b);  
  12.         int n = a * b / m;  
  13.         System.out.println(”最大公约数: ” + m);  
  14.         System.out.println(”最小公倍数: ” + n);  
  15.     }  
  16.       
  17.     public static int deff(int x, int y) {  
  18.         int t;  
  19.         if (x < y) {  
  20.             t = x;  
  21.             x = y;  
  22.             y = t;  
  23.         }  
  24.         while (y != 0) {  
  25.             if (x == y)  
  26.                 return x;  
  27.             else {  
  28.                 int k = x % y;  
  29.                 x = y;  
  30.                 y = k;  
  31.             }  
  32.         }  
  33.         return x;  
  34.     }  
  35. }  
</pre><pre name="code" class="java">import java.util.*;public class lianxi06 {    public static void main(String[] args) {        int a, b, m;        Scanner input = new Scanner(System.in);        System.out.print("键入一个整数: ");        a = input.nextInt();        System.out.print("再键入一个整数: ");        b = input.nextInt();        m = deff(a, b);        int n = a * b / m;        System.out.println("最大公约数: " + m);        System.out.println("最小公倍数: " + n);    }    public static int deff(int x, int y) {        int t;        if (x < y) {            t = x;            x = y;            y = t;        }        while (y != 0) {            if (x == y)                return x;            else {                int k = x % y;                x = y;                y = k;            }        }        return x;    }}

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

[java] view plain copy
print?
  1. import java.util.*;  
  2.   
  3. public class lianxi07 {  
  4.     public static void main(String[] args) {  
  5.         int digital = 0;  
  6.         int character = 0;  
  7.         int other = 0;  
  8.         int blank = 0;  
  9.         char[] ch = null;  
  10.         Scanner sc = new Scanner(System.in);  
  11.         String s = sc.nextLine();  
  12.         ch = s.toCharArray();  
  13.         for (int i = 0; i < ch.length; i++) {  
  14.             if (ch >= ‘0’ && ch <= ‘9’) {  
  15.                 digital++;  
  16.             } else if ((ch >= ‘a’ && ch <= ‘z’) || ch > ‘A’ && ch <= ‘Z’) {  
  17.                 character++;  
  18.             } else if (ch == ‘ ’) {  
  19.                 blank++;  
  20.             } else {  
  21.                 other++;  
  22.             }  
  23.         }  
  24.         System.out.println(”数字个数: ” + digital);  
  25.         System.out.println(”英文字母个数: ” + character);  
  26.         System.out.println(”空格个数: ” + blank);  
  27.         System.out.println(”其他字符个数:” + other);  
  28.   
  29.     }  
  30.   
  31. }  
import java.util.*;public class lianxi07 {    public static void main(String[] args) {        int digital = 0;        int character = 0;        int other = 0;        int blank = 0;        char[] ch = null;        Scanner sc = new Scanner(System.in);        String s = sc.nextLine();        ch = s.toCharArray();        for (int i = 0; i < ch.length; i++) {            if (ch >= '0' && ch <= '9') {                digital++;            } else if ((ch >= 'a' && ch <= 'z') || ch > 'A' && ch <= 'Z') {                character++;            } else if (ch == ' ') {                blank++;            } else {                other++;            }        }        System.out.println("数字个数: " + digital);        System.out.println("英文字母个数: " + character);        System.out.println("空格个数: " + blank);        System.out.println("其他字符个数:" + other);    }}
【程序8   
题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。   

[java] view plain copy
print?
  1. import java.util.*;  
  2.   
  3. public class lianxi08 {  
  4.     public static void main(String[] args) {  
  5.         long a, b = 0, sum = 0;  
  6.         Scanner s = new Scanner(System.in);  
  7.         System.out.print(”输入数字a的值: ”);  
  8.         a = s.nextInt();  
  9.         System.out.print(”输入相加的项数:”);  
  10.         int n = s.nextInt();  
  11.         int i = 0;  
  12.         while (i < n) {  
  13.             b = b + a;  
  14.             sum = sum + b;  
  15.             a = a * 10;  
  16.             ++i;  
  17.         }  
  18.         System.out.println(sum);  
  19.     }  
  20. }  
import java.util.*;public class lianxi08 {    public static void main(String[] args) {        long a, b = 0, sum = 0;        Scanner s = new Scanner(System.in);        System.out.print("输入数字a的值: ");        a = s.nextInt();        System.out.print("输入相加的项数:");        int n = s.nextInt();        int i = 0;        while (i < n) {            b = b + a;            sum = sum + b;            a = a * 10;            ++i;        }        System.out.println(sum);    }}

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

[java] view plain copy
print?
  1. public class lianxi09 {  
  2.     public static void main(String[] args) {  
  3.         System.out.println(”1到1000的完数有: ”);  
  4.         for (int i = 1; i < 1000; i++) {  
  5.             int t = 0;  
  6.             for (int j = 1; j <= i / 2; j++) {  
  7.                 if (i % j == 0) {  
  8.                     t = t + j;  
  9.                 }  
  10.             }  
  11.             if (t == i) {  
  12.                 System.out.print(i + ”     ”);  
  13.             }  
  14.         }  
  15.     }  
  16. }  
public class lianxi09 {    public static void main(String[] args) {        System.out.println("1到1000的完数有: ");        for (int i = 1; i < 1000; i++) {            int t = 0;            for (int j = 1; j <= i / 2; j++) {                if (i % j == 0) {                    t = t + j;                }            }            if (t == i) {                System.out.print(i + "     ");            }        }    }}


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

[java] view plain copy
print?
  1. public class lianxi10 {  
  2.     public static void main(String[] args) {  
  3.         double h = 100, s = 100;  
  4.         for (int i = 1; i < 10; i++) {  
  5.             s = s + h;  
  6.             h = h / 2;  
  7.         }  
  8.         System.out.println(”经过路程:” + s);  
  9.         System.out.println(”反弹高度:” + h / 2);  
  10.     }  
  11. }  
public class lianxi10 {    public static void main(String[] args) {        double h = 100, s = 100;        for (int i = 1; i < 10; i++) {            s = s + h;            h = h / 2;        }        System.out.println("经过路程:" + s);        System.out.println("反弹高度:" + h / 2);    }}