您的位置:首页 > 编程语言 > C语言/C++

C语言:输入某年某月某日,判断这一天是这一年的第几天?

2017-12-25 15:31 1931 查看
#include <stdio.h>
//输入某年某月某日,判断这一天是这一年的第几天?
int getDaysByMonth(int m,int d,char flag)
{
int c;
if(flag=='r'){//闰年
if(m==2){//2月是29天
return (31+d);
}else if(m>2){
c=0;
m=m-1;
for(;m>0;m--)
{
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
c+=31;
}else if(m==2){
c+=29;
}else{
c+=30;
}
}
return c+d;
}else{
return d;
}
}else{//平年
if(m==2){//2月是28天
return (31+d);
}else if(m>2){
c=0;
m=m-1;
for(;m>0;m--)
{
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
c+=31;
}else if(m==2){
c+=28;
}else{
c+=30;
}
}
return c+d;
}else{
return d;
}
}
}
void main()
{
int y,m,d,count=1;
printf("请输入年月日(例如2017-01-01):");
scanf("%d-%d-%d",&y,&m,&d);
while(  ((((y%4==0 && y%100!=0)||(y%400==0)) && (m==2)) && d>29) || (y%400!=0 && y%4!=0 && m==2 && d>28) ||  ((m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12)&&d>31) || ((m==4 || m==6 || m==9 || m==11)&& d>30)){
printf("请输入年月日(例如2017-01-01):");
scanf("%d-%d-%d",&y,&m,&d);
}
//先判断是否为闰年
if((y%4==0 && y%100!=0)||(y%400==0)){//闰年
count=getDaysByMonth(m,d,'r');
}else{//平年
count=getDaysByMonth(m,d,'n');
}
printf("%d-%02d-%02d是今年的第%d天\n",y,m,d,count);
putchar('\n');
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐