今天我们来做一些题目吧:
1、打印九九乘法表
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
...
9*1=9 9*2=18 .............. 9*9=81
public class Test1{ public static void main(String[] args)[ for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(i + "*" + j + "=" + (i * j) + "t"); // /t:制表符,作用是输出自动空4格。 } System.out.println(); } } }
2、打印杨辉三角形
-- 用二维数组实现
import java.util.Scanner; public class Test2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //使用Scanner需要导包 System.out.print("请输入杨辉三角的行数: "); int n = sc.nextInt(); //定义杨辉三角的行数和列数 int[][] arr = new int[n][n]; for (int i = 0; i < arr.length; i++) { arr[i][0] = 1; //每列的第一个元素赋值为1 arr[i][i] = 1; //每列的最后一个元素赋值为1 } for (int i = 2; i < arr.length; i++) { //外循环控制行 从第3行开始 for (int j = 1; j < arr.length; j++) { //内循环控制列 从第2列开始 arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]; } } //打印输出 for (int i = 0; i < arr.length; i++) { for (int j = 0; j <= i; j++) { //j<=i 保证输出半角 System.out.print(arr[i][j] + " "); } System.out.println(); } } }
3、冒泡排序
public class Test3 { public static void main(String[] args) { //使用冒泡排序对一组数进行排序,使得最终结果是一个从小到大的升序排序 int[] arr = {11, 23, 45, 22, 1, 45, 25, 68, 19}; System.out.println("排序之前:"); printArray(arr); //调用输出方法输出数组 System.out.println(); //定义一个方法实现对数组的冒泡排序 int[] arr1 = bubbleSoft(arr); System.out.println("排序之后:"); printArray(arr1); //调用输出方法输出数组 } //定义冒泡排序方法 public static int[] bubbleSoft(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { // 外层控制排序的次序 for (int j = 0; j < arr.length - 1 - i; j++) { // 内层控制比较的次数 if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } return arr; } //定义输出方法 public static void printArray(int[] arr) { for (int i = 0; i < arr.length; i++) { if (i == arr.length - 1) { System.out.print(arr[i] + "]"); } else if (i == 0) { System.out.print("[" + arr[i] + ","); } else { System.out.print(arr[i] + ","); } } } }
4、二分查找法
前提: 序列必须是有序的。
public class Test4 { public static void main(String[] args) { //定义一个有序的数组,使用二分法查找数组中元素。找到返回索引,不存在输出-1。 int[] arr = {1, 11, 19, 22, 23, 25, 45, 45, 68}; int number = 100; //定义要查找的元素 if (arr != null) { //在判定数组不为空的前提下 int start = 0; //定义start int end = arr.length - 1; //定义end boolean flag = true; while (start <= end) { int mid = (start + end) / 2; //定义中间指针 int midNum = arr[mid]; if (number == midNum) { System.out.println("找到元素" + number + ",下标索引为:" + mid); flag = false; break; } else if (number < midNum) { end = mid - 1; } else { start = mid + 1; } } if (flag) { //true System.out.println("数组中没有元素" + number); } } else { System.out.println("数组为空"); } } }
5、输入某年某月某日,判断这一天是这一年的第几天?
以3月5日为例,先把前两个月的加起来,然后再加上5天即本年第几天。
特殊情况,闰年且输入月份大于3需考虑多加一天。可定义数组存储1-12月各月天数。
import java.util.Scanner; public class Test5 { public static void main(String[] args) { Scanner scanner1 = new Scanner(System.in); System.out.print("输出今年是第几年: "); int year = scanner1.nextInt(); System.out.print("输出今年是第几月: "); int month = scanner1.nextInt(); System.out.print("输出今年是第几日: "); int day = scanner1.nextInt(); int daynum = 0; // 天数 //一年365天 int[] month1 = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31,30, 31 }; //闰年366天 if (year % 400 == 0 || year % 100 == 0) { month1 = new int[] { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31,30, 31 }; // 闰年里的每个月的天数 } //判断这一天是第几天 for (int index = 1; index <= month; index++) { if (index == 1) { daynum = day; } else { daynum += month1[index - 2]; } } System.out.println("这一天是这一年的第" + daynum + "天!"); } }
这些题目我感觉还是有些难度的,不知道你怎么看呢?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)