某次编程考试题

简答题:

1.  int n=1,则 ++(n++)的值是?

答案:2

2.  下面字符串最终的结果为() 
String str="Hello World";
str=str.substring(3,7);

答案:str="lo W";

       substring(index,end)方法中index从0开始,包前不包后。

编程题: 

1.求圆上的格点数量:

给定一个rSquare,表示一个圆的半径的平方。某圆的圆心在坐标系原点,需要计算返回处在该圆圆周上的格点(横纵坐标均为整数的点)数量。
输入:
输入一个整数rSquare。rSquare的取值范围在1到2,000,000,000之间(其中包括1和2,000,000,000)
输出:
返回圆上的格点数量
举例:
rSquare = 1,返回4. 圆心在原点、半径为1的圆通过4个格点:(1,0)、(0,1)、(-1,0)和(0,-1)

编程代码如下:

public class test {
	/**
	 * 圆的格点数
	 */
	public static void main(String[] args){
		int m = countPoints(1);
        System.out.println(m);
    }

    public static int countPoints(int rSquare){
        int res = 0;
        double r = Math.sqrt(rSquare);
        double temp = 0;

        for(double i=0;i<r;i++){
            temp = Math.sqrt(rSquare - i*i);
            if(temp-(int)temp==0){
                    res=res+1;
            }
            temp = 0;
        }     
        return res*4;
    }
	
}

2.最小众倍数:

给定你五个正整数,它们最小众倍数是指能够被其中至少三个数整除的最小正整数。
 给定你各不相同的整型a, b, c, d以及e。请返回它们的最小众倍数。
输入:
输入五个正整数a,b,c,d,e。a, b, c, d以及e中每个的取值范围都在1和100之间(其中包括1和100)。a, b, c, d以及e各不相同
输出:
返回它们的最小众倍数
举例:
a = 1 b = 2 c = 3 d = 4 e = 5, 返回4。4能够被1,2以及4整除,满足五个数中至少能被其中三个整除的定义

编程代码如下:

import java.util.Arrays;
import java.util.Scanner;

public class test {
	
	/**
	 * 最小众倍数
	 */
	public static void main(String[] args) {
		int[] arr = new int[5];
		Scanner input = new Scanner(System.in);
		for(int i=0;i<5;i++) {
			arr[i] = input.nextInt();
		}
		int count = 0;
		int result = 0;
		Arrays.sort(arr);//将数组排序
		for(int i = arr[2];;i++) {//最小的最小众倍数肯定是大于或等于arr[2]
			count = 0;
			for(int j=0;j<5;j++) {
				if(i%arr[j]==0) {
					count++;//每满足一次条件加1
				}
			}
			if(count >= 3) {//如果count>=3 则满足题目条件
				result = i;
				break;
			}
		}
		System.out.println(result);
	}
}

3.严格递增数列:

一个严格递增数列是指每个数都严格比前一个数大的一列数。一个严格递减数列是指每个数都严格比前一个数小的一列数。一个严格单调数列是指严格递增数列或是严格递减数列。例如1, 5, 6, 10 和 9, 8, 7, 1两个数列都是严格单调数列,而 1, 5, 2, 6和 1, 2, 2, 3就不是严格单调数列。给定你一个数列seq,请找到满足严格单调定义的最长连续子数列,并返回其长度

输入:

输入一个整形数组seq。seq含有1到50个元素(其中包括1和50),seq中的每个元素的取值范围都在1和100之间(其中包括1和100

输出:

返回严格单调的最长连续子序列长度

举例:

seq: {1, 7, 7, 8, 3, 6, 7, 2},返回3. 最长的严格单调数列是3,6,7.而子数列1,3,6,7是不符合要求的,因为1和3并不相连,此外1,7,7,8也是满足条件的,因为它不是严格递增的。

编程代码如下:

public class test {
	
	/**
	 * 严格递增数列
	 */
	public static void main(String[] args) {
		int[] seq = {1, 7, 7, 8, 3, 6, 7, 2};
		int result = longestMonotoneSequence(seq);
		System.out.println(result);
	}
	
	public static int longestMonotoneSequence(int[] seq) {
       int res=1; 
       int current=1; 
       for(int i=1;i<seq.length;i++){ 
           if(seq[i]>seq[i-1]){ 
                current++; 
           } 
           else{ 
                if(current>res){ 
                    //index=i-current; 
                    res=current; 
                } 
                current=1; 
           } 
       } 
       return res;       
	}
}

猜你喜欢

转载自blog.csdn.net/LeeAbby/article/details/81778590