今天是刚开始使用java刷题的第一天!以后我也会一直坚持分享每天刷的题目以及解题思路!~
第一题:猴子吃桃问题:
猴子吃桃问题。猴子第一天摘下若干个桃子,当时就吃了一半,还不过瘾,就又吃了一个。第二天又将剩下的桃 子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第 10 天在想吃的时候就剩一个桃子了,求 第一天共摘下来多少个桃子?
先看一下我的递推思路:

然后直接拿上公式去写
java
import java.util.Scanner;
public class day1 {
//猴子吃桃问题。猴子第一天摘下若干个桃子,当时就吃了一半,还不过瘾,就又吃了一个。第二天又将剩下的桃
//子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第 10 天在想吃的时候就剩一个桃子了,求
//第一天共摘下来多少个桃子?
public static void main(String[] args) {
int num = 1; // 第10天剩下1个桃子
// 从第9天逆推到第1天
for (int i = 9; i >= 1; i--) {
num = (num + 1) * 2;
System.out.println("第" + i + "天有 " + num + " 个桃子");
}
System.out.println("第一天共摘下来 " + num + " 个桃子");
}
}
第二题:转化字符串
输入一个字符,判断它是否为小写字母,如果是,将它转换成大写字母,否则,不转换
这里我采用StringBuilder拼接的方法
java
import java.util.Scanner;
public class day1 {
public static void main(String[] args) {
//输入一个字符,判断它是否为小写字母,如果是,将它转换成大写字母,否则,不转换
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
StringBuilder res = new StringBuilder();//使用拼接方法一个一个来
for (int i = 0; i < str.length(); i++) {
//获取每一位判断是否是小写
char ch = str.charAt(i);
if (Character.isLowerCase(ch)){
//是小写就转换为大写
res.append(Character.toUpperCase(ch));
}else{
res.append(ch);//否则不改变
}
}
System.out.println(res.toString());
}
}
第三题:输入日期判断天数
编写程序,对输入的年、月、日,给出该天是该年的第多少天? 例如:2022年1月15日,是该年的第15天
这里我采用的是数组累加的方式,把每一月的天数存进去,然后额外判断一下闰年。
计算方式:先算输入月份的前几个月的天数,因为那几月是完全过了的,比如我说八月7号,那肯定说明1-7月都过完了,还剩8月的7天,也就是说最后再加上我们输入的天数就可以了
java
import java.util.Scanner;
public class day1 {
//编写程序,对输入的年、月、日,给出该天是该年的第多少天?
//例如:2022年1月15日,是该年的第15天
public static void isDays(int year,int month,int day) {
int[] d = {31,28,31,30,31,30,31,31,30,31,30,31};
if(year%4==0&&year%100!=0||year%400==0){
d[1]=29;
}
int sum_day=0;
//前几个月单独计算,然后再加上输入的多少号就可以了
for (int i = 0; i < month-1; i++) {
sum_day+=d[i];
}
sum_day+=day;
System.out.println(+year+"年"+month+"月"+day+"日是该年的第"+sum_day+"天");
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入年数");
int year = sc.nextInt();
System.out.println("请输入月份");
int month = sc.nextInt();
System.out.println("请输入天数");
int day = sc.nextInt();
isDays(year,month,day);
}
}
第四题:10000内的完数
编程求 1~10000 之间的所有"完全数",完全数是该数的所有因子之和等于该数的数。例如,6 的因子有 1、2、 3,且 6=1+2+3,所以 6 是完全数。
java
public class day1 {
//求 1~10000 之间的所有"完全数",完全数是该数的所有因子之和等于该数的数。
// 例如,6 的因子有 1、2、3,且 6=1+2+3,所以 6 是完全数。
public static boolean perfectNumber(int num ){
if (num<2) {
return false;
}
// 找出所有能整除num的数(因子)
int sum=0;
for (int i = 1; i < num; i++) {
if(num % i == 0){
sum += i;
}
}
return sum==num;//返回满足因子之和等于这个数也就是完数
}
public static void main3(String[] args) {
for (int i = 0; i <= 10000; i++) {
if(perfectNumber(i)){
System.out.println(i);
}
}
}
}
以上是今天分享的四个题目,点点关注天天更新~