程序媛菜鸡面经(一 - 前端岗编程题篇)

最近快要实习面试了,赶紧打开各类面经刷题……
从今天开始会记录所刷编程题的内容及我自己调试出来的代码……
如有bug或优化方法,欢迎评论区交流~

编程题一:

输入www.baidu.com,输出com.baidu.www

Java示例代码:

import java.util.Scanner;

public class Reverse {
    public  static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int i,j,tempNum = 0;
        String []strings = new String[3];

        System.out.println("请输入您要输入的网址:");
        String temp = sc.nextLine();

        for(i=0;i<3;i++){
            strings[i] = "";
            for (j=tempNum;j<temp.length();j++){
                if(String.valueOf(temp.charAt(j)).equals(".")){
                    tempNum++;
                    break;
                }
                else{
                    strings[i] += String.valueOf(temp.charAt(j));
                    tempNum++;
                }
            }
        }
        System.out.println("您所需的输出为:\n"+strings[2]+"."+strings[1]+"."+strings[0]);
    }
}

//注意的知识点:
// return是退出现在的函数,break是当前的循环(for,while,repeat),直接结束循环,continue是循环里跳过这一次 直接执行下一次循环;
//Scanner输入字符串可以用next(),或者nextLine(),这两个读取的方式有区别;
// String类型判等要用A.equals(B);
// String类型读取字符串长度用String.length()方法;
// 读取每一位字符串要用charAT()方法;
// 储存其他类型的为字符串要用String.valueOf()方法

编程题二:

有一条公路,起点是0公里,终点是100公里。这条公路被划分为N段,每一段有不同的限速。现在他们从A公里处开始,到B公里处结束。请帮他们计算在不超过限速的情况下,最少需要多少时间完成这段路程。

输入:
1、第一行为公路划分的段数N
2、接下来N行,每行三个正整数,分别是起始点,终止点(前后两段一定保证是连续的),和限速值(单位:公里/小时)
3、紧接是要计算的起始点A,和终止点B

输出:
1、输出为一行,即从A到B需要的最少时间(单位:小时),精确到小数点后两位

Java示例代码

import java.util.Scanner;

class setLimit{
    int Max = 100,N=0,A=0,B=0;//初始化最大段数,用户分段数,起点A、B
    int [][]road = new int[3][Max];//一维为起点,二维为终点,三维为限速
    Scanner sc = new Scanner(System.in);

    setLimit(){
        System.out.println("请输入需要分的段数:");
        N = sc.nextInt();
    }

    void getNum(){
        int i;
        System.out.println("请依次输入每一段的起点、终点、限速值:");
        for(i=0;i<N;i++){
            road[0][i] = sc.nextInt();
            road[1][i] = sc.nextInt();
            road[2][i] = sc.nextInt();
        }//输入数组
    }

    void getAB(){
        System.out.println("请依次输入起始公里、终止公里:");
        A = sc.nextInt();
        B = sc.nextInt();
    }

    int getA_up(){
        int i=0;
        while(A>=road[0][i])
            i++;

        return i;
    }

    int getB_down(){
        int i=0;
        while(B>=road[0][i])
            i++;

        return i;
    }

    void getTime(int a, int b){
        int i;
        float time;

        time = (float)((road[0][a]-A)/road[2][a-1])+(float) ((B-road[0][b-1])/road[2][b-1]);

        for(i=a;i<b-1;i++)
            time = time + ((float)(road[1][i]-road[0][i])/(float)road[2][i]);

        System.out.println("从A到B所需的最短时间为:"+String.format("%.2f",time)+"(单位:小时)");
    }
}

public class Race {
    public static void main(String[] args){
        setLimit N1 = new setLimit();
        N1.getNum();
        N1.getAB();
        N1.getTime(N1.getA_up(),N1.getB_down());
    }
}

//if((N > Max)||(N <= 0)){
//        System.out.println("请检查输入段数是否超过上线100或为负数!");
//        return;
//        }

//road[0][0] = 0;
//road[1][N-1] = 100;
初始化起点与终点

// for(i=1;i<N-1;i++){
//      temp0 = sc.nextInt();
//      temp1 = sc.nextInt();
//      while((temp0<=0)||(temp1<=0)||(temp0<=temp1)||(temp0!=road[0][i-1])){
//        System.out.println("您输入的起点或终点存在异常,请重新输入!");
//        temp0 = sc.nextInt();
//        temp1 = sc.nextInt();
//        }
//       road[1][i] = temp1;
//       road[0][i+1] = temp1;
//       road[2][i] = sc.nextInt();
// }
//判断前后端点是否连续
// temp0为输入起点中间变量,temp1为输入终点中间变量

编程题三:

编写程序,实现输入一个数组和一个数n,将数组中出现次数超过n次的元素输出;

示例代码(Java):

import java.util.Scanner;

class base{
    Scanner sc = new Scanner(System.in);

    int setLength(){
        System.out.println("请输入您想要创建的数组长度");
        int length = sc.nextInt();
        return length;
    }

    int[] setArray(int l){
        int []arr = new int[l];
        System.out.println("请依次输入数组各元素的数值:");
        for(int i=0;i<l;i++)
            arr[i] = sc.nextInt();
        return arr;
    }

    int[] SortArr(int arr[] ){
        int temp;
        for(int i=0;i<arr.length-1;i++)
            for(int j=0;j<arr.length-1-i;j++){
            if(arr[j]>arr[j+1]){
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
            }
        return arr;
    }

    int[] FindArr(int arr[]){
        int []timesArr = new int[arr.length];
        int node = 0,i;

        for(i=0;i<arr.length;i++)
            timesArr[i] = 0;

        for(i=0;i<arr.length;i++){
            if(arr[i] == arr[node])
                timesArr[node]++;
            else{
                node = i;
                timesArr[i] = 1;
            }
        }
        return timesArr;
    }

    void PrintArrN(int arr0[],int arr1[]){
        System.out.println("请输入一个数字n");
        int n = sc.nextInt();

        System.out.println("数组中输出超过n次的数据有:");
        for(int i=0;i<arr0.length;i++)
            if(arr1[i]>=n)
                System.out.print(arr0[i]+"  ");
    }
}

public class arrPrint {
    public static void main(String[] args){
        base Base = new base();
        int []arr0 = Base.SortArr(Base.setArray(Base.setLength()));
        int []arr1 = Base.FindArr(arr0);
        Base.PrintArrN(arr0,arr1);
    }
}

emmmmmm……某编程大佬小哥哥说我分函数分的太细了……
原话:“不用一个输入还要分好几次,分太细了反而让你的代码不好看。”
Mark一下,以后改正。

如需转载请注明出处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值