生活随笔
收集整理的這篇文章主要介紹了
Java笔试——2021届秋招编程题汇总
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 1. 硬幣找零,最少多少張紙幣
- 2. 將序列排序
- 3. 判斷兩個(gè)矩形是否相交
- 4. 從字符串中提取整數(shù)
- 5. 編寫注冊驗(yàn)證功能
- 6. 分解數(shù)字相乘后的最大值
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;}}}}
}
運(yùn)行結(jié)果:
2. 將序列排序
描述:給出一個(gè)數(shù)字序列,需要輸出排序過程
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
]+" ");}}
}
運(yùn)行結(jié)果:
3. 判斷兩個(gè)矩形是否相交
描述:給定坐標(biāo):(0,0),(2,3),(1,2),(5,4)
判斷前兩個(gè)點(diǎn)對角線構(gòu)成的矩形是否與后兩個(gè)點(diǎn)構(gòu)成的矩形相交
相交則輸出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;}}
}
運(yùn)行結(jié)果:
4. 從字符串中提取整數(shù)
描述:例如: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();}
}
運(yùn)行結(jié)果:
5. 編寫注冊驗(yàn)證功能
題目要求:編寫注冊驗(yàn)證功能
1.原系統(tǒng)中包括兩個(gè)注冊好的賬號“zhangsan"和"lisi",要求新注冊的賬號用戶名不能已經(jīng)存在,否則輸出”用戶名已經(jīng)存在“,中止程序。
2.密碼必須是8到16位,且必須由數(shù)字和字母組成,否則輸出”密碼格式不正確“,中止程序。
3.手機(jī)號碼必須是11位,且開頭必須是1,否則輸出”請輸入正確的手機(jī)號“,中止程序
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("請輸入手機(jī)號");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("請輸入正確的手機(jī)號");flag
=1;}return flag
;}private static int passerword(String passerword
, int flag
) {if(passerword
.length()<8||passerword
.length()>16) {System
.out
.println("密碼格式錯(cuò)誤");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. 分解數(shù)字相乘后的最大值
題目要求: 將輸入的數(shù)字n(n>=0)分解,然后讓分解的數(shù)字相乘,求相乘后的最大值。
例如:
輸入: 5
輸出: 6
import java
.util
.Scanner
;
public class demo03 {public static void main(String
[] args
) {Scanner sc
=new Scanner(System
.in
);System
.out
.println("請輸入一個(gè)數(shù)字");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
);}}
}
總結(jié)
以上是生活随笔為你收集整理的Java笔试——2021届秋招编程题汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。