Java工程师程序设计题

2/23/2023 server

# 1.计算邮费

请根据邮件的重量和用户选择是否加急计算邮费?

计算规则:

  • 重量在1000以内(包括),基本费10元;
  • 超过1000克的部分,每500克加收超重费5元,不足500克部分按500克计算;
  • 如果用户选择加急,多收8元。

输入:
输入一个正整数x和一个字符c(y 或 n),之间用一个空格隔开,分别表示重量和 是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。
输出:输出一个正整数,表示邮费。

查看答案
public class CalculatePostage {
    public static void main(String[] args) {
        double x = Integer.parseInt(args[0]);
        String c = args[1];
        System.out.println(x);
        System.out.println(c);
        int num = 0;
        if(x<=1000){
            num = 10;
        }else{
            double a = Math.ceil((x-1000)/500);
            System.out.println((x-1000)/500);
            System.out.println(Math.ceil((x-1000)/500));
            num = 10 + (int)a*5;
        }
        if(c.equals("y")){
            num+=8;
        }
        System.out.println("一共"+num+"元");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 2.爱因斯坦的阶梯

请写程序计算该阶梯至少有多少阶?

计算规则:

  • 爱因斯坦有一个长阶梯,若每步上2阶,最后剩下1阶;
  • 若每步上3阶,最后剩2阶;
  • 若每步上5阶,最后剩下4阶;
  • 若每步上6阶,最后剩5阶;
  • 只有每步上7阶,最后刚好一阶也不剩

输入:无
输出:阶梯的最小值

本题用简单枚举法得分只能得一半分,请优化程序,提高运行效率。
查看答案
public class Stairs {
    public static void main(String[] args) {
        int num = 29;
        while(true){
            num += 30;
            if(num%7==0){
                System.out.println(num);
                break;
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12

# 3.矩阵填充

观察例1和例2的旋转规律,填充如下形式的方阵

例1

3阶方阵
1  8  7
2  9  6
3  4  5

例2

5阶方阵
1  16  15  14   13
2  17  24  23  12
3  18  25  22  11
4  19  20  21  10
5    6    7     8    9

输入:
输入一个整数n,不会大于10,表示矩阵的阶。上面的两个例子输入为 3 和 5 。

输出:
输出填充后的矩阵,每个数字占4位。请参考上面 例1 和 例2 设计输出。

查看答案
public class Matrix {
    public static void main(String[] args) {
        int x = Integer.parseInt(args[0]);
        int[][] a = new int[x][x];
        int y = 0;
        int num = 1;
        while(y<x){
            for(int j=y;j<x-1;j++){
                a[j][y] = num;
                num++;
            }
            for(int j=y;j<x-1;j++){
                a[x-1][j] = num;
                num++;
            }
            for(int j=x-1;j>=y+1;j--){
                a[j][x-1] = num;
                num++;
            }
            for(int j=x-1;j>=y+1;j--){
                a[y][j] = num;
                num++;
            }
            if(x-1 == y){
                a[y][y] = num;
            }
            y++;
            x--;
        }
        for (int[] is : a) {
            for (int is2 : is) {
                System.out.print(is2);
                System.out.print("\t");
            }
            System.out.print("\n");
        }
        System.out.println(a);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
更新时间: 2023-02-23 10:36