日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java笔试——2021届秋招编程题汇总

發布時間:2025/3/13 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java笔试——2021届秋招编程题汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1. 硬幣找零,最少多少張紙幣
  • 2. 將序列排序
  • 3. 判斷兩個矩形是否相交
  • 4. 從字符串中提取整數
  • 5. 編寫注冊驗證功能
  • 6. 分解數字相乘后的最大值

1. 硬幣找零,最少多少張紙幣

描述:有1,5,10,50,100元,分別有:a、b、c、d、e張紙幣。
若需要支付k元,最少需要多少張紙幣能找零,若無解則輸出-1

package kdxf;import java.util.HashMap; import java.util.Scanner;public class Test01 {static HashMap<Integer,Integer> data = new HashMap<>();static int res = Integer.MAX_VALUE;static int[] num = {1,5,10,50,100};public static void main(String[] args) {Scanner sc = new Scanner(System.in);for(int i=0;i<5;i++){int p = sc.nextInt();data.put(num[i],p);}int sum = sc.nextInt();dfs(sum,0,4);System.out.println(res==Integer.MAX_VALUE?-1:res);}public static void dfs(int sum,int count,int start){if (sum ==0 ){res = Math.min(res,count);return;}else{for(int i=start;i>=0;i--){if (num[i]<=sum&&data.get(num[i])!=0){int money = data.get(num[i]);int flag = 0;if (money*num[i]<=sum){count+=money;data.put(num[i],0);flag = sum - money*num[i];}else{int q = sum/num[i];count+=q;data.put(num[i],data.get(num[i])-q);flag = sum - q*num[i];}dfs(flag,count,start-1);return;}}}} }

運行結果:

2. 將序列排序

描述:給出一個數字序列,需要輸出排序過程

package kdxf;import java.util.Scanner;public class Test02 {static int[] data;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int num = sc.nextInt();data = new int[num];for(int i=0;i<num;i++){data[i]=sc.nextInt();}sort(0,num-1);}public static void sort(int left,int right){if (left>=right) return;int start = left;int end = right;int now = data[left];while (left<right){int n;int m;while (left<right&&data[right]>now){right--;}while(left<right&&data[left]<=now){left++;}int tmp = data[right];data[right] =data[left];data[left] =tmp;}int p = data[start];data[start] = data[left];data[left] = p;print();sort(start,left-1);sort(left+1,end);}public static void print(){for(int i=0;i<data.length;i++){if (i==data.length-1){System.out.println(data[i]);return;}System.out.print(data[i]+" ");}} }

運行結果:

3. 判斷兩個矩形是否相交

描述:給定坐標:(0,0),(2,3),(1,2),(5,4)
判斷前兩個點對角線構成的矩形是否與后兩個點構成的矩形相交
相交則輸出1,否則輸出0

package kdxf;import java.util.Arrays; import java.util.Scanner;public class Test03 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int[][] a = new int[2][2];int[][] b = new int[2][2];for(int i=0;i<2;i++){a[i][0] = sc.nextInt();a[i][1] = sc.nextInt();}for(int i=0;i<2;i++){b[i][0] = sc.nextInt();b[i][1] = sc.nextInt();}Arrays.sort(a,(o1, o2)->o1[0]-o2[0]);Arrays.sort(b,(o1,o2)->o1[0]-o2[0]);int aminx= Math.min(a[0][0],a[1][0]);int amaxx= Math.max(a[0][0],a[1][0]);int aminy= Math.min(a[0][1],a[1][1]);int amaxy= Math.max(a[0][1],a[1][1]);int bminx= Math.min(b[0][0],b[1][0]);int bmaxx= Math.max(b[0][0],b[1][0]);int bminy= Math.min(b[0][1],b[1][1]);int bmaxy= Math.max(b[0][1],b[1][1]);boolean res = find(aminx,aminy,bminx,bmaxx,bminy,bmaxy)||find(aminx,amaxy,bminx,bmaxx,bminy,bmaxy)||find(amaxx,aminy,bminx,bmaxx,bminy,bmaxy)||find(amaxx,amaxy,bminx,bmaxx,bminy,bmaxy)||find(bminx,bminy,aminx,amaxx,aminy,amaxy)||find(bminx,bmaxy,aminx,amaxx,aminy,amaxy)||find(bmaxx,bminy,aminx,amaxx,aminy,amaxy)||find(bmaxx,bmaxy,aminx,amaxx,aminy,amaxy);if (res) System.out.println(1);else System.out.println(0);}public static boolean find(int x,int y,int xmin,int xmax,int ymin ,int ymax){if (x>=xmin&&x<=xmax&&y>=ymin&&y<=ymax){return true;}else {return false;}} }

運行結果:

4. 從字符串中提取整數

描述:例如:1a2
輸出:12

package kdxf;import java.util.Scanner;public class Test04 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String data = sc.nextLine();int flag = 0;for(int i=0;i<data.length();i++){if (i==0&&data.charAt(i)=='-'){flag =1;System.out.print('-');}if (data.charAt(i)>='0'&&data.charAt(i)<='9'){System.out.print(data.charAt(i));}}System.out.println();} }

運行結果:

5. 編寫注冊驗證功能

題目要求:編寫注冊驗證功能
1.原系統中包括兩個注冊好的賬號“zhangsan"和"lisi",要求新注冊的賬號用戶名不能已經存在,否則輸出”用戶名已經存在“,中止程序。
2.密碼必須是8到16位,且必須由數字和字母組成,否則輸出”密碼格式不正確“,中止程序。
3.手機號碼必須是11位,且開頭必須是1,否則輸出”請輸入正確的手機號“,中止程序
4.如果全部輸入正確,輸出”注冊成功“

import java.util.Scanner; public class demo02 {public static void main(String[] args) {//輸入Scanner sc=new Scanner(System.in);System.out.println("請輸入用戶名");int flag=0;while(flag==0) {String name=sc.next();flag=user(name,flag);if(flag==1) {break;}System.out.println("請輸入密碼");String passerword=sc.next();flag=passerword(passerword,flag);if(flag==1) {break;}System.out.println("請輸入手機號");String phone=sc.next();flag=phone(phone,flag);if(flag==1) {break;}System.out.println("注冊成功");break;}}private static int phone(String phone, int flag) {if(phone.charAt(0)!=1||phone.length()!=11) {System.out.println("請輸入正確的手機號");flag=1;}return flag;}private static int passerword(String passerword, int flag) {if(passerword.length()<8||passerword.length()>16) {System.out.println("密碼格式錯誤");flag=1;}return flag;}private static int user(String name,int flag) {if(name.equals("zhangsan")||name.equals("lisi")) {System.out.println("該用戶名已存在");flag=1;}return flag;} }

6. 分解數字相乘后的最大值

題目要求: 將輸入的數字n(n>=0)分解,然后讓分解的數字相乘,求相乘后的最大值。
例如:
輸入: 5
輸出: 6

import java.util.Scanner; public class demo03 {public static void main(String[] args) {//輸入Scanner sc=new Scanner(System.in);System.out.println("請輸入一個數字");long n=sc.nextLong();//處理if(n==0) {System.out.println(0);}else if(n%2==0) {long m=(n/2)*(n/2);System.out.println(m);}else {long m=(n/2)*(n/2+1);System.out.println(m);}} }

總結

以上是生活随笔為你收集整理的Java笔试——2021届秋招编程题汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。