C语言编程,要求输入年月日,输出该天位于这天的第几天,请高手帮帮忙,我是初学者,请尽量些简单点!

无限感激!
打错了,是位于该年第几天!

代码如下。。。。因为你要简单一点。。就没有写成函数的形式。。。。

#include"stdio.h"
void main()
{
int year,month,day;
int dayOfYear = 0;/*保存最后的结果*/
int i; /*循环变量*/

printf("please input year : ");/*提示用户输入年*/
scanf("%d",&year);/*接收用户输入的年*/

printf("please input month : ");/*提示用户输入月*/
scanf("%d",&month);/*接收用户输入的月*/

printf("please input day: ");/*提示用户输入日*/
scanf("%d",&day);/*接收用户输入的日*/

/*开始计算位于该年的第几天*/
for(i=1;i<=month;i++){
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)/*有31天的月份*/
dayOfYear = dayOfYear +31;
else if(i==4||i==6||i==9||i==11)/*有30天的月份*/
dayOfYear = dayOfYear +30;
else{ /*处理二月份,如果是闰年,有29天,否则是28天*/
if((year%4==0)||(year%4==0&&year%100!=0))/*闰年*/
dayOfYear = dayOfYear +29;
else dayOfYear = dayOfYear +28;
}
}
dayOfYear = dayOfYear + day;

printf("%d",dayOfYear);
getch();
}

运行结果示例:
please input year : 2010
please input month : 1
please input day : 3
34

希望能对你有帮助。。。。。仍有问题可以HI我。。。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-16
截取了一段 LZ参考下吧 格式不全。
-------------------------------------------------------
int month_day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //每个月的天数
int year,month,day,week,year_day=0; //变量声明
printf("===请输入第一个时间点 如2010 5 29===>:");
scanf("%d%d%d",&year,&month,&day);
if((year%4==0 && year%100!=0) || year%400==0) //判断平年闰年 二月天数变化
{ month_day[2]++;
printf("%d年为【闰年】\n",year);
}
else
printf("%d年为【平年】\n",year);
for(i=0;i<month;i++) //循环累加天数到当前月
year_day=year_day+month_day[i]; //当前月加当前日期 即为总天数
year_day=year_day+day; //第一时间点是当年第几天。
printf("%d月%d号为%d年的第【%d天】\n",month,day,year,year_day);
第2个回答  推荐于2016-03-16
#include<stdio.h>
int N;
void main()
{ int zong_tian_shu( int, int );
int y,r,d;
do
scanf("%d%d%d",&N,&y,&r);
while(r<1||r>31||y<1||y>12);
d=zong_tian_shu(y,r);
printf("%d年%d月%d日是%d的第%d天\n",N,y,r,N,d);
}
int zong_tian_shu( int y, int r )
{ int f( int);
int d=0,i,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(y>2)
d=f(N);
for(i=0;i<y;i++)
d=d+a[i];
d=d+r;
return(d);
}
int f( int N)
{ int d;
if(N%400==0||N%4==0&&N%100!=0)
d=1;
else d=0;
return(d);
}本回答被提问者采纳
相似回答