Java算法基本功练习
2018-11-29 本文已影响8人
奔跑吧李博
该篇为Java算法基本功小练习,适合初学者练手的题。
1.打印九九乘法表。
/**
* 打印九九乘法表
*/
public static void multiplicationTable() {
for (int i = 1; i <= 9; i++) { //用i控制行,1-9行
for (int j = 1; j <= i; j++) { //用j控制列,j最大不超过当前i
System.out.print(i + "*" + j + "=" + i*j + "\t");
}
System.out.println();
}
}
运行结果:
2.定义一个二维数组,int[2][4],要求是循环输入8个整数,存入到数组中,然后输出这个数组中的最大值。
/**
* 定义一个二维数组,int[2][4],要求是循环输入8个整数,存入到数组中,然后输出这个数组中的最大值。
*/
public static void arrayMax() {
Scanner scanner = new Scanner(System.in);
int[][] array = new int[2][4];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < 4; j++) {
System.out.println("请输入" + i + "行" + j + "列数字");
array[i][j] = scanner.nextInt(); //获取输入数存在对应行列位置
}
}
int max = array[0][0]; //假定第一个数最大
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < 4; j++) {
if (array[i][j] > max) { //有更大就替换
max = array[i][j];
}
}
}
System.out.println("最大数为:" + max);
}
运行结果:
3.定义一个长度为10的整型数组,循环输入10个整数。然后判断这个数组中有几个偶数,再定义一个正好能存放这几个偶数的数组,将上一个数组中的所有偶数复制过来。最后循环输出这些偶数。
/**
* 定义一个长度为10的整型数组,循环输入10个整数。然后判断这个数组中有几个偶数,再定义一个正好能存放这几个偶数的数组,将上一个数组中的所有偶数复制过来。最后循环输出这些偶数。
*/
public static void even() {
int[] array = new int[10];
Scanner scanner = new Scanner(System.in);
int evenCount = 0;
for (int i = 0; i < array.length; i++) {
System.out.println("输入第" + (i+1) + "整数");
array[i] = scanner.nextInt();
if (array[i] % 2 == 0) {
evenCount++; //输入的同时判断是否为偶数
}
}
int[] evenArray = new int[evenCount];
evenCount = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] % 2 == 0) {
evenArray[evenCount] = array[i];
evenCount++; //记录新偶数数组存放个数
}
}
System.out.print("所有的偶数有: ");
for (int i = 0; i < evenCount; i++) {
System.out.print(evenArray[i] + " ");
}
}
运行结果:
4.输入一个数判断一个数是否为质数(只能被1和本身整除的数叫质数)
/**
* 输入一个数判断一个数是否为质数(只能被1和本身整除的数叫质数)
*/
public static void primeNumber() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数:");
int num = scanner.nextInt();
int count = 0; //记录能被整除的数的个数
for (int i = 1; i <= num; i++) {
if (num % i == 0) {
count++;
}
}
if (count < 3) {
System.out.println("这个数是质数");
}else {
System.out.println("这个数不是质数");
}
}
运行结果:
5.定义一个二维数组,用来记录3个学生的java,c#,sql三门功课的成绩,二维数组的一行记录一个人的成绩
/**
* 定义一个二维数组,用来记录3个学生的java,c#,sql三门功课的成绩,二维数组的一行记录一个人的成绩,要求循环输入,最后输出格式如下:
* java c# sql
* 第1名学生 89 79 98
* 第2名学生 99 80 100
* 第3名学生 79 99 87
*/
public static void printScore() {
int[][] array = new int[3][3];
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < array.length; i++) {
int j = 0;
System.out.println("请输入第" + (i+1) + "个学生java成绩:");
array[i][j++] = scanner.nextInt();
System.out.println("请输入第" + (i+1) + "个学生c#成绩:");
array[i][j++] = scanner.nextInt();
System.out.println("请输入第" + (i+1) + "个学生sql成绩:");
array[i][j++] = scanner.nextInt();
}
System.out.println("java\tc#\tsql");
for (int i = 0; i < array.length; i++) {
System.out.print("第" + (i+1) + "名学生成绩\t");
for (int j = 0; j < 3; j++) {
System.out.print(array[i][j] + "\t");
}
System.out.println();
}
}
6.计算1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10=?
/**
* 计算1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10=?
*/
public static void accumulation() {
double sum = 0;
for (int i = 1; i <= 10; i++) {
sum += (double) 1/i;
}
System.out.print(sum);
}
7.从1不断的累加,最多加到100,但如果你的累加结果正好大于1000时,要求也结束这个循环。问这个时候正好加到了几。
/**
* 从1不断的累加,最多加到100,但如果你的累加结果
* 正好大于1000时,要求也结束这个循环。问这个时候正好加
* 到了几。
*/
public static void accumulation() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
if (sum > 1000) {
System.out.print("这个时候正好加到:" + i);
break;
}
}
}
结果为:
这个时候正好加到:45
8.从1累加到100,但如果要累加的数据能被3整除,并且也能被7整数,那么就不要累加这个数。最后输出结果。
/**
* 从1累加到100,但如果要累加的数据能被3整除,
* 并且也能被7整数,那么就不要累加这个数。最后输出结果。
*/
public static void accumulation2() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0 && i % 7 == 0) {
continue;
}
sum += i;
}
System.out.print("总和为:" + sum);
}
结果为:
总和为:4840
9.打印如下图形
/**
* 打印图形
* *
* ***
* *****
* *******
* *********
* ***********
* *************
*/
public static void printStart() {
//总共有7行
for (int i = 0; i < 7; i++) {
int printCount = 1 + 2*i; //每行打印个数规律为1+2*n
for (int j = 0; j < printCount; j++) {
System.out.print("*"); //循环打印
}
System.out.println(); //换行
}
}
结果为:
10.打印如下图形
/**
* *
* ***
* *****
* *******
* *********
* ***********
* *********
* *******
* *****
* ***
* *
*/
public static void printStar2() {
//打印前6行
for (int i = 0; i < 6; i++) {
int printCount = 1 + 2*i; //每行打印个数规律为1+2*n
for (int j = 0; j < printCount; j++) {
System.out.print("*"); //循环打印
}
System.out.println(); //换行
}
//打印后5行
for (int i = 4; i >= 0; i--) {
int printCount = 1 + 2*i;
for (int j = 0; j < printCount; j++) {
System.out.print("*");
}
System.out.println();
}
}
11.给一个数组做反序。
/**
* 给一个数组做反序。
*/
public static void reserseArray() {
//采用数组对称依次相互交换值得做法
int[] array = new int[]{13,0,6,42,8,24,9,10};
int start = 0; //低位下标
int end = array.length-1; //高位下标
for (; start < end; start++) {
int temp = array[start];
array[start] = array[end];
array[end] = temp;
end--; //循环依次,低位右移,高位左移
}
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + "\t");
}
}
运行结果:
12.求1-100以内所有的质数
/**
* 求1-100以内所有的质数
*/
public static void getPrimeNumber() {
System.out.print("1-100以内的质数有: ");
for (int i = 1; i <= 100; i++) {
int count = 0;
for (int j = 1; j <= i / 2; j++) {
if (i % j == 0) {
count++;
}
}
if (count < 2) {
System.out.print(i + " ");
}
}
}
结果为:
13.输入一个四位数,要求计算出它的千位,百位,十位,个位,并且打印出来。
/**
* 输入一个四位数,要求计算出它的千位,百位,十位,个位,并且打印出来。
*/
public static void printNum() {
Scanner scanner = new Scanner(System.in);
int num;
do {
System.out.print("请输入一个四位数:");
num = scanner.nextInt();
}while (num/1000 < 1);
int rest = num;
int gewei = rest % 10;
rest /= 10;
int shiwei = rest % 10;
rest /= 10;
int baiwei = rest % 10;
rest /= 10;
int qianwei = rest % 10;
System.out.print("个位" + gewei + " 十位" + shiwei + " 百位" + baiwei + " 千位" + qianwei);
}
结果为: