PAT基礎編程題目集----1

大家有什麼疑問可以在評論區評論,一起交流進步啊o(∩_∩)o

釐米轉換英尺英寸
import java.util.Scanner;
public class Main {
    public static void main(String[] args) throws Exception {
        Scanner scan = new Scanner(System.in);
        int read = scan.nextInt();
        double realFoot = (read * 0.01 / 0.3048);
        int foot = (int) realFoot;
        double realInch = (realFoot - foot)*12;
        int inch = (int) realInch;
        System.out.println(foot + " " + inch);
    }
}

這個題坑在哪裏呢?公式裏的英尺和英寸整個那個括號裏表示的是英尺的值,英寸除以12表示的是英尺的小數部分,我以爲英寸是一米等於多少英寸的英寸呢,後來才反應過來公式裏的英寸指的是英尺的小數部分轉換爲英寸來表示!!

然後是幾點
import java.util.Scanner;
public class Main {
    public static void main(String[] args) throws Exception {
        Scanner scan = new Scanner(System.in);
        String read = scan.nextLine();
        String[] s = read.split(" ");
        String s1 = s[0].substring(0, s[0].length()/2);
        String s2 = s[0].substring(s[0].length()/2);
        int hours = Integer.parseInt(s1);
        int mins = Integer.parseInt(s2)+hours*60;

        int min = Integer.parseInt(s[1]);
        int realMin = (min+mins)%60;
        int realHours = (min+mins)/60;
        System.out.println(realHours*100+realMin);
    }
}

思路就是先把原來的時間轉化成分鐘,再和新的分鐘數運算,最後再換成小時和分鐘即可,坑在哪裏呢?分鐘如果是個位數必須要顯示兩位才行,也就是零幾或者零零,這個時候不要直接用字符串連接,用數學運算的形式即可解決。

逆序的三位數
import java.util.Scanner;
public class Main {
    public static void main(String[] args) throws Exception {
        Scanner scan = new Scanner(System.in);
        int read = scan.nextInt();
        System.out.println(read/100+read%100/10*10+read%100%10*100);
    }
}

這個挺簡單的,沒坑

BCD解密
import java.util.Scanner;
public class Main {
    public static void main(String[] args) throws Exception {
        Scanner scan = new Scanner(System.in);
        int read = scan.nextInt();
        System.out.println(Integer.toHexString(read));
    }
}

Integer類自帶了一些進制轉換的方法,當然你也可以自己根據進制轉換規則自己做。

表格輸出
public class Main {
    public static void main(String[] args) throws Exception {

        /**
         * ------------------------------------
         * Province      Area(km2)   Pop.(10K)
         * ------------------------------------
         * Anhui         139600.00   6461.00
         * Beijing        16410.54   1180.70
         * Chongqing      82400.00   3144.23
         * Shanghai        6340.50   1360.26
         * Zhejiang      101800.00   4894.00
         * ------------------------------------
         */
        System.out.printf("------------------------------------");
        System.out.println();
        System.out.printf("%-11s%12s%12s","Province","Area(km2)","Pop.(10K)");
        System.out.println();
        System.out.printf("------------------------------------");
        System.out.println();
        System.out.printf("%-11s%12s%10s","Anhui","139600.00","6461.00");
        System.out.println();
        System.out.printf("%-11s%12s%10s","Beijing","16410.54","1180.70");
        System.out.println();
        System.out.printf("%-11s%12s%10s","Chongqing","82400.00","3144.23");
        System.out.println();
        System.out.printf("%-11s%12s%10s","Shanghai","6340.50","1360.26");
        System.out.println();
        System.out.printf("%-11s%12s%10s","Zhejiang","101800.00","4894.00");
        System.out.println();
        System.out.printf("------------------------------------");
    }
}

沒試過直接把他的那一段複製過來輸出行不行,我估計是可以的,不過這次就不投機取巧了……

混合類型數據格式化輸入
import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        double d1 = Double.parseDouble(scan.next());
        int i = Integer.parseInt(scan.next());
        String c = scan.next();
        double d2 = Double.parseDouble(scan.next());
        System.out.printf("%s %d %.2f %.2f",c,i,d1,d2);
    }
}

Java好像不能和c似的控制輸入格式啊,只能用next全部讀取成字符串再輸出……

12-24小時制
import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        String s = scan.next();
        String[] split = s.split(":");
        int hour = Integer.parseInt(split[0]);
        int min = Integer.parseInt(split[1]);
        String ass;
        if (hour>=12){
            ass = "PM";
            if (hour != 12)
                hour %= 12;
        }else {
            ass = "AM";
        }
        System.out.printf("%d:%d %s",hour,min,ass);
    }
}

這個題坑在12小時本身要單獨處理,不然取餘會變成0點,細心一點就好啦

超速判斷
import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int i = scan.nextInt();
        System.out.printf("Speed: %d - %s",i,i>60?"Speeding":"OK");
    }
}

這個太簡單了……

用天平找小球
import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        String s = scan.nextLine();
        String[] split = s.split(" ");
        if(split[0].equals(split[1]))
            System.out.print("C");
        else if(split[0].equals(split[2]))
            System.out.print("B");
        else if(split[1].equals(split[2]))
            System.out.print("A");
    }
}

本來想用一些奇淫技巧,後來發現好像沒什麼特別好的,只好用最基礎的方法了……

計算工資
import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        String s = scan.nextLine();
        String[] split = s.split(" ");
        int year = Integer.parseInt(split[0]);
        int hours = Integer.parseInt(split[1]);
        double salary;
        if (year < 5){
            salary = 30;
        }else {
            salary = 50;
        }
        if (hours >40){
            salary = salary*(hours-40)*1.5+40*salary;
        }else {
            salary = salary * hours;
        }
        System.out.printf("%.2f",salary);
    }
}

基礎就是基礎,又一個簡單題……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章