博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《java练习题》习题集一
阅读量:4346 次
发布时间:2019-06-07

本文共 9295 字,大约阅读时间需要 30 分钟。

Java总结:

【程序1】

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

import java.util.Scanner;/** * 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? * 分析 一月 1对, 2月 1对,3月 2对,4月 3对,5月5对,6月8对,7月13对,8月 21只 */public class Subject1 {    public static void main(String[] args) {        System.out.print("请输入你想知道的兔子数量的月份:");        Scanner scanner=new Scanner(System.in);        int n=scanner.nextInt();//获取输入的整数        System.out.println(test(n));        System.out.println(fun(n));        scanner.close();    }    /**     * 菜鸟写法     * @param i     * @return     */    public static int test(int i){        int tot = 0;        int a = 0;        int b = 1;        for(int j = 0;j

运行结果:

 

【程序2】

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

/**  * 【程序2】  *  题目:判断101-200之间有多少个素数,并输出所有素数。  *  *  分析:什么是素数,不能被自己和1整除的数。  */ public class Subject2 {
public static void main(String[] args) {
getPrimeNumber(101,200); } /** * 判断a和b之间有多少个素数 * @param a * @param b */ public static void getPrimeNumber(int a,int b){
int sum = 0; if(a >= b){
System.out.println("a不能大于等于b!"); } System.out.print("素数:"); for(int i=a;i<=b;i++){
if(isPrimeNumber(i)){
sum += 1; System.out.print(i+" "); } } System.out.println(); System.out.println("存在素数数量:"+sum); } /** * 判断num是否是一个素数 * @param i * @return */ private static boolean isPrimeNumber(int i) {
boolean flag = true; for(int j=2;j <= i/2;j++){
if(i%j == 0){
flag = false; break; } } return flag; } }

运行结果:

【程序3】

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

/*** * 【程序3】 * 题目:打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 */public class Subject3 {    public static void main(String[] args) {        for(int i= 100 ; i<=999;i++){            if(isNarcissus(i)){                System.out.println("水仙花数:"+i);            }        }    }    public static boolean  isNarcissus(int a){        int num1 = 0;  //个位        int num2 = 0;  //十位        int num3 = 0;  //百位        num3 = a/100;        num2 = (a - num3*100)/10;        num1 = a - num3*100 - num2*10;        if(Math.pow(num1,3) + Math.pow(num2,3) + Math.pow(num3,3) ==a){            return true;        }        return false;    }}

运行结果:

【程序4】

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

/** * 【程序4】 * 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 */public class Subject4 {    public static void main(String[] args) {        System.out.print("请输入需要分解因数的整数:");        Scanner scanner=new Scanner(System.in);        int a = scanner.nextInt();//获取输入的整数        decompose(a);    }    /**     * 分解质因数     * @param num     * @return     */    public static void decompose(int num){        int tmp = num/2;        for(int i=2;i <= tmp ;i++){            if(num%i == 0){                num = num/i;                System.out.println("质因数为:"+i);                i=1;                continue;            }        }    }}

运行结果:

【程序5】

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

/** * 【程序5】 * 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 */public class Subject5 {    public static void main(String[] args) {        System.out.println("请输入学生成绩:");        Scanner scanner = new Scanner(System.in);        int a = scanner.nextInt();        String result = a>=90? "A" :  (60<=a && a<90? "B" :"C");        System.out.println("该学生的最终评级为:"+result);    }}

运行结果:

【程序6】

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

import java.util.Scanner;/** * 【程序6】 * 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 */public class Subject6 {    public static void main(String[] args) {        System.out.println("请输入第一个正整数:");        Scanner scanner = new Scanner(System.in);        int a = scanner.nextInt();        System.out.println("请输入第二个正整数:");        int b = scanner.nextInt();        int maxCommonDivisor = maxCommonDivisor(a,b);        System.out.println("最大公约数:"+ maxCommonDivisor);        int minCommonMultiple = (a*b)/maxCommonDivisor;        System.out.println("最小公倍数:"+ minCommonMultiple);        scanner.close();    }    /**     * 获取num1和num2的最大公约数     * @param num1     * @param num2     * @return     */    public static int maxCommonDivisor(int num1,int num2){        int result = 1;        int tmp = num1>num2? num2 :num1;        for (int i = 2; i <= tmp; i++) {            if(num1%i == 0 && num2%i == 0){                result = i*result;                num1 = num1/i;                num2 = num2/i;                i=1;            }        }        return result;    }}

运行结果:

【程序7】

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

import java.util.Scanner;/** * 【程序7】 * 题目:输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。 */public class Subject7 {    public static void main(String[] args) {        System.out.println("请输入字符串:" );        Scanner scanner=new Scanner(System.in);        scanner.useDelimiter("\n");        String tmpStr = scanner.next();        classify(tmpStr);    }    public static void classify(String str){        char[] strArr = str.toCharArray();        int num1 = 0;  //字母        String num1Str = "";        int num2 = 0;  //数字        String num2Str = "";        int space = 0; //空格        String spaceStr = "";        int other = 0; //其他        String otherStr = "";        for (int i = 0; i < strArr.length ; i++) {            int ascii = (int)strArr[i];            if( 48<= ascii && ascii <= 59){                num2 = num2 + 1;                num2Str = num2Str +strArr[i] +" ";            }else if(ascii == 32){                space = space +1;            }else if((65<= ascii && ascii <= 90) || (97 <= ascii && ascii <=  122)){                num1 = num1 + 1;                num1Str = num1Str +strArr[i] +" ";            }else{                other = other + 1;                otherStr = otherStr +strArr[i] +" ";            }        }        System.out.println("存在字母个数:" + num1);        System.out.println("存在字母如下:" + num1Str);        System.out.println("存在数字个数:" + num2);        System.out.println("存在数字如下:" + num2Str);        System.out.println("存在空格个数:" + space);        System.out.println("存在其他个数:" + other);        System.out.println("存在其他如下:" + otherStr);    }}

运行结果:

【程序8】

题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。输出结果的形式如:2+22+222=246;

import java.math.BigDecimal;import java.util.Scanner;/** * 【程序8】 * 题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。输出结果的形式如:2+22+222=246; */public class Subject8 {    public static void main(String[] args) {        System.out.println("请输入数字1(小于10):" );        Scanner scanner=new Scanner(System.in);        int a = scanner.nextInt();        System.out.println("请输入数字2(1-10):" );        int b = scanner.nextInt();        sum(a,b);    }    /**     * 求和     * @param num1     * @param num2     */    public static void sum(int num1,int num2) {        String numStr = "";        String result = "";        BigDecimal bigDecimal = new BigDecimal("8");        for(int i=1;i< num1; i++ ){            numStr = numStr+num2;            if(i==1){                result = result+numStr;            }else{                result = result+"+"+numStr;            }            bigDecimal = bigDecimal.add(new BigDecimal(numStr));        }        result = result +"=" +bigDecimal.toString();        System.out.println("结果:"+result);    }}

运行结果:

【程序9】

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

 

import java.util.ArrayList;import java.util.List;/*** * 【程序9】 * 题目:一个数如果恰好等于它的因子之和,这个数就称为”完数”。例如6=1+2+3.编程找出1000以内的所有完数。 */public class Subject9 {    public static void main(String[] args) {        for (int i = 0; i <1000 ; i++) {            perfectNum(i);        }    }    /**     * 判断是否是完数     */    public static void perfectNum(int num){        List
list = decompose(num); int sum = 0; for(int i :list){ sum = sum + i; } if(num == sum){ System.out.println("完数:"+num); } } /** * 分解质因数 * @param num * @return */ public static List decompose(int num){ List
list = new ArrayList(); list.add(1); int tmp = num/2; for(int i=2;i <= tmp ;i++){ if(num%i == 0){ list.add(i); continue; } } return list; }}

运行结果:

【程序10】

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;n次落地经过路线总长度和下次反弹的高度。

import java.util.Scanner;/** * 【程序10】 * 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;n次落地经过路线总长度和下次反弹的高度。 */public class Subject10 {    public static void main(String[] args) {        System.out.println("请选择第几次落地:");        Scanner scanner = new Scanner(System.in);        int n = scanner.nextInt();        sumLength(n);    }    public static void sumLength(int n){        double height = 100;        double sumLength = 100;        for(int i=1; i<=n; i++){            sumLength = sumLength + height;            height = height/2;        }        System.out.println("总运动距离为:"+sumLength);        System.out.println("总运动距离为:"+height);    }}

运行结果:

参考:https://blog.csdn.net/zzzzzzzhu/article/details/82355001

 

转载于:https://www.cnblogs.com/jssj/p/11147566.html

你可能感兴趣的文章
PHP的学习--cookie和session--来自copy_02
查看>>
异界冒险隐私协议
查看>>
一个简单的C语言语法检查器的实现
查看>>
Unity3D学习笔记(二十五):Json
查看>>
php操作JSON格式数据
查看>>
Wireshark分析之TCP协议(二)
查看>>
day 64 crm项目(1) admin组件的初识别以及应用
查看>>
8.基数排序
查看>>
Timetable CodeForces - 946D (预处理+背包)
查看>>
spring boot-1.简单介绍及环境搭建
查看>>
Spring-IOC学习
查看>>
【bzoj2724】蒲公英(分块)
查看>>
15 int *ptr= (int *)(&a+1)跨了整个数组长度
查看>>
观察者
查看>>
memcached学习
查看>>
Google Analytics与百度统计原理
查看>>
Luogu P2194 HXY烧情侣
查看>>
Python类库三两事 - 一次解决
查看>>
php fopen utf8文件
查看>>
css选择器
查看>>