Java 基础编程练习题 (一)
目录1.根据海伦公式求三角形面积2.编写代码实现大小写字母的转换3.小球落地问题4.字母数量的统计5.“拍七”游戏6.回文的判断7.完数判断8.三个数排序9.洁净数统计10.九九乘法表11.简单计算器实现基本功能12.使用数组接收键盘输入的5个整数逆向输出13.水仙花数判断14.九九乘法表正序15.斐波那契数列16.方法的重载17.天数计算18.输出26个英文字母19.累乘计算20.字符串的反转1.根据海伦公式求三角形面积接收用户输入的三角形的三边长根据海伦公式求三角形的面积。海伦公式如下运行样例输入3 4 5输出3,4,5可以构成三角形面积是6.import java.util.Scanner; public class Demo1 { public static void main(String[] args) { Scanner sc new Scanner(System.in); System.out.print(请依次输入三角形三边长(使用空格分隔):); double a sc.nextDouble(); double b sc.nextDouble(); double c sc.nextDouble(); if (isOK(a, b, c)) { System.out.printf(%f,%f,%f可以构成三角形,面积是:%f, a, b, c, getArea(a, b, c)); } else { System.out.printf(%f,%f,%f不可以构成三角形, a, b, c); } } private static boolean isOK(double a, double b, double c) { if (a 0 || b 0 || c 0) { return false; } return a b c a c b b c a; } private static double getArea(double a, double b, double c) { double p (a b c) / 2.0; return Math.sqrt(p * (p - a) * (p - b) * (p - c)); } }2.编写代码实现大小写字母的转换输入一个小写字母后转换成对应的大写字母输入一个大写字母后转换成对应的小写字母。import java.util.Scanner; public class Demo2 { public static void main(String[] args) { Scanner sc new Scanner(System.in); char c sc.nextLine().charAt(0); if (c A c Z) { System.out.println((c ).toLowerCase()); } else if (c a c z) { System.out.println((c ).toUpperCase()); } else { System.out.println(无效的输入); } } }3.小球落地问题一球从100米高度自由落下每次落地后反跳回原高度的一半再落下求它在第10次落地时次反弹多高public class Demo3 { public static void main(String[] args) { double height 100.0; for (int i 0; i 10; i) { height / 2; } System.out.println(height); } }4.字母数量的统计输入一个字符串统计字符串中出现的字母的个数。import java.util.Scanner; public class Demo4 { public static void main(String[] args) { Scanner sc new Scanner(System.in); System.out.print(请输入一个字符串:); String str sc.nextLine(); System.out.println(字母个数: fun(str)); } private static int fun(String str) { int count 0; for (int i 0; i str.length(); i) { char c str.charAt(i); if ((c A c Z) || (c a c z)) { count; } } return count; } }5.“拍七”游戏许多人都曾经玩过“拍七”游戏。规则是大家依次从1开始顺序数数数到含有7或7的倍数的要拍手或其它规定的方式表示越过比如7,14,17等都不能数出下一人继续数下面的数字。违反规则者受罚。编写程序模拟100以内的拍7拍7的情况输出“*”且每10个数一行。输出样例1 2 3 4 5 6 * 8 9 1011 12 13 * 15 16 * 18 19 20* 22 23 24 25 26 * * 29 30public class Demo5 { public static void main(String[] args) { for (int i 1; i 100; i) { if (isOK(i)) { System.out.print(*\t); } else { System.out.print(i \t); } if (i % 10 0) { System.out.println(); } } } private static boolean isOK(int n) { if (n % 7 0) { return true; } return (n ).contains(7); } }6.回文的判断回文不是指回族文字是指数或者字符串具有首尾回环的性质从后向前按位颠倒后与原文一样。首尾回环的数字就是回文数如121,12321;首尾回环的字符串就是回文串如madam。编程实现实现接收用户输入的一个字符串判断是否为回文。运行示例输入Hello显示hello 不是回文方法一双指针法import java.util.Scanner; public class c11_tradition { public static void main(String[] args) { Scanner sc new Scanner(System.in); String str sc.nextLine(); System.out.println(str (isOK(str) ? : 不) 是回文); } private static boolean isOK(String str) { int len str.length(); int j len - 1; for (int i 0; i len / 2; i) { if (str.charAt(i) ! str.charAt(j--)) { return false; } } return true; } }方法二反转字符串比较法import java.util.Scanner; public class Demo6 { public static void main(String[] args) { Scanner sc new Scanner(System.in); String str sc.nextLine(); System.out.println(str (isOK(str) ? : 不) 是回文); } private static boolean isOK(String str) { return new StringBuilder(str).reverse().toString().equals(str); } }7.完数判断完数又称完美数或完备数是一些特殊的自然数。它所有的真因子即除了自身以外的约数的和即因子函数恰好等于它本身。如果一个数恰好等于它的因子之和则称该数为“完全数”。请编写程序实现接收用户输入的一个数据显示其是否完数。运行示例请输入一个数6输出6是完数import java.util.Scanner; public class Demo7 { public static void main(String[] args) { Scanner sc new Scanner(System.in); System.out.print(请输入一个数:); int n sc.nextInt(); System.out.println(n (isOK(n) ? : 不) 是完数); } private static boolean isOK(int n) { int sum 0; for (int i 1; i n; i) { if (n % i 0) { sum i; } } return sum n; } }8.三个数排序编写程序实现接收用户输入的三个任意大小的整数然后按从小到大的顺序输出。运行样例例如输入2 1 5输出从小到大的顺序为1,2,5import java.util.Scanner; public class Demo8 { public static void main(String[] args) { Scanner sc new Scanner(System.in); System.out.println(请依次输入三个整数(使用空格分隔):); int a sc.nextInt(); int b sc.nextInt(); int c sc.nextInt(); if (a b) { int temp a; a b; b temp; } if (a c) { int temp a; a c; c temp; } if (b c) { int temp b; b c; c temp; } System.out.println(从小到大的顺序为: a , b , c); } }9.洁净数统计小明非常不喜欢数字 2包括那些数位上包含数字 2 的数。如果一个数的数位不包含数字 2小明将它称为洁净数。请问在整数 1 至 nn1000 中洁净数有多少个【输入格式】输入为一行整数即问题中的n。【输出格式】输出一行包含一个整数表示答案。【样例输入】30【样例输出】18import java.util.Scanner; public class Demo9 { public static void main(String[] args) { Scanner sc new Scanner(System.in); System.out.print(请输入n(1n1000):); int n sc.nextInt(); if (n 1 || n 1000) { System.out.println(数据有误); } else { System.out.println(fun(n)); } } private static boolean isOK(int n) { return (n ).contains(2); } private static int fun(int n) { int count 0; for (int i 1; i n; i) { if (!isOK(i)) { count; } } return count; } }10.九九乘法表远在春秋战国时代就已经广泛地被人们利用请编写程序显示以下格式的九九乘法表。public class Demo10 { public static void main(String[] args) { for (int i 9; i 1; i--) { for (int j 1; j i; j) { System.out.printf(%3d*%3d%3d\t, j, i, i * j); } System.out.println(); } } }11.简单计算器实现基本功能接收用户输入的表达式进行基本的四则运算将结果显示输出。运行样例输入1.25输出1.256.2import java.util.Scanner; public class Demo11 { public static void main(String[] args) { Scanner sc new Scanner(System.in); System.out.println(请依次输入操作数1 运算符 操作数2(使用回车分隔):); double a sc.nextDouble(); char op sc.next().charAt(0); double b sc.nextDouble(); boolean isOK true; double result 0; switch (op) { case : result a b; break; case -: result a - b; break; case *: result a * b; break; case /: if (b 0) { System.out.println(除数不能为0); isOK false; } else { result a / b; } break; default: System.out.println(无效的运算符); isOK false; } if (isOK) { System.out.printf(%f%c%f%f, a, op, b, result); } } }12.使用数组接收键盘输入的5个整数逆向输出import java.util.Scanner; public class Demo12 { public static void main(String[] args) { Scanner sc new Scanner(System.in); int n 5; int[] arr new int[n]; for (int i 0; i n; i) { System.out.print(请输入第 (i 1) 个整数:); arr[i] sc.nextInt(); } for (int i arr.length - 1; i 0; i--) { System.out.print(arr[i] ); } } }13.水仙花数判断水仙花数Narcissistic number也被称为超完全数字、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数Armstrong number水仙花数是指一个 3 位数它的每个位上的数字的 3次幂之和等于它本身例如1^3 5^3 3^3 153。编程实现接收用户的输入的数据显示其是否水仙花数。运行示例输入153输出153是水仙花数import java.util.Scanner; public class Demo13 { public static void main(String[] args) { Scanner sc new Scanner(System.in); System.out.print(请输入一个3位正整数:); int n sc.nextInt(); if (n 100 || n 999) { System.out.println(无效的输入); } else { System.out.println(n (isOK(n) ? : 不) 是水仙花数); } } private static boolean isOK(int n) { int temp n; int sum 0; while (n 0) { int i n % 10; n / 10; sum (i * i * i); } return sum temp; } }14.九九乘法表正序远在春秋战国时代就已经广泛地被人们利用请编写程序显示以下格式的九九乘法表。public class Demo14 { public static void main(String[] args) { for (int i 1; i 9; i) { for (int j 1; j i; j) { System.out.printf(%3d*%3d%3d\t, j, i, i * j); } System.out.println(); } } }15.斐波那契数列斐波那契数列, 指的是这样一个数列1、1、2、3、5、8、13、21、……用文字来说就是斐波那契数列由 1 和 1 开始之后的斐波那契数列系数就由之前的两数相加。编写程序借助一维数组实现斐波那契数列前20项的显示每5个数显示在一行上。public class Demo15 { public static void main(String[] args) { int[] arr new int[20]; arr[0] 1; arr[1] 1; for (int i 2; i 20; i) { arr[i] arr[i - 1] arr[i - 2]; } for (int i 0; i 20; i) { System.out.print(arr[i] \t); if ((i 1) % 5 0) { System.out.println(); } } } }16.方法的重载设计一个求几何图形--圆、长方形面积的类根据用户设置的参数自动调用对应的方法实现。输出样例半径为3的圆的面积是28.27边长为4,5的长方形的面积是20.00public class Demo16 { public static void main(String[] args) { System.out.println(半径为3的圆的面积是: Computer.getArea(3)); System.out.println(边长为4,5的长方形的面积是: Computer.getArea(4, 5)); } } class Computer { public static double getArea(double r) { return Math.PI * Math.pow(r, 2); } public static double getArea(double l, double w) { return l * w; } }17.天数计算编程序实现接收用户输入的年月显示这个月的天数。运行示例输入201910输出2019年10月的天数31import java.util.Scanner; public class Demo17 { public static void main(String[] args) { Scanner sc new Scanner(System.in); System.out.println(请依次输入年份月份(使用回车分隔):); int year sc.nextInt(); int month sc.nextInt(); if (year 1 || month 1 || month 12) { System.out.println(数据有误); } else { System.out.println(year 年 month 月的天数: getDays(year, month)); } } private static boolean isFullYear(int year) { return ((year % 4 0) (year % 100 ! 0)) || (year % 400 0); } private static int getDays(int year, int month) { int[] std new int[]{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int i (month 2 isFullYear(year)) ? 1 : 0; return std[month] i; } }18.输出26个英文字母从字母’a’开始使用循环程序输出显示26个小写英文字母要求每5个字母显示在一行上。public class Demo18 { public static void main(String[] args) { for (int i 0; i 26; i) { System.out.print((char) (a i) \t); if ((i 1) % 5 0) { System.out.println(); } } } }19.累乘计算计算2*4*6*8*…*n多个偶数的乘积,当累乘积超过1000时,停止累乘。输出此时的累乘积以及n。public class Demo19 { public static void main(String[] args) { int end 1; int i 2; while (end 1000) { end * i; i 2; } i - 2; System.out.println(累乘积 end); System.out.println(n i); } }20.字符串的反转编写程序将下面的一段文本中的各个单词的字母顺序翻转“apple pear banana orange”变成 “elppa raep ananab egnaro”import java.util.StringJoiner; public class Demo20 { public static void main(String[] args) { String str apple pear banana orange; System.out.println(fun(str)); } private static String fun(String s) { s s.trim(); String[] words s.split( ); StringJoiner sj new StringJoiner( , , ); for (String w : words) { sj.add(new StringBuilder(w).reverse().toString()); } return sj.toString(); } }