欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

java编程基础 | 练习题

发布时间:2023/12/10 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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编程基础 | 练习题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。