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

1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
      情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:
#include "stdio.h"
#include
"conio.h"
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);
getch();
}
lunzi   2005-03-20 05:08:20 评论:2   阅读:2567   引用:0
@2007-06-24 18:15:02  游客
源代码:
#include<stdio.h>
void main()
{
int y,m,d,i;
int days,m2;
int day=0;
int num[12];
printf("请输入今天的日期:  ");
scanf("%d%d%d",&y,&m,&d);
if((y%4==0&&y%100!=0)||y%400==0)
{
m2=29;
}
else
{
m2=28;
}
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
{
days=31;
}
if(m==4||m==6||m==9||m==11)
{
days=30;
}
if(m==2)
{
days=m2;
}
num[0]=31;
num[1]=m2;
num[2]=31;
num[3]=30;
num[4]=31;
num[5]=30;
num[6]=31;
num[7]=31;
num[8]=30;
num[9]=31;
num[10]=30;
num[11]=31;
if(d<=days)
{
for(i=0;i<=m-1;i++)
{
day+=num;
}
day+=d;
printf("\n今天是%d年的第%天\n",y,day);
}
else
{
printf("\n输入日期无效!\n");
}
}
@2007-01-14 10:11:21  小家伙
总体而言,这个程序可以完成部分任务。如果输入 2007 2 29 不知道会有什么结果.如果sum有一个值,那么程序就有问题了.因为根本就不存在这一天.是吗?

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

Copyright@2004-2010 powered by YuLog