如何用C语言循环结构实现输入年份天数输出几月几日?尽可能的用上循环结构,C语言作业,谢谢大佬 :)。
首先判断输入的年份是不是闰年,是闰年的情况下2月份29天,一年366天,不是闰年二月份28天,一年365天,把每个月分别是几天,用个数组存储,然后循环处理。你看下以下范例代码:
#include <stdio.h>
#define ISLEAP(y) ((y)%400==0||(y)%4==0&&(y)%100!=0)
void MonthDay(int year,int yearDay,int *pMonth,int *pDay);
int main(void)
{
int year,yearDay,month,day;
while(scanf("%d%d",&year,&yearDay)!=EOF)
{
MonthDay(year,yearDay,&month,&day);
printf("%d-%d-%d\n",year,month,day);
}
return 0;
}
void MonthDay(int year,int yearDay,int *pMonth,int *pDay)
{
int i,date[]={31,28,31,30,31,30,31,31,30,31,30,31};
for(i=0,*pMonth=1;yearDay>date[i];++i,++*pMonth)
{
yearDay-=i==1?date[i]+ISLEAP(year):date[i];
}
if(yearDay==0)
{
--*pMonth;
*pDay=*pMonth-1==1?date[*pMonth-1]+ISLEAP(year):date[*pMonth-1];
}
else
{
*pDay=yearDay;
}
}
你看看能不能解决你的问题,如果可以换请采纳,如果无法解决可以继续追问,谢谢。
这种的直接参看<time.h>头文件的内容啊,或者直接看struct tm这个结构体,专门处理时间的。详情可以参考下https://blog.csdn.net/xuefu2008/article/details/4656802,或者自己百度下多找几个看看
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html