今天蓝桥杯出成绩了,小编侥幸拿了个省赛一等奖,心里灰常的激动~那么我们每天更新一道题~
第几天
2000年的1月1日,是那一年的第1天。
那么,2000年的5月4日,是那一年的第几天?
注意:需要提交的是一个整数,不要填写任何多余内容。
最快的方式就是手算 2000年是闰年,不知道的小伙伴可以联想一下2008年是北京奥运会,闰年每四年一次,往前推就行了,所以2月有29天
1月:31天 2月:29天 3月:31天 4月:30天 5月:4天 结果是125天
非要代码的话:(用于检验结果是否正确,输出所有的天数)package 第九届蓝桥杯;
import java.util.Scanner;
public class 第一题第几天 {
public static void main(String[] args) {
boolean flag;
Scanner sc=new Scanner(System.in);
//输入那一年的第一天
int year = sc.nextInt();
int month = sc.nextInt();
int day = sc.nextInt();
//用于输出手算的结果
int sum=sc.nextInt();
sc.close();
System.out.println(year+"-"+month+"-"+day);
sum--;
while(sum>0)
{
flag=check(year);
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
if(day==31){
if(month==12)
{
month=1;
year++;
flag=check(year);
day=1;
sum--;
System.out.println(year+"-"+month+"-"+day);
}
else{
month++;
day=1;
sum--;
System.out.println(year+"-"+month+"-"+day);
}
}
else
{
day++;
sum--;
System.out.println(year+"-"+month+"-"+day);
}
}
if(month==2&&flag==true) //闰年 29天
{
if(day==29){
month++;
day=1;
sum--;
System.out.println(year+"-"+month+"-"+day);
}
else
{
day++;
sum--;
System.out.println(year+"-"+month+"-"+day);
}
}
if(month==2&&flag==false) //平年28天
{
if(day==28){
month++;
day=1;
sum--;
System.out.println(year+"-"+month+"-"+day);
}
else
{
day++;
sum--;
System.out.println(year+"-"+month+"-"+day);
}
}
if(month==4||month==6||month==9||month==11)
{
if(day==30){
month++;
day=1;
sum--;
System.out.println(year+"-"+month+"-"+day);
}
else
{
day++;
sum--;
System.out.println(year+"-"+month+"-"+day);
}
}
}
}
public static boolean check(int year)//判断年份是否为闰年
{
boolean flag;
if((year%4==0&&year%100!=0)||year%400==0){
flag=true; //闰年
}
else{
flag=false;
}
return flag;
}public static boolean check(int year)//判断年份是否为闰年
{
boolean flag;
if((year%4==0&&year%100!=0)||year%400==0){
flag=true; //闰年
}
else{
flag=false;
}
return flag;
}
}
练习题:第几天
y年m月d日是哪一年的第几天。
比如y年的1月1日是那一年的第一天,那么2000年7月7日是那一年的第几天。
以下程序实现了该功能,请你补全空白处代码:
#include <cstdio>
#include <algorithm>
using namespace std;
int month[13][2] = {{0, 0}, {31, 31}, {28, 29}, {31, 31}, {30, 30}, {31, 31}, {30, 30}, {31, 31}, {31, 31}, {30, 30}, {31, 31}, {30, 30}, {31, 31}};
bool isleap(int year)
{
return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
}
int main()
{
int y1, m1, d1;
int y2, m2, d2;
int time1, time2;
scanf("%d%d", &time1, &time2);
if (time1 > time2)
swap(time1, time2);
y1 = time1 / 10000, m1 = time1 % 10000 / 100, d1 = time1 % 100;
y1 = time2 / 10000, m2 = time2 % 10000 / 100, d2 = time2 % 100;
int ans = 1;
while (y1 < y2 || m1 < m2 || d1 < d2)
{
d1++;
_________________;
ans++;
}
printf("%d\n", ans);
return 0;
}
A | if (d1 == month[m1][isleap(y1)] + 1) { d1 = 1; y1++; m1++; } if (m1 == 13) { m1 = 1; } |
B | if (d1 == month[m1][isleap(y1)] + 1) { d1 = 1; } if (m1 == 13) { m1 = 1; y1++; m1++; } |
C | if (d1 == month[m1][isleap(y1)] + 1) { d1 = 1; m1++; } if (m1 == 13) { m1 = 1; y1++; } |
D | if (d1 == month[m1][isleap(y1)]) { d1 = 1; m1++; } if (m1 == 13) { m1 = 1; y1++; } |
答案:
if (d1 == month[m1][isleap(y1)] + 1)
{
d1 = 1;
m1++;
}
if (m1 == 13)
{
m1 = 1;
y1++;
}