实现趣味测试题,通过键盘输入某年某月某日,其中年份必须在1900年至2020年之间,计算并输出这一天是这一年的第几天。例如,2020 年 7月 5 日是这一年的第 65 天。请绘制流程图
时间: 2024-09-20 19:13:04 浏览: 45
实现这个趣味测试题的流程大致可以分为以下几个步骤:
1. **用户输入验证**:
- 提示用户输入年、月、日的整数值。
- 检查年份是否在1900至2020之间,月份是否在1到12之间,日期是否在该月的有效天数范围内。
2. **闰年判断**:
- 判断给定年份是否是闰年。闰年的规则:能被4整除但不能被100整除的年份是闰年;或者能被400整除也是闰年。
3. **计算总天数**:
- 初始化总天数为给定日期前一年的全年的天数(365或366,取决于上一年是否是闰年)加上当前年的前几个月的天数(平年2月有28天,闰年2月有29天)。
- 然后加上输入的具体日子。
4. **输出结果**:
- 显示这一天是一年中的第多少天。
下面是简单流程图的描述:
```
开始
|
V
提示用户输入年份(YYYY)、月份(MM)和日期(DD)
|
V
检查年份范围(1900-2020),月份(MM=1-12),日期有效
|
V
判断是否为闰年
| |
V V
如果是闰年,则计算天数时考虑闰年2月多一天
如果不是闰年,直接计算
|
V
计算累计天数(包含之前的年份和月份天数)
|
V
累加输入日期
|
V
显示结果: "这是第DD天"
结束
```
相关问题
用java实现以下1、使用Scanner类解析出“数学87分,物理76分,英语96分”的成绩,计算总成绩和平均成绩。 2、输出某年某月的日历页,通过键盘输入年份和月份。 3、计算某年某月某日和某年某月某日之间的天数间隔,要求年月日通过键盘输入到程序中。(参考课本P249 Example9.18) (通过键盘输入数据参考课本P25 2.3从命令行输入与输出数据)
1. 使用Scanner类解析出“数学87分,物理76分,英语96分”的成绩,计算总成绩和平均成绩。
```
import java.util.Scanner;
public class ScoreCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩(格式为:数学xx分,物理xx分,英语xx分):");
String input = scanner.nextLine();
// 解析字符串,获取数学、物理、英语成绩
String[] scores = input.split(","); // 注意这里用的是中文逗号
int mathScore = Integer.parseInt(scores[0].substring(2, scores[0].length() - 1));
int physicsScore = Integer.parseInt(scores[1].substring(2, scores[1].length() - 1));
int englishScore = Integer.parseInt(scores[2].substring(2, scores[2].length() - 1));
// 计算总成绩和平均成绩
int totalScore = mathScore + physicsScore + englishScore;
double avgScore = ((double) totalScore) / 3;
System.out.println("总成绩为:" + totalScore + "分");
System.out.println("平均成绩为:" + avgScore + "分");
}
}
```
2. 输出某年某月的日历页,通过键盘输入年份和月份。
```
import java.util.Calendar;
import java.util.Scanner;
public class CalendarPrinter {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scanner.nextInt();
System.out.println("请输入月份:");
int month = scanner.nextInt();
// 获取该年该月的第一天
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, 1);
// 打印日历页
System.out.println("-----------------------------");
System.out.println(" " + year + "年" + month + "月");
System.out.println("-----------------------------");
System.out.println("日 一 二 三 四 五 六");
// 打印该月的日历
int weekday = calendar.get(Calendar.DAY_OF_WEEK) - 1;
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int i = 0; i < weekday; i++) {
System.out.print(" ");
}
for (int i = 1; i <= maxDay; i++) {
System.out.printf("%2d ", i);
if ((weekday + i) % 7 == 0) {
System.out.println();
}
}
if ((weekday + maxDay) % 7 != 0) {
System.out.println();
}
System.out.println("-----------------------------");
}
}
```
3. 计算某年某月某日和某年某月某日之间的天数间隔,要求年月日通过键盘输入到程序中。
```
import java.util.Calendar;
import java.util.Scanner;
public class DayIntervalCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个日期(格式为:年 月 日):");
int year1 = scanner.nextInt();
int month1 = scanner.nextInt();
int day1 = scanner.nextInt();
System.out.println("请输入第二个日期(格式为:年 月 日):");
int year2 = scanner.nextInt();
int month2 = scanner.nextInt();
int day2 = scanner.nextInt();
// 计算两个日期的天数间隔
Calendar calendar1 = Calendar.getInstance();
calendar1.set(year1, month1 - 1, day1);
long time1 = calendar1.getTimeInMillis();
Calendar calendar2 = Calendar.getInstance();
calendar2.set(year2, month2 - 1, day2);
long time2 = calendar2.getTimeInMillis();
long interval = Math.abs((time2 - time1) / (1000 * 60 * 60 * 24));
System.out.println("两个日期的天数间隔为:" + interval + "天");
}
}
```
用for循环实现通过键盘输入某年有月某日,计算并输出这一天是这一年的哪一天
要通过for循环来实现这个功能,我们首先需要确定输入的日期是否合法,然后计算这一天是这一年的第几天。这里假设输入的日期格式是“年 月 日”,并且年份为闰年或平年。以下是实现这一功能的基本步骤:
1. 读取输入的年、月、日。
2. 验证输入的日期是否合法,即日期是否在该月的范围内,以及该年是否为闰年。
3. 如果输入合法,计算输入日期之前每个月的天数之和加上输入的日数,得到这一天是这一年的第几天。
4. 输出结果。
下面是一个简化的代码示例,使用Java语言编写:
```java
import java.util.Scanner;
public class DayOfYear {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scanner.nextInt();
System.out.println("请输入月份:");
int month = scanner.nextInt();
System.out.println("请输入日期:");
int day = scanner.nextInt();
scanner.close();
int dayOfYear = day;
for (int i = 1; i < month; i++) {
if (i == 2) {
dayOfYear += isLeapYear(year) ? 29 : 28;
} else if (i == 4 || i == 6 || i == 9 || i == 11) {
dayOfYear += 30;
} else {
dayOfYear += 31;
}
}
System.out.println("输入的日期是这一年的第 " + dayOfYear + " 天。");
}
private static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}
```
在这个程序中,`isLeapYear` 方法用于判断年份是否为闰年,如果是,则二月有29天,否则有28天。然后,for循环遍历从1月到输入月份之前的每个月,并累加每个月的天数。最后输出这一天是这一年的第几天。
阅读全文