java编程基础 | 练习题
此文為本人學習java基礎所練習的題型,皆為學習Java路上的必做,適合小白入門練習
文(2021/8/22)
目錄
0.前文概要
1.簡單邏輯結構題?
2.含有數組題型
0.前文說明
- 文中所有代碼都省略“頭文件”
- 做題中總結的一些小方法:
? ? ? ? ?int x=i/100;? ? ?//求百位
? ? ? ? ?int y=i%100/10;? ? //求十位
? ? ? ? ?int z=i%10;? ? //求個位
1.簡單邏輯結構題?
1、判斷閏年/求1000-2000之間的閏年
public static void main(String[] args) {Scanner sc=new Scanner(System.in);int year=sc.nextInt();if ((year % 4 == 0 && year % 100 != 0)||(year%400==0)) {System.out.println(year+"是閏年");}}public static void main(String[] args) {for (int year = 1000; year <= 2000; year++) {if ((year % 4 == 0 && year % 100 != 0)||(year%400==0)) {System.out.println(year+"是閏年");}}}2、判斷素數
public static void main(String[] args) {Scanner sc=new Scanner(System.in);System.out.println("請輸入一個整數:");int num=sc.nextInt();boolean isPrime=true;for (int i = 2; i < num; i++) {if (num % i == 0) {isPrime = false;break;}}if (isPrime == true) {System.out.println(num + "是素數");} else {System.out.println(num + "不是素數");}}3.計算階乘和。例如1!+2!+3!+4!+5!
public static void main(String[] args) {int sum = 0;Scanner sc = new Scanner(System.in);System.out.println("請輸入第一個數:");//1int a = sc.nextInt();System.out.println("請輸入第二個數:");//5int b = sc.nextInt();for(int i = a; i <= b ; i++){int fact = 1;for (int j=i;j >= 1;j--){fact *= j;}sum += fact;}System.out.println("結果為:" + sum);} //遞歸public static long fac(int n){//返回值最好設計為long 否則會有溢出if (n == 1) {return 1;}return n * fac(n - 1);}public static int sum(int n){if(n==1){return 1;}return fac(n)+sum(n-1);}public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int ret=sum(n);System.out.println(n+"的階乘和為"+ret);}4、輸出乘法口訣表
public static void main(String[] args){Scanner sc=new Scanner(System.in);System.out.println("請輸入一個數");int num=sc.nextInt();for(int i=1;i<=num;i++){for(int j=1;j<=i;j++){System.out.print((i+"*"+j+"="+(i*j)+"\t"));}System.out.println(" ");}}5.最大公約數
//1.枚舉法public static void main(String[] args){Scanner in=new Scanner(System.in);int a=in.nextInt();int b=in.nextInt();int gcd=1;for(int i=2;i<=a&&i<=b;i++){if(a%i==0&&b%i==0){ //能同時被兩個數整除gcd=i;}}System.out.println(a+"和"+b+"的最大公約數是"+gcd);} //2.輾轉相除法public static void main(String[] args){Scanner sc=new Scanner(System.in);int a=sc.nextInt();int b=sc.nextInt();int oa=a;int ob=b;//為了后文寫的更清楚while(b!=0){int r=a%b;a=b;b=r;}System.out.println(oa+"和"+ob+"的最大公約數是"+a);} 6、寫一個函數返回參數二進制中 1 的個數 //法1:public static void main(String[] args){Scanner sc=new Scanner(System.in);int num=sc.nextInt();int count=0;for(int i=0;i<32;i++){if(((num>>i)&1)==1){count++;}}System.out.println(num+"的二進制中1的個數為"+count);} public static void main(String[] args){Scanner sc=new Scanner(System.in);int num=sc.nextInt();int count=0;int a=num;while(num>0){count++;num=num&(num-1);}System.out.println(a+"的二進制中1的個數為"+count);}7.獲取一個數二進制序列中所有的偶數位和奇數位,分別輸出二進制序列。
public static void main(String[] args){Scanner sc=new Scanner(System.in);int num=sc.nextInt();for(int i=31;i>=1;i-=2){int ret=(num>>i)&1;System.out.print(ret);}System.out.println();for(int i=30;i>=0;i-=2){int ret=(num>>i)&1;System.out.print(ret);}}8、猜數字游戲
public static void main(String[] args){//Math random():可以隨機生成一個0.0-1之間,包括0.不包括1;int randomNum=(int)(Math.random()*100)+1;while(true){Scanner sc=new Scanner(System.in);int inNum=sc.nextInt();if(inNum>randomNum){System.out.println("太大了");}if(inNum<randomNum){System.out.println("太小了");}if(inNum==randomNum){System.out.println("猜中了");break;}}}9.遞歸求 1 + 2 + 3 + ... + 10
public static int sum(int num){if(num==1){return 1;}return num+sum(num-1);}public static void main(String[] args){int a=10;int ret=sum(a);System.out.println(ret);}10.1234打印出1 2 3 4
public static void main(){int num=1234;print(num);}public static void print(int num){if(num>9){print(num/10);}System.out.println(num%10);}11、求出0~999之間的所有“水仙花數”并輸出。
// (“水仙花數”是指一個三位數,其各位數字的立方和確好等于該數本 身,如;153=1+5+3?,則153是一個“水仙花數“。)
public static void main8(String[] args){for(int i=100;i<1000;i++){int x=i/100; //求百位int y=i%100/10;//求十位int z=i%10;//求個位if(x*x*x+y*y*y+z*z*z==i){System.out.println(i+"是水仙花數");}}}12.求斐波那契數列
//遞歸 public static int fib(int num){if(num<=2){return 1;}return fib(num-2)+fib(num-1);}public static void main(String[] args){Scanner sc=new Scanner(System.in);int a=sc.nextInt();int ret=fib(a);System.out.println(ret); } //循環 public static long fibs(int n){long a=1;long b=1;long c=0;for(int i=3;i<=n;i++){c=a+b;b=a;a=c;}return c;}public static void main(String[] args){Scanner sc=new Scanner(System.in);int a=sc.nextInt();int ret=fibs(a);System.out.println(ret); }13.模擬輸入
//編寫代碼模擬三次密碼輸入的場景。 最多能輸入三次密碼,密碼正確,提示“登錄成功”,密碼錯誤,可以重新輸 入,最多輸入三次。三次均錯,則提示退出程序
public static void main(String[] args) {String password="123456";Scanner sc=new Scanner(System.in);System.out.println("請輸入6位數密碼:");int reTime=3;for(int i=0;i<3;i++){String input=sc.nextLine();if(input.equals(password)){System.out.println("輸入正確!");break;}else{reTime--;System.out.println("輸入錯誤!你還有"+reTime+"次機會!");}}if(reTime==0){System.out.println("輸入次數用完,退出程序!");}}14、計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 。
public static void main(String[] args) {double i=1.0;double n=1.0;double j=-1.0;double sum=0.0;for(i=1;i<=100;i++){j=-j;n=j/i;System.out.println(n);sum=sum+n;}System.out.println("和為"+sum);}2.含有數組題型
1、有一組數據,只有一個數字是出現一次,其他是兩次,請找出這個數字。
public static void main3(String[] args) {int[] arr={1,2,3,1,2,3,4,4,5};frequency(arr);}public static void frequency(int[] a){for(int i=0;i<a.length;i++){int count=0;for(int j=0;j<a.length;j++){if(a[i]==a[j]){count++;}}if(count==1){System.out.println("只出現1次的數字是:"+a[i]);}}}2、調整數組順序使得奇數位于偶數之前。調整之后,不關心大小順序。
public int[] reOrderArray(int[] nums){//奇數個數int oddCnt = 0;for(int x: nums){if (!isEven(x)){oddCnt++;}}int[] copy = nums.clone();int i = 0, j = oddCnt;for (int num : copy){if (num % 2 == 1)nums[i++] = num;elsenums[j++] = num;}return nums;}private boolean isEven(int x){return x % 2 == 0;}public static void main(String[] args) {int nums[] = {1,2,3,4,5,6,7,8,9};TestHomework3 o = new TestHomework3();int[] data = o.reOrderArray(nums);System.out.println(Arrays.toString(data));}總結
以上是生活随笔為你收集整理的java编程基础 | 练习题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第5章 Python 数字图像处理(DI
- 下一篇: j计算机实验室安全操作规范,实验室安全操