简单面试题

  1. 定义一个整型变量并赋任意五位正整数作为初始值,判断它是不是五位回文数
    (五位回文数:个位与万位相同,十位与千位相同,例如:12321)
public class Demo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个五位整数:");
        int i = scanner.nextInt();
        int[] a=new int[5];
        int j=0;
        while (j<=4){
            a[j]= (int) (i/(Math.pow(10,4-j)));
            i%=Math.pow(10,4-j);
            j++;
        }
        if(a[0]==a[4]&&a[1]==a[3]){
            System.out.println("该五位数是回文数");
        }else{
            System.out.println("该五位数不是回文数");
        }
    }
}

  1. 定义一个整型变量并赋任意五位正整数作为初始值,输出各位数字之和
    (例如:12345 各位之和是:1+2+3+4+5 。也就是 15)
public class Demo2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个五位整数:");
        int i = scanner.nextInt();
        int[] a=new int[5];
        int j=0,sum=0;
        while (j<=4){
            a[j]= (int) (i/(Math.pow(10,4-j)));
            i%=Math.pow(10,4-j);
            j++;
        }
        for (int t : a) {
            sum+=t;
        }
        System.out.println("各位之和是:"+sum);
    }
}
  1. 定义整型变量 a、b,写出将 a、b 两个变量值进行互换的程序
    (要求不能使用第三个变量)
public class Demo3 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入整数a:");
        int a = scanner.nextInt();
        System.out.println("请输入整数b:");
        int b = scanner.nextInt();
        a=a+b;
        b=a-b;
        a=a-b;
        System.out.println("a="+a+"\tb="+b);
    }
}

4、打印九九乘法表 ,效果如图:
在这里插入图片描述

public class Demo {
    public static void main(String[] args) {
        System.out.println("乘法口诀表");
        for(int i=1;i<=9;i++){
            for(int j=1;j<=i;j++){
                System.out.print(j+"*"+i+"="+i*j+"\t");
            }
            System.out.println();
        }
    }
}

5、打印三位数中的所有水仙花数 所谓“水仙花数”即一个整数满足其值等于各个数位的立方和。 如: 153 是一个水仙花数,因为 153= 1³+5³+3³

public class Demo {
    public static void main(String[] args) {
        int j,temp;
        int[] a=new int[3];
        for(int i=100;i<1000;i++){
            j=0;
            temp=i;
            while (j<=2){
                a[j]= (int) (i/(Math.pow(10,2-j)));
                i%=Math.pow(10,2-j);
                j++;
            }
            i=temp;
            if(Math.pow(a[0],3)+Math.pow(a[1],3)+Math.pow(a[2],3)==i){
                System.out.println(temp);
            }
        }
    }
}

6.对数组{1,3,9,5,6,7,15,4,8}进行排序,然后使用二分查找 6 并输出排序后的下标。

public class Demo {
    public static void main(String[] args) {
        int a[]={1,3,9,5,6,7,15,4,8};
        
        //冒泡排序
        for(int i=1;i<a.length;i++){
            for(int j=0;j<a.length-i;j++){
                if(a[j]>a[j+1]){
                    int temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
                }
            }
        }
        System.out.println("冒泡排序后的结果:");
        for (int i : a) {
            System.out.print(i+" ");
        }

        //二分查找
        int target=6,min=0,max=a.length-1,middle;
        while(min<=max){
            middle=(min+max)/2;
            if(a[middle]<target){
                min=middle+1;
            }else if(a[middle]>target){
                max=middle-1;
            }else{
                System.out.println("下标为:"+middle);
                return;
            }
        }
    }
}

7.给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保
持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12] 输出: [1,3,12,0,0]

public class Demo {
    public static void main(String[] args) {
        int nums[]={0,1,0,3,12};
        for(int i=1;i<nums.length;i++){
            for(int j=0;j<nums.length-i;j++){
                if(nums[j]==0){
                    int temp=nums[j];
                    nums[j]=nums[j+1];
                    nums[j+1]=temp;
                }
            }
        }
        System.out.println("排序后的结果:");
        for (int i : nums) {
            System.out.print(i+" ");
        }
    }
}

8.今天同学们相约一起爬山游玩,为了更好的进行这场活动,大家准备推举一个人作为出游的临时队长。为了体现合理公平,大家提出了一个比较有趣的规则。所有人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,剩下的人继续报数,最后留下的当选为队长。请你通过编写程序,求出一组人中的队长是原来第几位同学。

public class Demo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] a=new int[n];
        int t=0,i=0,num=0;
        while(num<a.length-1){
            if(a[i]==0){
                //还没淘汰
                t++;
                if(t%3==0){
                    //退出
                    a[i]=1;
                    num++;
                    System.out.println("淘汰"+(i+1));
                }
            }
            i++;
            if(i==a.length)
                i=0;
        }
        
        for(int j=0;j<a.length;j++){
            if(a[j]==0){
                System.out.println("原来的第"+(j+1)+"位同学为队长");
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值