今天我们来做一些题目吧:
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 + "天!");
}
}
这些题目我感觉还是有些难度的,不知道你怎么看呢?