题目一

共有50枚硬币,可能包括4种类型:1元,5角,1角,5分。已知总价值为20元。求各种硬币的数量。

解题思路:简单分析可知硬币有多种组合,我们可以假设先抛开50枚硬币去寻找1元需要多少个硬币(明显是20个就满足),5角(40个),1角(200个),5分(400个)。最后我们在最内层循环加上50枚硬币的条件即可。

public class Test1 {public static void main(String[] args) {//寻找5分钱for (int i = 0; i <= 400; i++) {//寻找1角钱for (int j = 0; j <= 200; j++) {//寻找5角钱for (int k = 0; k <= 40; k++) {//寻找1元for (int l = 0; l <= 20; l++) {if (i * 5 + j * 10 + k * 50 + l * 100 == 2000 && i+j+k+l == 50){System.out.println(i+"个5分"+j+"个1角"+k+"个5角"+l+"个1元");}}}}}}
}

题目二

鸡兔同笼问题:鸡兔一共35只,笼子里脚共有94只,请问分别有多少只鸡和多少只兔子。

解题思路:因为Java的特性变量必须要初始化,所以二元一次方程组的解法就不灵了,我们可以假设最开始鸡只有0只,进行for循环从1加到35。

public class Test2 {public static void main(String[] args) {for (int chick = 1; chick <= 35; chick++) {//记录兔子的数量(利用脚的数量算出兔子的数量)int rabbit = (94 - chick * 2) / 4;//如果遍历到兔子的数量加上鸡的数量等于总数量就可以break啦if (chick + rabbit == 35){System.out.println("鸡有" + chick + "只");System.out.println("兔有" + rabbit + "只");break;}}}
}

题目三

求1-2022有多少个质数(只有1和它本身两个因数)。

这题虽然简单但是第一见到不一定写的出来,有一些细节需要注意,比如count - 1 

public class Test3 {public static void main(String[] args) {//记录数量int count = 0;for (int i = 1; i <= 2022; i++) {//用于判断是否为质数boolean isSum = true;//从2到根号i寻找数字并判断能否被整除//因为因数是成对存在的,如果i从2到根号i之间都没有因数//那么在根号i之后也没有因数for (int j = 2; j <= Math.sqrt(i); j++) {//如果能被整除表明不是质数,就可以breakif (i % j == 0){isSum = false;break;}}//遍历完1-2022所有数字,判断有多少个true(用count记录)if (isSum){count++;}}//因为1不是质数是整数,这里需要-1System.out.println(count - 1);}
}

题目四

求两个数的最大公约数(两个数中存在一个最大同时被两个数整除),最小公倍数(两个数拥有最小并相同的倍数)。

这题虽然也简单,但是第一次遇到还是挺难写出来的。

import java.util.Scanner;public class Test4 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num1 = scanner.nextInt();int num2 = scanner.nextInt();//求最大公约数,需要定义临时变量int temp = 0;while (true){//不断取余寻找因数temp = num1 % num2;//将因数赋给num1num1 = num2;//将num2置为余数num2 = temp;//直到余数为0,此时的num1就是最大公约数if (num2 == 0){System.out.println("最大公约数是" + num1);break;}}//num1 num2的值已经发生改变,这里定义新变量计算最小公倍数int num3 = scanner.nextInt();int num4 = scanner.nextInt();//先找出num3,num4之间的最大数temp = Math.max(num3,num4);//在两数最大到两数乘积之间寻找最小公倍数for (int i = temp; i <= num3 * num4; i++) {//公倍数条件if (i % num3 == 0 && i % num4 == 0){System.out.println("最小公倍数是" + i);//找到的第一个满足条件的数就是最小公倍数break;}}}
}

题目五

打印九九乘法表

对于刚接触的小伙伴来说可能是有难度的,这里我们可以换一个需求先实现打印9个*********

System.out.print("*********")[这个属于犯规],正确的是:
    for (int i = 0; i < 10; i++) {System.out.print("*");}

我们再提高要求实现:

*
**
***
****
*****
******
*******

        for (int i = 0; i < 7; i++) {for (int j = 0; j < i; j++) {System.out.print("*");}System.out.println();}

如果看不懂没关系,这段代码可以拆分成以下代码

        for (int i = 0; i < 1; i++) {System.out.print("*");}System.out.println();for (int i = 0; i < 2; i++) {System.out.print("*");}System.out.println();for (int i = 0; i < 3; i++) {System.out.print("*");}System.out.println();for (int i = 0; i < 4; i++) {System.out.print("*");}System.out.println();for (int i = 0; i < 5; i++) {System.out.print("*");}System.out.println();for (int i = 0; i < 6; i++) {System.out.print("*");}

 所以最终的代码就是这样:

public class Test5 {public static void main(String[] args) {for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {//\t是为了好看System.out.print(i + "*" + j + "=" + i * j + "\t");}System.out.println();}}
}

 题目六

        有一个n*m的棋盘,现在对这个棋盘进行黑白染色,左上角染成黑色。从左上角开始,每个黑色格的相邻格染成白色,白色格的相邻格染成黑色。
以下给出了一个5*7的棋盘的染色示例。
给定n和m,请问棋盘上一共有多少方格被染成了黑色。

题目的意思大概是这样。

解题思路:这里需要利用二维数组来理解这题,我们可以假设1就是黑色,0就是白色。然后再遍历这个二维数组,遇到1我们就计数。

 这段代码可以帮助理解解题思路:

public class Test6 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();int[][] arr = new int[n][m];int count = 0;for(int i = 0; i < n; i++) {for(int j = 0; j < m ; j++) {//奇数行的规律if(j % 2 == 0 && i % 2 == 0) {//表示黑色arr[i][j] = 1;}//偶数行的规律else if(i % 2 != 0 && j % 2 != 0){//表示黑色arr[i][j] = 1;}}}for(int i = 0; i < n; i++) {for(int j = 0; j < m; j++) {if(arr[i][j] == 1) {count++;}System.out.print(arr[i][j] + " ");}System.out.println();}System.out.println(count);scanner.close();}}

其实我们在"上色的时候就可以计数了",所以代码可以简化一下(省略上色):

public class Test6 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();int[][] arr = new int[n][m];int count = 0;for(int i = 0; i < n; i++) {for(int j = 0; j < m ; j++) {//奇数行的规律if(j % 2 == 0 && i % 2 == 0) {count++;}//偶数行的规律else if(i % 2 != 0 && j % 2 != 0){count++;}}}System.out.println(count);}
}

题目七

在1至2022中,有多少个数的数位中包含数字9?
  注意,有的数中的数位中包含多个9,这个数只算一次。例如,1999这个数包含数字9,在计算只是算一个数。

解题思路:把1-2022转换字符串,再把它们存到字符数组中,再遍历判断即可。

String.valueof()方法:将int类型转换成String类型。

str.toCharArray()方法:将String类型转换成char类型。

public class Test7 {public static void main(String[] args) {//记录数量int count = 0;for (int i = 1; i <= 2022; i++) {//将整数i转换成字符串String str = String.valueOf(i);//将字符串类型转换成字符类型并存入字符数组char[] arr = str.toCharArray();//遍历for (int j = 0; j < arr.length; j++) {//判断是否满足条件if (arr[j] == '9'){count++;}}}System.out.println(count);}
}

题目八

判断水仙花数,例如153 = 1*1*1 + 5*5*5 + 3*3*3

求1-2022有多少个水仙花数

解题思路:关键就是表达个位,百位,千位的数。

public class Test8 {public static void main(String[] args) {//记录个数int count = 0;for (int i = 1; i <= 2022; i++) {//表示个位int bits = i % 10;//表示十位int ten = i / 10 % 10;//表示百位int hundred = i / 100 % 10;//水仙花数条件if(bits * bits * bits + ten * ten * ten + hundred * hundred * hundred == i){count++;}}System.out.println(count);}
}

有错误欢迎指出!

Java练习题(经典8题)相关推荐

  1. JAVA基础经典50题

    ​[程序1] 題目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? [程序2] 题目:判断101-200 ...

  2. Java面试经典编程题

    1.有1,2,2,3,4,5这6个数字,用Java写一个main函数,打印出所有不同的排列,如:512234 要求: '4'不能在第三位, '3'与'5'不能相连 package com.test; ...

  3. Java练习题【大题】

    练习1: 连接数据库分为哪几步 1.加载JDBC驱动 2.创建数据库连接 3.执行SQL语句 4.获得结果 5.关闭连接 练习2: Java生命周期包括哪几种状态?并对它们做简要说明 1.新建状态(n ...

  4. Java实现经典算法题:兔子产仔

    目录 题目 分析 解答 方法一:递归算法 方法二:非递归,直接循环计算总数 方法三:直接利用数学公式法:f(n)={[(1+5^0.5)/2]^n - [(1-5^0.5)/2]^n}/(5^0.5) ...

  5. java 初级编程题_java基础经典编程题

    java基础经典编程题 Monkey_peach代码 package com.sailor.game; /** * 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第 ...

  6. csharp高级练习题:Codewars风格排名系统【难度:4级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练

    csharp高级练习题:Codewars风格排名系统[难度:4级]: 写一类称为用户被用来计算用户将通过一个类似于Codewars用途排名系统进展的量. 商业规则: 用户开始于秩-8,可以进步一路8. ...

  7. java经典100例算法题_10道java经典算法题,每一题都能帮你提升java水平!

    JAVA经典算法题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子 ...

  8. csharp基础练习题:noobCode 03:检查这些信件...查看是否在“字符串1”的信件出现在“字符串2”【难度:1级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练

    csharp基础练习题:noobCode 03:检查这些信件-查看是否在"字符串1"的信件出现在"字符串2"[难度:1级]: 编写一个函数,检查第二字符串中的字 ...

  9. csharp基础练习题:小数的位数【难度:1级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练

    csharp基础练习题:小数的位数[难度:1级]: 确定在一个无符号整数的十进制数字号码.例如,图9是一个数字,66具有2位和128685具有6位数字.要小心,以避免溢出/下溢. 编程目标: publ ...

  10. csharp基础练习题:产品和LCMS之间的差异总和【难度:1级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练

    csharp基础练习题:产品和LCMS之间的差异总和[难度:1级]: 在此习题您需要创建一个函数,非负整数对的二维数组/列表并返回的所有"保存",你可以得到[LCM(HTTPS的总 ...

最新文章

  1. linux 网络配置 阮一峰,Vim 配置入门
  2. 用ISA阻挡用户向论坛发贴子
  3. webpack打开项目命令_webpack打包好的页面在项目中怎么运行?
  4. 蓝色大巴汽车网站404页面源码
  5. pycharm 怎么快速生成文件夹结构_为什么Python代码能运行但是PyCharm给我画红线?...
  6. 映月城与电子姬服务器维护,映月城与电子姬11月16日更新公告 加强玩家作弊检测增加举报功能...
  7. 离模拟世界又近一步!谷歌推出开源量子计算平台OpenFermion
  8. linux中用c语言做一个游戏主播,当一个游戏主播需要做什么直播准备?
  9. 【Feign源码】保存请求数据的载体--Template
  10. div+css页面布局实战
  11. delphi 剪切板变量_Delphi监视剪贴板内容
  12. Mac 快速打开终端快捷键
  13. 程序员为什么更容易掉头发?
  14. 2021年烟花爆竹产品涉药复审考试及烟花爆竹产品涉药作业模拟考试
  15. deepin系统维护(系统扩容)deepin live
  16. JAVA实现诗词_基于jsp的古诗词网站-JavaEE实现古诗词网站 - java项目源码
  17. buctoj-2022寒假集训2
  18. 图解next和hasnext
  19. matlab:求平均值
  20. 3.7V锂电池供电方案探讨

热门文章

  1. android:ellipsize=end 不起作用,当TextView设置ellipsize =end无效时解决方案
  2. 【Image Matting】 Deep Image Matting
  3. 【社区榜单】TensorFlow 社区双周问答贡献光荣榜(第二期)
  4. 完整电商项目--(五)用户基本信息(2):收货地址
  5. Python采集二手房源数据信息并做可视化展示
  6. ABAP FICO F-37/F-47创建预收/预付款
  7. 51单片机点亮LED的5中方法(由简单到困难)
  8. 利用IT++搭建通信仿真平台
  9. 35岁以上的大龄测试员们,后来都干什么去了?
  10. 聊聊React Native屏幕适配那些事儿