求C语言题目答案——输入某年某月某日,判断这一天是这一年的第几天?

输入某年某月某日,判断这一天是这一年的第几天?求详解,谢谢了。
能不能好人做到底,再给个流程图给我。

#include <conio.h> /* 此头函数请不要删除 */

#include<stdio.h>
int main()
{
int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,j,k,y,m,d,b,n,sum;
while(scanf("%d/%d/%d",&y,&m,&d)!=EOF)/*日期输入格式:2010/6/9*/
{
sum=0;
for(i=1;i<m;i++)
sum=sum+days[i];
sum=sum+d;
if((y%4==0||(y%400==0&&y%100!=0)) &&m>2)
sum=sum+1;
printf("%d\n",sum);
}
return 0;

getch(); /* 此语句请不要删除*/
}

简易流程图:
开始
建立数组存放12个月的各个天数
从键盘输入日期例如:1996/3/1
对输入月份以前的所有月的天数累加——sum
再加上输入的天数
判断是否为闰年
如果是 sum+1
如果不是 sum保持不变
输出“一年的第几天”
结束
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-09
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊

情况,闰年且输入月份大于3时需考虑多加一天。

2.程序源代码:

main()

{

int day,month,year,sum,leap;

printf("\nplease input year,month,day\n");

scanf("%d,%d,%d",&year,&month,&day);

switch(month)/*先计算某月以前月份的总天数*/

{

case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

default:printf("data error");break;

}

sum=sum+day; /*再加上某天的天数*/

if(year@0==0||(year%4==0&&year0!=0))/*判断是不是闰年*/

leap=1;

else

leap=0;

if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/

sum++;

printf("It is the %dth day.",sum);}
第2个回答  2010-06-09
哈哈,告诉你哦。
定义一个全局函数 int this_year(int,int,int);
定义一个全局数组 Mon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
函数如下:

int this_year(int Year,int Month,int Day)//返回该日期是当年的第几天
{
int Sum=0;
for(int i=1;i<Month;i++)
{
if(i==2)
Sum+=Mon[1]+(Year%4==0&&Year%100!=0||Year%400==0);
else
Sum+=Mon[i-1];
}
return Sum+Day;
}

用这个函数就行了。。。不懂直接问我
第3个回答  2019-03-09
main()
{
int
day,month,year,sum,leap;
printf("\nplease
input
year,month,day\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)/*先计算某月以前月份的总天数*/
{
case
1:sum=0;break;
case
2:sum=31;break;
case
3:sum=59;break;
case
4:sum=90;break;
case
5:sum=120;break;
case
6:sum=151;break;
case
7:sum=181;break;
case
8:sum=212;break;
case
9:sum=243;break;
case
10:sum=273;break;
case
11:sum=304;break;
case
12:sum=334;break;
default:printf("data
error");break;
}
sum=sum+day;
/*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("it
is
the
%dth
day.",sum);}
第4个回答  2017-09-09
需要区分吧,闰年和非闰年
相似回答