前言
嘿,同学,你今天学习了吗?
你还在为了那些所谓的工作在忙碌吗?或者,沉迷在游戏的世界里面呢,总不能一直这样下去吧。
有时候呀,打开网易云音乐,然后在这里水水文章,刷刷题,也是一件很快乐的事情哦!冲冲冲
第一关:水仙花数
- 水仙花数特征:
- 该值处于 100(包括)到 999(包括)之间;
- 其个位数的三次幂,十位数的三次幂,百位数的三次幂的和等于这个数本身。
public class Test1 {
public static void main(String[] args) {
for(int i=999;i>=100;i--) {
int a = i%10;
int b = i/10%10;
int c = i/100;
if(Math.pow(a, 3)+Math.pow(b, 3)+Math.pow(c, 3)==i) {
System.out.println(i + "是一个水仙花数。");
}
}
}
}
- 循环来了,虽然都是基础题,但是也是很重要哦,这些基础题可能不会对你在技术上有很大的提升,但是,在细节上,绝对能让你变得超级细,啊哈哈哈哈哈哈哈。
第二关:完数
- 完数的定义:一个数如果恰好等于它的因子之和(本身除外),这个数就称为完数。例如数字 6,其因子为 1,2,3,6(本身除外),满足1+2+3=6,所以 6 是完数。
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int x = input.nextInt();
int s=0;
for(int i=1;i<=x/2;i++) {
if(x%i==0)s+=i;
}
if(s==x)System.out.println(x + "是完数");
else System.out.println(x + "不是完数");
}
}
- emmmm,循环满,肯定又是各种数的,以前学c的也是,啊哈哈哈哈哈哈哈。
第三关:素数
- 素数的定义:在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int x = reader.nextInt();
int i;
int flag = 1 ;
for(i=2;i*i<=x;i++) {
if(x%i==0) {
System.out.println(x + "不是一个素数");
flag = 0;
break;
}
}
if(flag==1) {
System.out.println(x + "是一个素数");
}
}
}
- 看吧,我就说有好多啥数的,嘿嘿。
第四关:求奇数
- 本关任务:给定一个正整数 n,统计比 n 小的正奇数的个数。
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
int count = 0;
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i=1;i<n;i++) {
if(i%2==1) {
count++;
}
}
System.out.print(n + "前面共有" + count + "个奇数。");
}
}
- 害,好想快点到对象那一章节。
第五关:淡水湖排名
- 本关任务:我国有 4 大淡水湖,分别是洞庭湖,洪泽湖,鄱阳湖和太湖。
- A 说:洞庭湖最大,洪泽湖最小,鄱阳湖第三;
- B 说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三;
- C 说:洪泽湖最小,洞庭湖第三;
- D 说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
- 请根据每人说的话求出 4 大湖的正确排名。当然哈,他们每个人只说对了一个。
- 那个网站都没这个条件,看了我半天,好气哦!
public class Test5 {
public static void main(String[] args) {
int a, b, c, d; // 定义4个人说的话
int dongting, hongze, poyang, tai; // 定义4个湖
for(dongting=1;dongting<5;dongting++) {
for(hongze=1;hongze<5;hongze++) {
if(dongting==hongze)continue;
for(poyang=1;poyang<5;poyang++) {
if(poyang==dongting||poyang==hongze)continue;
tai = 10 - dongting - hongze - poyang; //因为1+2+3+4=10 哦!
a = (dongting==1?1:0)+(hongze==4?1:0)+(poyang==3?1:0);
b = (dongting==4?1:0)+(hongze==1?1:0)+(poyang==2?1:0)+(tai==3?1:0);
c = (dongting==3?1:0)+(hongze==4?1:0);
d = (dongting==3?1:0)+(hongze==2?1:0)+(poyang==1?1:0)+(tai==4?1:0);
if((a==1)&&(b==1)&&(c==1)&&(d==1)) {
System.out.println("洞庭湖排名:" + dongting);
System.out.println("洪泽湖排名:" + hongze);
System.out.println("鄱阳湖排名:" + poyang);
System.out.println("太湖排名:" + tai);
}
}
}
}
}
}
第七关:房贷款还款计算
- 本关任务:编写一个程序,由用户输入住房贷款和贷款年限,程序输出不同利率下的月还款额和总还款额,利率从 5%~8%,增长间隔为 1/8。例如,如果输入贷款额 10000 元人民币,贷款期限 5 年。
import java.util.Scanner;
public class Test7 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 接收贷款额
int loan=input.nextInt();
// 接收贷款年限
int year=input.nextInt();
// 第一步:定义变量月还款额,并赋初值0
double monthlyPay=0;
// 第二步:定义变量总还款额,并赋初值0
double totalPay=0;
// 第三步:输出贷款额
System.out.println("贷款额:"+loan);
// 第四步:输出贷款年限
System.out.println("贷款年限:"+year);
// 第五步:输出利率、月还款率以及总还款率
System.out.println("利率"+" "+"月还款额"+" "+"总还款额");
for (double i=5;i<=8;i+=0.125)
{
// 月利率
double a=i/1200;
// 月还款额
monthlyPay=loan*a*Math.pow(1+a,12*year)/(Math.pow(1+a,12*year)-1);
// 总还款额
totalPay=12*monthlyPay*year;
// 格式化输出
System.out.printf("%.3f%%\t%.2f\t%.2f\n",i,monthlyPay,totalPay);
}
}
}
- 套公式套公式,害。有时候菜起来,公式都套不会,呜呜呜
第八关:杨辉三角
- 本关任务:给定一个正整数 n,打印出有 n 行的杨辉三角形。
import java.util.Scanner;
public class Test8 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入要求打印的行数:");
int n = input.nextInt();
for(int i=0;i<n;i++){
int number = 1;
System.out.printf("%"+(n-i)*2+"s",""); //还能这样写是我没想到的,啊哈哈哈哈哈哈哈
for(int j=0;j<=i;j++){
System.out.format("%4d",number);
number = number * (i - j) / (j + 1);
}
System.out.println();
}
}
}
- Java还是香 的,这样的写法原来也可以了,学到了。啊哈哈哈哈哈哈哈
第九关:日历打印
- 本关任务:接收一个年份数和一个月份数,打印出该月的日历。
import java.util.Scanner;
public class Test9 {
// 定义主方法 main,在该方法中完成本关任务
public static void main(String[] args) {
int year = 0;// 用来保存输入的年份
int month = 0;// 用来保存输入的月份
Scanner in = new Scanner(System.in);
year = in.nextInt();// 获取输入的年份
if(year<1900){
System.out.print("请输入大于或等于1900的年份");
System.exit(0);
}
month = in.nextInt();// 获取输入的月份
if(month>12|| month<1){
System.out.print("请输入正确的月份");
System.exit(0);
}
in.close();
int date = 0; // 存放每月1号是星期几星期
int day_max = 0;// 存放月的天数
int day_sum = 0;
// 累加从1900年到接收的年份之间的天数
for (int i = 1900; i < year; i++) {
// 判断是否是闰年
if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0)) {
// 闰年366天
day_sum += 366;
} else {
// 平年365天
day_sum += 365;
}
}
// 对月份进行累加计算
for (int i = 1; i < month; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day_max = 31;
day_sum += 31;
break;
case 2:
// 判断是否是闰年
if (year % 400 == 0 || (year % 4 == 0 && (year % 100 != 0))) {
// 闰年2月29
day_sum += 29;
} else {
// 平年2月28
day_sum += 28;
}
break;
default:
day_sum += 30;
break;
}
}
date = 1 + day_sum % 7; // 存放输入的日期计算得到的星期,1900年1月1日星期一
// 如果是星期日,开头则 不用空出来距离
// 此处之后date变量表示这月1号前面制表符的个数
if (date == 7) {
date = 0;
}
// 判断这个月份多少天
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day_max = 31;
break;
case 2:
// 判断是否是闰年
if (year % 400 == 0 || (year % 4 == 0 && (year % 100 != 0))) {
// 闰年2月29
day_max = 29;
} else {
// 平年2月28
day_max = 28;
}
break;
default:
day_max = 30;
break;
}
System.out.println("==================================================");
// 输出表头
System.out.print("日\t一\t二\t三\t四\t五\t六\n");
int day = 1;// 打印的天数
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 7; j++) {
// 打印第一行的时候,空出前date个空间
if (i == 0 && j < date) {
System.out.print("\t");
// 跳出当前次循环
continue;
}
if (day > day_max) {
break;
}
System.out.print(day + "\t");
day++;
}
// 打印完一行后换行
System.out.println();
}
System.out.println("==================================================");
}
}
- 心态炸了,他们家服务器是真的垃圾,运行几次就超时,害,明天见。