java基础小练习

/*1.将一个整数数位翻转
如: 整数 56123
返回结果为整数: 32165*/

import java.util.Scanner;
public class Day02E2T1 {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个整数");
    long num = sc.nextLong();
    long sum = 0;
    while (num != 0) {
        sum = sum * 10 + num % 10;
        num = num / 10;
    }
    System.out.println("这个数的翻转数是" + sum);

}

}


/2:一个5位数,判断它是不是回文数,例如12321是回文数/

import java.util.Scanner;
public class Day02E2T2 {

public static void main(String[] args) 
{
    Scanner sc=new Scanner(System.in);
    System.out.println("请输入一个整数");
    long num=sc.nextLong();
    long temp=num;
    long sum=0;
    while(num!=0)
    {

        sum=sum*10+num%10;
        num=num/10;
    }

    if(temp==sum)
        System.out.println("这个数是回文数");
    else
        System.out.println("这个数不是回文数");

}

}


/*
* 2.使用一个函数求两个数的和,差,积,商
*/
package com.qianfeng.works;

import java.util.Scanner;

public class Day05E1T2 {

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个数:");
    double m = sc.nextDouble();
    System.out.println("请再输入一个数:");
    double n = sc.nextDouble();
    System.out.println("您要进行什么计算?计算和请输入1,计算差请输入2,计算积请输入3,计算商请输入4");
    int i =sc.nextInt();

    double t=0;

    switch (i){
        case 1:
            t=fun(m,n);
            break;
        case 2:
            t=fun(m,n,3);
            break;
        case 3:
            t=fun(m,n,3,4);
            break;
        case 4:
            t=fun(m,n,3,4,5);
            break;

    }

    System.out.println("计算结果为:"+t);

}

public static double fun(double num1,double num2){
    double z=0;
    z=num1+num2;
    return z;
}

public static double fun(double num1,double num2,double num3){
    double z=0;
    z=num1-num2;
    return z;
}

public static double fun(double num1,double num2,double num3,double num4){
    double z=1;
    z=num1*num2;
    return z;
}

public static double fun(double num1,double num2,double num3,double num4,double num5){
    double z=1;
    z=num1/num2;
    return z;
}

}


/*
4.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
*/
package com.qianfeng.zy;

import java.util.Scanner;

public class Day02ExtraWorksT4 {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入相加的数的个数:");
    int n = sc.nextInt();
    System.out.println("请输入一个数:");
    int t = sc.nextInt();
    int p = t;
    int sum = 0;
    for (int i = 1; i <= n; i++) {
        // p=t%10;
        sum += t;
        t = t * 10 + p;
    }
    System.out.println(sum);

}

}


/*
5.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和
*/
package com.qianfeng.zy;

import java.util.Scanner;

public class Day02ExtraWorksT5 {

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入要相加多少项");
    int n = sc.nextInt();
    int fz = 2, fm = 1, sum = 0, m;
    for (int i = 1; i < n; i++) {
        sum += fz / fm;
        m = fm;
        fm = fz;
        fz = fz + m;
    }
    System.out.println(sum);
}

}


/*
23. 已知 abc+cba=1333, 其中的a,b,c均为一位数,编写一个程序,求出a,b,c分别代表什么数字
*/
package com.qianfeng.zy;

public class Day04WorksT23 {

public static void main(String[] args) {

    int a,b,c,m;
    for (int i = 100; i <= 999; i++) {
        a=i%10;
        b=(i/10)%10;
        c=i/100;
        m=a*100+b*10+c;
        if (i+m==1333) {
            System.out.println(i);
            System.out.println("a="+a+" b="+b+" c="+c);
        }

    }
}

}


/*
* 1,将给定数组进行反转。{32,65,12,89,41} {41,89,12,65,32}
*/
package com.qianfeng.zy;

public class Day06WorksT1 {

public static void main(String[] args) {

    int[] arr1 = new int[]{32,65,12,89,41};
    System.out.println("原数组为:");
    outputArray(arr1);

    reverse(arr1);

    System.out.println("反转后的数组为:");
    outputArray(arr1);
}


static void reverse(int arr[]){

    for (int i = 0; i < arr.length/2; i++) {//注意终止条件应为i < arr.length/2
        arr[i]=arr[i]^arr[arr.length-1-i];
        arr[arr.length-1-i]=arr[i]^arr[arr.length-1-i];
        arr[i]=arr[i]^arr[arr.length-1-i];
    }

    /*int t;
    for(int i=0,j=arr.length-1;i<j;i++,j--)
    {
        t=arr[i];
        arr[i]=arr[j];
        arr[j]=t;
    }*/
}

static void outputArray(int arr[]){
    System.out.print("[");
    for (int i = 0; i < arr.length; i++) {
        if(i==arr.length-1){
            System.out.print(arr[i]);
            System.out.println("]");
        }else{
            System.out.print(arr[i]+",");
        }
    }
}

}


/*
* 1.定义一个数组,数组成员10个,找出数组中最大数连同下标一起输出
* 2.B哥去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分?
* 3.给定一个整型数组,数组成员10个,求该数组中第二大的数的下标
*/

package com.qianfeng.zy;

import java.util.Random;

public class Day05WorksT1_T3 {

public static void main(String[] args) {

    //1.输出数组最大数及其下标
    int[] arr1 = new int[10];
    inputArray(arr1);
    System.out.println("自动生成的数组为:");
    outputArray(arr1);
    maxAndSub_i(arr1);
    System.out.println();


    //2.歌手打分
    int[] arr2 = new int[10];
    inputArray(arr2);
    System.out.println("自动生成的数组为:");
    outputArray(arr2);
    System.out.println("歌手平均分为:"+avgSingScore(arr2));
    System.out.println();


    //3.求该数组中第二大的数的下标
    int[] arr3 = new int[10];
    inputArray(arr3);
    System.out.println("自动生成的数组为:");
    outputArray(arr3);
    secondMax(arr3);
    System.out.println();
}

//随机生成数组
public static void inputArray(int arr[]){
    for (int i = 0; i < arr.length; i++) {
        arr[i] = new Random().nextInt(100);
    }
}

//自定义打印数组
public static void outputArray(int arr[]){
    System.out.print("[");
    for (int i = 0; i < arr.length; i++) {
        if(i==arr.length-1){
            System.out.print(arr[i]);
        }else{
            System.out.print(arr[i]+",");
        }
    }
    System.out.println("]");

}

//1.输出数组最大数及其下标
public static void maxAndSub_i(int arr[]) {

    int max=arr[0];
    for (int i : arr) {
        if(i>max){
            max=i;
        }
    }
    for (int i = 0; i < arr.length; i++) {
        if(arr[i]==max){
            System.out.println("最大数的下标i="+i);
            System.out.println("最大数max="+max);
        }
    }


}


//2.唱歌打分
public static double avgSingScore(int arr[]){
    int max=arr[0];
    int min=arr[0];
    int sum=0;
    double avg=0;
    for (int i = 0; i < arr.length; i++) {
        if(arr[i]>max){
            max=arr[i];
        }
        if(arr[i]<min){
            min=arr[i];
        }
        sum+=arr[i];
    }
    avg=(sum-max-min)/(arr.length-2);
    return avg;
}


//3.求该数组中第二大的数的下标
public static void secondMax(int arr[]){
    int max;
    int secondmax;
    if(arr[1]>arr[0]){
        max=arr[1];
        secondmax=arr[0];
    }else{
        max=arr[0];
        secondmax=arr[1];
    }
    for (int i = 0; i < arr.length; i++) {
        if(arr[i]>max){
            secondmax=max;
            max=arr[i];
        }else if(arr[i]>secondmax){
            secondmax=arr[i];
        }
    }
    for (int i = 0; i < arr.length; i++) {
        if(arr[i]==secondmax){
            System.out.println("第二大的数的下标i="+i);
            System.out.println("最二大数secondmax="+secondmax);
        }
    }


}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值