10
社区成员




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;
y2 = 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;
}
#include<bits/stdc++.h>
using namespace std;
int dat[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int y,m,d;
int main(){
cin>>y>>m>>d;
if(y%400== 0||(y%4==0&&y%100!=0)){
dat[2]++;
}
for(int i=1;i<=12;i++){
dat[i]+=dat[i-1];
}
cout<<dat[m-1]+d;
return 0;
}
//这题还是很简单的
#include
#include
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}};//每一行第一列是平年在那一个月的天数,第二列是闰年在那一个月的天数,因为月是从1开始而数组从0开始,所以第0行设置为0,0占位
bool isleap(int year)//判断是否为闰年
{
return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);//闰年返回1,平年返回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;//分别获取年月日
y2 = time2 / 10000, m2 = time2 % 10000 / 100, d2 = time2 % 100;
int ans = 1;
while (y1 < y2 || m1 < m2 || d1 < d2)//一直比较到第二个年月日
{
d1++;
if(d1 == month[m1][isleap[]y1]){//如果天数大于当月天数,日变为1,月份增加
d1 = 1;
m1++;
}
if(m1 == 13){//如果月数超过13,月数变为1,年份增加
m1 = 1;
y1++;
}
ans++;//天数增加
}
printf("%d\n", ans);
return 0;
}
大佬贴个代码可好?