//1、【回文数】
//打印5位数中的所有回文数,每行打印10个数。最后统计一下一共有多少个5位回文数。
public static void task1() {
//1、【回文数】
//打印5位数中的所有回文数,每行打印10个数。最后统计一下一共有多少个5位回文数。
int count = 0;
for (int i = 10000; i < 100000; i++) {
int ge = i % 10;
int shi = i / 10 % 10;
int qian = i / 1000 % 10;
int wan = i / 10000;
if (ge == wan && shi == qian) {
System.out.print(i + "\t");
count++;
if (count % 10 == 0) {
System.out.println("第" + count / 10 + "行");
}
}
}
System.out.println("一共有" + count + "个");
}
//2、【求完数】
//一个数如果恰好等于它的所有真因子(即除了自身外的所有因数)之和,这个数就称为"完数"
public static void task2() {
//2、【求完数】
//一个数如果恰好等于它的所有真因子(即除了自身外的所有因数)之和,这个数就称为"完数"
for (int i = 1; i <= 1000; i++) {
int x = 0; // 哟过来接收因子的和
for (int j = 1; j < i; j++) { // 求 i 的真因数
if (i % j == 0)
x += j; //累加
}
if (x == i)
System.out.println(i + "是完数");
}
}
//3、【求不重复数字】
//有1、2、3、4一共四个数字,能组成多少个不相等且无重复数字的三位数?都是多少?
/**
* 第一种思路: 随机100-999的一个数 判断 是否包含1,2,3,4
* 然后在 判断重复
* 第二种思路: 随机生成 每个位子上都是1-4 然后去重复
*/
public static void task3() {
//3、【求不重复数字】
//有1、2、3、4一共四个数字,能组成多少个不相等且无重复数字的三位数?都是多少?
/**
* 第一种思路: 随机100-999的一个数 判断 是否包含1,2,3,4
* 然后在 判断重复
* 第二种思路: 随机生成 每个位子上都是1-4 然后去重复
*/
int count = 0;
for (int i = 100; i < 1000; i++) {
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100;
if (ge == 1 || ge == 2 || ge == 3 || ge == 4) {
if (shi == 1 || shi == 2 || shi == 3 || shi == 4) {
if (bai == 1 || bai == 2 || bai == 3 || bai == 4) {
if (ge != shi && ge != bai && shi != bai) {
System.out.print(i + " ");
count++;
}
}
}
}
}
// 方法二
// int num;
// for (int i = 1; i <=4 ; i++) { // 百位
// for (int j = 1; j <=4 ; j++) { // 十位
// for (int k = 1; k <=4 ; k++) { // 个位
// if(i!=j&&i!=k&&j!=k){
// num=i*100+j*10+k;
// System.out.print(num+" ,");
// }
// }
// }
// }
System.out.println();
System.out.println("一共有" + count + "种不重复的组合方法");
}
//4、【根据输入求输出-求位数、逆序输出】
//键盘录入一个正整数,
// 请求:1.它是几位数?
// 2.逆序打印出各位数字。
public static void task4() {
//4、【根据输入求输出-求位数、逆序输出】
//键盘录入一个正整数,
// 请求:1.它是几位数?
// 2.逆序打印出各位数字。
Scanner scan = new Scanner(System.in);
int num = 0;
while (num<=0){
System.out.println("请输入一个正整数:");
num=scan.nextInt();
}
String str = String.valueOf(num);
char[] array = str.toCharArray();
System.out.println("你输入的数为:" + array.length+"位数");
// 逆序打印各位数字
StringBuffer sb = new StringBuffer(str);
str=sb.reverse().toString();
System.out.println(str);
}
//5、【数列的前n项和】
//有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13. 求出这个数列的前20项之和。
//注:提前告诉你答案是32.66026079864164
public static void task5() {
//5、【数列的前n项和】
//有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13. 求出这个数列的前20项之和。
//注:提前告诉你答案是32.66026079864164
double fenzi = 2;
double fenmu = 1;
double sum = 0;
for (int i = 0; i < 20; i++) {
sum += fenzi / fenmu;
fenzi = fenzi + fenmu;
fenmu = fenzi - fenmu;
}
System.out.println(sum);
// 方法二
// double[] arr1=new double[20];//分子
// double[] arr2=new double[20];// 分母
// arr1[0]=2;
// arr2[0]=1;
// arr1[1]=3;
// arr2[1]=2;
// for (int i = 2; i < arr1.length ; i++) {
// arr1[i]=arr1[i-1]+arr1[i-2];
// }
// for (int i = 2; i < arr2.length ; i++) {
// arr2[i]=arr2[i-1]+arr2[i-2];
// }
// int sum1=0;
// for (int i = 0; i < 20; i++) {
// sum1+=arr1[i]/arr2[i];
// }
// System.out.println(sum1);
}
//6、【求奇数/偶数和】
//求100以内的所有奇数/偶数的和。
//推荐方法二
public static void task6() {
//6、【求奇数/偶数和】
//求100以内的所有奇数/偶数的和。
int oddSum = 0;
int evenSum = 0;
for (int i = 1; i < 101; i += 2) {
oddSum += i;
}
System.out.println(oddSum);
for (int i = 2; i < 101; i += 2) {
System.out.println(i);
evenSum += i;
}
System.out.println(evenSum);
// 第二种方法
// for (int i = 0; i < 101; i++) {
// if(i%2==0){
// oddSum+=i;
// }else {
// evenSum+=i;
// }
// }
// System.out.println(oddSum);
// System.out.println(evenSum);
}
//7、【自由落体】
//假如一个小球从100米高度自由落下,每次落地后就反跳回原高度的一半。那么求它在第10次落地时,共经过多少米?第10次反弹多高?
public static void task7() {
//7、【自由落体】
//假如一个小球从100米高度自由落下,每次落地后就反跳回原高度的一半。那么求它在第10次落地时,共经过多少米?第10次反弹多高?
double s = 0; // 小球经过的路程
double h = 100;// 初始下落高度
for (int i = 1; i <= 10; i++) {
s = s + h+h/2; //下落距离+反弹高度
h = h / 2; // 反弹高度
}
s-=h; // 将最后一次落地反弹的高度减去 因为最后一次落地时小球不会再反弹
System.out.println("小球经历了:"+s+"米");
System.out.println("小球第十次的高度:" + h+"米");
}
//8、【循环练习-蜗牛爬井】
//井里有一只蜗牛,他白天往上爬5米,晚上掉3.5 米,井深56.7米,计算蜗牛需要多少天才能从井底到爬出来。
//推荐方法二
public static void task8() {
//8、【循环练习-蜗牛爬井】
//井里有一只蜗牛,他白天往上爬5米,晚上掉3.5 米,井深56.7米,计算蜗牛需要多少天才能从井底到爬出来。
int days = 0;
double heightSum = 0;
while (true) {
heightSum += 5; // 蜗牛白天爬的
days++;
//System.out.println(sum);
//System.out.println(days);
if (heightSum > 56.7) {
break;
}
heightSum -= 3.5; // 蜗牛白天爬的减去晚上掉落的
// 第二种方法
// heightSum+=5;
// if(heightSum<=56.7){
// heightSum-=3.5;
// }else {
// break;
// }
// days++;
}
System.out.println("蜗牛需要"+days+"天才能爬出来");
}
//9、【求和-去除7倍数和包含7】
//打印出1-100之间所有不是7的倍数和不包含7的数字, 并求和。
public static void task9() {
//9、【求和-去除7倍数和包含7】
//打印出1-100之间所有不是7的倍数和不包含7的数字, 并求和。
int Sum = 0;
for (int i = 1; i < 101; i++) {
int ge = i % 10;
int shi = i / 10;
if (i % 7 != 0 && ge != 7 && shi != 7) {
System.out.print(i+",");
Sum += i;
}
}
System.out.println();
System.out.println("和为:" + Sum);
}
//10、【排序】
//随机给十个数字,对它们进行排序。(可以给一个有10个整数元素的数组,然后对数组排序)
public static void task10() {
//10、【排序】
//随机给十个数字,对它们进行排序。(可以给一个有10个整数元素的数组,然后对数组排序)
int[] a = new int[10];
for (int i = 0; i < a.length; i++) {
int x = (int) (Math.random() * 100);
a[i] = x;
}
// 方法一:Arrays.sort();
// Arrays.sort(a);
// System.out.println("Arrays.sort()方法排序:"+Arrays.toString(a));
// 方法二:冒泡排序
for (int i = 0; i <=a.length ; i++) { // 轮数
for (int j = 0; j < a.length-1-i; j++) { // 用来判断
if(a[j]>a[j+1]){
int temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
System.out.println("第"+(i+1)+"轮排序的结果"+Arrays.toString(a));
}
System.out.println("最终排序的结果"+Arrays.toString(a));
}