自学Java第十天小练习

输入两个正整数m和n(1<=m, n<=1000),输出m到n之间的所有满足各位数字的立方和等于它本身的数。
package day10;

import java.util.Scanner;

/*
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入两个正整数m和n(1<=m, n<=1000),输出m到n之间的所有满足各位数字的立方和等于它本身的数。
要求定义并调用函数is(number)判断number的各位数字之立方和是否等于它本身。
输出语句:System.out.print(i+" ");
例:括号内是说明
输入:
2 (repeat=2)
100 400 (m=100, n=400)
1 100 (m=1, n=100)
输出:
153 370 371 (1*1*1+5*5*5+3*3*3=153;3*3*3+7*7*7=370;3*3*3+7*7*7+1*1*1=371)
1
*/
public class Test46 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入运算次数:");
        int repeat = sc.nextInt();
        for (int i = 1; i <= repeat; i++) {
            System.out.println("请输入范围:(例如:a b)");
            int m = sc.nextInt();
            int n = sc.nextInt();
            for (int j = m; j <= n; j++) {
                if (isNumber(j))
                    System.out.print(j + " ");
            }
            System.out.println();
        }
    }

    private static boolean isNumber(int number) {
        int a = number % 10;
        int b = number / 10 % 10;
        int c = number / 100;
        return number == a * a * a + b * b * b + c * c * c;
        /*String s = String.valueOf(number);
        int sum = 0;
        for (int i = 0; i < s.length(); i++) {
            int digit = Character.getNumericValue(s.charAt(i));
            sum += Math.pow(digit, 3);
        }
        return sum == number;
        */
    }

}
输入一个整数,将它逆序输出。
package day10;

import java.util.Scanner;

/*
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个整数,将它逆序输出。
要求定义并调用函数reverse(number),它的功能是返回number的逆序数。
例如reverse(12345)的返回值是54321。
例:括号内是说明
输入:
4 (repeat=4)
123456 -100 -2 99
输出:
654321
-1
-2
99
*/
public class Test47 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入运算次数:");
        int repeat = sc.nextInt();
        for (int i = 1; i <= repeat; i++) {
            System.out.println("请输入一个整数:");
            int z = sc.nextInt();
            int number = reverse(z);
            System.out.println(number);
        }
    }

    private static int reverse(int number) {
        int temp = number;
        if (number < 0) {
            number = -number;
        }
        String s = String.valueOf(number);
        int sum = 0;
        /*for (int i = s.length() - 1; i > -1; i--) {
            char c = s.charAt(i);
            int digit = Character.getNumericValue(c);
            sum += digit * (Math.pow(10, i));
        }
        */
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            int digit = Character.getNumericValue(c);
            sum += digit * (Math.pow(10, i));
        }
        if (temp < 0) {
            return -sum;
        } else
            return sum;
    }

}
输入一个正整数n,将其转换为二进制后输出。
package day10;

import java.util.Scanner;

/*
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入一个正整数n,将其转换为二进制后输出。
要求定义并调用函数 dectobin(n),它的功能是输出n的二进制。
例如,调用dectobin(10),输出1010。
输出语句:System.out.print(t); // t为某位二进制数
例:括号内是说明
输入:
3 (repeat=3)
15
100
0
输出:
1111
1100100
0
*/
public class Test48 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入运算次数:");
        int repeat = sc.nextInt();
        for (int i = 1; i <= repeat; i++) {
            System.out.println("请输入一个正整数:");
            int n = sc.nextInt();
            dectobin(n);
        }
    }

    private static void dectobin(int number) {
        String s = "";
        do {
            s = Integer.toString(number % 2) + s;
            number /= 2;
        } while (number > 0);
        System.out.println(s);
        /* (二进制转十进制)
        int sum = 0;
        String s = String.valueOf(number);
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            int n = Character.getNumericValue(c);
            sum += n * (Math.pow(2, s.length() - i - 1));
        }
        return sum;
        */
    }

}
输入一个正整数n (1<n<=10),再输入n个整数,输出平均值。
package day10;

import java.util.Scanner;

/*
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数n (1<n<=10),再输入n个整数,输出平均值。
例:括号内是说明
输入:
2 (repeat=2)
3 1 2 -6
5 12 2 5 4 0
输出:
aver=-1.0
aver=4.6
*/
public class Test49 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入运算次数:");
        int repeat = sc.nextInt();
        for (int i = 1; i <= repeat; i++) {
            System.out.println("请输入一个正整数n:");
            int n = sc.nextInt();
            float sum = 0.0f;
            int[] array = new int[n];
            System.out.println("请输入n个整数:(例如:a b c……)");
            for (int j = 0; j < n; j++) {
                array[j] = sc.nextInt();
                sum += array[j];
            }
            float aver = sum / n;
            System.out.println("aver=" + aver);
        }
    }

}
输入一个正整数n (1<n<=10),再输入n个整数,输出最大值及其下标。
package day10;

import java.util.Scanner;

/*
输入一个正整数n (1<n<=10),再输入n个整数,输出最大值及其下标
(设最大值惟一,下标从0开始)。
例:括号内是说明
输入:
3 (repeat=3)
3 1 6 4
3 10 8 1
5 1 2 5 4 0
输出:
max=6, index=1(最大值6的下标是1)
max=10, index=0(最大值10的下标是0)
max=5, index=2(最大值5的下标是2)
*/
public class Test50 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入运算次数:");
        int repeat = sc.nextInt();
        for (int i = 1; i <= repeat; i++) {
            System.out.println("请输入一个正整数n:");
            int n = sc.nextInt();
            int[] array = new int[n];
            int max = 0, index = 0;
            System.out.println("请输入n个整数:(例如:a b c……)");
            for (int j = 0; j < n; j++) {
                array[j] = sc.nextInt();
                /*if (array[j] > max) {
                    max = array[j];
                    index = j;
                }*/
                if (array[index] < array[j])
                    index = j;
            }
            //System.out.println("max=" + max + ", index=" + index);
            System.out.println("max=" + array[index] + ", index=" + index);
        }
    }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

完美的BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值