初学者日志 12/23 循环结构练习
来源:互联网 发布:语音同声翻译软件 编辑:程序博客网 时间:2024/06/10 06:10
记:
差不多有二十多天了,暂时没有遇到太多超出自己承受范围之外的东
西,其实感觉还不错,常常会有一种回到了高中做数学题的时候的错
觉。
但在文科太久了,突然到了男生群聚的地方,总会有一种不适应感。
以下正题,practice10是将从控制台获取的数据进行重组,我暂时没
能做出来,留待日后解决,这里说明。
package lianxi;import java.util.Scanner;/** * @author 一条子非鱼的沫 * @see 循环结构练习 */public class lianxi01 { public static void main(String[] args) { // 【运行方法】将此条内容以下需要运行的自定义方法取消注释后即可运行。 //ps:由于Scanner指向不明的问题,每一个practice只能单独运行 practice01();// 回文数// practice02();// 兔子问题// practice03();// 判断素数// practice04();// 水仙花数// practice05();// 公约数与公倍数// practice06();// 九九乘法表// practice07();// 猴子问题// practice08();// 求位数并打印// practice09();// 打印菱形// practice10();// 重组数字 } /** * practice01:【回文数】 * * @see 一个五位数,判断一个它是不是回文数 * @see 回文数即以中间位置的数为中心,呈左右对称的数。例如:15251 */ public static void practice01() { Scanner input = new Scanner(System.in); int number; do { System.out.print("请输入一个五位数:"); number = input.nextInt();// 输入一个int类型的五位数 } while (number < 10000 || number > 99999); String str = String.valueOf(number);// 把number的值转化为string类型 char[] ch = str.toCharArray();// 将string类型的数组转换为char型的数组 if (ch[0] == ch[4] && ch[1] == ch[3]) {// 如果第一个数与第五个数、第二个数与第四个数相等 System.out.println("这个数是回文数"); } else { System.out.println("这个数不是回文数"); } input.close(); } /** * practice02:【兔子问题】 * * @see 有一对兔子,从出生后第三个月起,每个月都生一对兔子, * @see 小兔子长到第三个月后,每个月又生一对兔子, * @see 假如兔子都不死,问每个月的兔子总数为多少? */ public static void practice02() { Scanner input = new Scanner(System.in); System.out.print("请输入周数(大于2):\t"); int month = input.nextInt(); System.out.println("第1个月兔子的对数为:\t1"); System.out.println("第2个月兔子的对数为:\t1"); int f1 = 1;// 上上个月兔子总数 int f2 = 1;// 上个月兔子总数 int f0;// 用于中转使用的量 int i = 3; int sum = 0; for (; i <= month; i++) { f0 = f1; f1 = f1 + f2;// 新一个月兔子总数为上个月兔子总数加上上个月兔子的总数 f2 = f0; sum += f1; System.out.println("第" + i + "个月兔子的对数为:\t" + f1); } System.out.println("截止第" + (i - 1) + "个月,兔子对数总和为:\t" + sum); input.close(); } /** * practice03:【判断素数】 * * @see 及合数的质因数: 从控制台输入一个数,判断它是不是素数, * @see 如果是,输出这个数; 如果不是,分解出这个数的所有质因数。 */ public static void practice03() { Scanner input = new Scanner(System.in); System.out.print("请输入一个正整数:"); int number = input.nextInt(); int i = 2;// i表示输入数字的质因数的初始化 System.out.print(number + "="); while (i <= number) {// 分解出的质因数一定小于等于原数 if (i == number) {// 如果用于验证的质因数等于原数,则代表着这个原数本身就是质数 System.out.print(number);// 输出原数,即为它本身唯一的质因数 break;// 已经分解出所有情况,跳出循环体 } else if (number % i == 0) {// 如果原数能够被用于验证的质因数整除,则输出这个质因数 System.out.print(i + "*"); number /= i;// 原数除以验证过的质因数后,将得出的商赋值给原数,进行下一次验证 } else { i++;// 如果原数不能被用于验证的质因数整除,则使用新的用于验证的质因数后再次执行上一步 } } input.close(); } /** * practice04:【水仙花数】 * * @see 打印出所有水仙花数。 * @see 水仙花数,即一个各位数字的立方和等于这个数字本身的三位数。如:135=(1*1*1)+(3*3*3)+(5*5*5); */ public static void practice04() { System.out.print("所有水仙花数有:"); for (int i = 100; i < 1000; i++) { int a = i % 10;// a表示i的个位数 int b = i / 10 % 10;// b表示i的十位数 int c = i / 100;// c表示i的百位数 if (a * a * a + b * b * b + c * c * c == i) {// 如果立方和等于原数 System.out.print(i + " "); } } } /** * practice05:【公约数与公倍数】 * * @see 从控制台输入两个大小不同的数 * @see 求它们的最大公约数与最小公倍数 */ public static void practice05() { Scanner input = new Scanner(System.in); System.out.print("请输入正整数一:"); int m = input.nextInt(); System.out.print("请输入正整数二:"); int n = input.nextInt(); int max = 0, min = 0;// 定义一个较大值和较小值,对所输入的数字进行大小比较 if (m == n || m < 2 || n < 2) {// 如果输入的两个数字相等,或者它们出现小于2的数 System.out.print("输入错误,请重新输入");// 则提示用户重新输入 // 另外,排除不符合的情况后,再比较两个输入数字的大小,分别把它们赋值给较大值和较小值 } else if (m > n) { max = m; min = n; } else { max = n; min = m; } System.out.print("它们之间的最大公约数为:"); for (int i = min; i >= 2; i--) {// 从较小值向2 if (min % i == 0 && max % i == 0) {// 如果两个数除以同一个i都没有余数,i就是它们的公约数 System.out.print(i + " "); break;// 由于i的值是从大向小进行运算,所以得出的第一个i的值几位它们的最大公约数 } } System.out.print("它们之间的最小公倍数为:"); for (int i = max; i <= max * min; i++) {// 从较大值向两个值的乘积 if (i % min == 0 && i % max == 0) {// 如果同一个i分别除以这两个数都没有余数,i就是它们的公倍数 System.out.print(i + " "); break;// 由于i的值是从较大值向两个值的乘积进行运算,所以得出的第一个i的值即为它们的最小公倍数 } } input.close(); } /** * practice06:【九九乘法表】 * * @see 制作一个九九乘法表 */ public static void practice06() { for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "*" + i + "=" + i * j + "\t"); } System.out.println(); } } /** * practice07:【猴子问题】 * * @see 猴子第一天摘下若干桃子,当即吃了一半,吃完觉得不过瘾,又吃了一个 * @see 第二天,猴子吃了剩下桃子的一半,吃完觉得不过瘾,又吃了一个 * @see 以后每天都吃了剩下的一半,吃完觉得不过瘾,又吃了一个 * @see 到第10天时,猴子想再吃时,发现桃子只剩下一个了 * @see 问:第一天猴子摘了多少个桃子? */ public static void practice07() { int peach = 1;// peach表示桃子,初始值为1,表示第十天剩下1个桃子 for (int i = 10; i >= 1; i--) {// 从第十天开始向第一天回算 peach = peach * 2 + 2;// 前一天的桃子数目是后一天的二倍加二个 } System.out.println("第1天总共摘了" + peach + "个桃子"); } /** * practice08:【求位数并打印】 * * @see 从控制台输入一个整数,请获取它的位数,并逆序打印各位上的数字 */ public static void practice08() { Scanner input = new Scanner(System.in); System.out.print("请输入一个整数:"); long number = input.nextLong();// 定义数据类型为长整型 int digit = 1;// 定义这个数的位数,初始为1位 System.out.print("这个数各位逆序打印为:"); System.out.print(number % 10 + " ");// 取出这个数的个位数 while (number / 10 != 0) {// 如果这个数的位数大于等于两位 number /= 10;// 将这个数逐渐除以10,得出的余数即依次为:十、百、千…… System.out.print(number % 10 + " "); digit++;// 此时该数的位数也相应第增加1 } System.out.print("\n这个数的位数为:" + digit); input.close(); } /** * practice09:【打印菱形】 * * @see 使用循环结构打印出一个菱形,菱形的元素为“*”号; */ public static void practice09() { Scanner input = new Scanner(System.in); System.out.print("请输入菱形的边长:\t"); int side = input.nextInt(); System.out.println("菱形的打印图如下:"); for (int i = 1; i <= side; i++) {// 进行上半部分,包括*号最多的一行在内 for (int j = 1; j <= side * 2 - i * 2; j++) {// 每一行空格个数为:side*2-i*2 System.out.print(" "); } for (int j = 1; j <= i * 2 - 1; j++) {// 每一行*号个数为:i*2-1 System.out.print("* ");// 输出时*号与*号间有空格,所以整个程序乘以2进行运算 } System.out.println();// 输出每一行的空格和*号之后要进行换行 } for (int i = 1; i <= side - 1; i++) {// 进行下半部分,不包括*号最多的一行在内 for (int j = 1; j <= i * 2; j++) {// 每一行的空格数为:i*2 System.out.print(" "); } for (int j = 1; j <= side * 2 - i * 2 - 1; j++) { // 每一行*号个数为:side*2-i*2-1 System.out.print("* ");// 输出时*号与*号间有空格,所以整个程序乘以2进行运算 } System.out.println();// 输出每一行的空格和*号之后要进行换行 } input.close(); } /** * practice10:【重组数字】 * * @see 有四个各不相同的非零数字,用它们重组成各不相同的三位数,能够组成多少个? */ public static void practice10() {// 【未完成】 Scanner input = new Scanner(System.in); System.out.print("请输入第1个数字:"); int a = input.nextInt(); System.out.print("请输入第2个数字:"); int b = input.nextInt(); System.out.print("请输入第3个数字:"); int c = input.nextInt(); System.out.print("请输入第4个数字:"); int d = input.nextInt(); if (a == 0 || b == 0 || c == 0 || d == 0 || a > 9 || b > 9 || c > 9 || d > 9 || a == b || b == c || c == d || a == c || b == d) { System.out.print("你所输入的数字有误!"); System.exit(0); } input.close(); }}
以下为程序输出效果截图:
ps. practice10由于没做出来,所以没有截图。
1、目录截图
2、practice01
3、practice02
4、practice03
5、practice04
6、practice05
7、practice06
8、practice07
9、practice08
10、practice10
阅读全文
1 0
- 初学者日志 12/23 循环结构练习
- 循环结构练习1
- C3_循环结构练习
- js-循环结构练习
- 循环结构、选择结构练习
- java"循环结构"练习实例
- 25循环结构编程练习
- 选择结构和循环结构练习
- C语言循环结构练习1
- C语言循环结构练习2
- 第3章循环结构程序设计练习
- Day4_c语言_循环结构练习
- java学习10--循环结构while练习
- C语言 第五章 循环结构练习
- JAVA 五 while循环结构练习
- 初学者日志 12/15 数组
- 【JAVA】12、循环结构
- 黑马程序员--循环结构的学习和练习、函数
- sql server 登录名和用户名的区别和联系
- leetcode-565. Array Nesting
- 开发笔记模块前言
- Android中applicationId的定义
- 缺少return, 导致core dump
- 初学者日志 12/23 循环结构练习
- 科技创业如何设计商业模式,她总结了一套秘笈
- 阿里讽腾讯整条命是小学生给的;百度公布起诉前高管“实锤”;微信大规模封号丨价值早报
- 蔚来李斌:未来汽车的关键词是“智能电动车”
- 深入Linux内核架构之内存管理(1)
- Torch7的安装
- qRegisterMetaType用法总结
- nowcoder 2017年浙江工业大学大学生程序设计迎新赛预赛-CC的神奇背包
- Intellij IDEA 开启自动构建项目并显示 Problems 窗口的方法