本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:
在一行输出日期是该年中的第几天。
输入样例1:
2009/03/02
输出样例1:
61
输入样例2:
2000/03/02
输出样例2:
62
本题我用了两种(说起来就是一种)算法如下:
#include<stdio.h>
int pd(int y)
{
if((y%4==0&&y%100!=0)||y%400==0)
return 1; //是闰年
else return 0; //不是闰年
}
int main()
{
int y,m,d,sum,Sum;
scanf("%4d/%2d/%2d",&y,&m,&d);
int a[12]={31,29,31,30,31,30,31,31,30,31,30,31}; //闰年对应月份的天数
int b[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; //不是闰年对应月份的天数
if(pd(y))
for(int i=0;i<m-1;i++)
sum=sum+a[i];
else
for(int i=0;i<m-1;i++)
sum=sum+b[i];
Sum=sum+d;
printf("%d",Sum);
}
下面这种呢用到指针(还不是很熟)就试一下用
#include<stdio.h>
int main()
{
int y,m,d;
scanf("%d/%d/%d",&y,&m,&d);
int a[12]={31, 29, 31, 30.31, 30, 31, 31, 30, 31, 30, 31};
int b[12] = { 31, 28, 31, 30.31, 30, 31, 31, 30, 31, 30, 31};
int* p;
if((y%4==0&&y%100!=0)||y%400==0)
p=a;
else
p=b;
int tian=0;
for(int i=0;i<m-1;p++,i++)
tian=tian+*p;
tian=tian+d;
printf("%d",tian);
}