| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1331 人关注过本帖
标题:[求助]任意输入某年某月某日,算出该日是该年的第几天。
只看楼主 加入收藏
剑风曲
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2006-11-16
收藏
得分:0 

楼上的算法有漏洞.
最后一步如果是润年,天数加一出错了.
假设是闰年,但是给的日期没有超过2.29,那就不需要加一.这步没考虑

2007-01-03 08:47
lujunhuan
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-11-30
收藏
得分:0 

#include "stdio.h"
main ()
{
int year, month, day;
int total;
int leap;
printf ("enter year.month.day\n");
scanf ("%d.%d.%d.", &year, &month, &day);
switch (month)
{
case 1: total=0+day; break;
case 2: total=31+day; break;
case 3: total=59+day; break;
case 4: total=90+day; break;
case 5: total=120+day; break;
case 6: total=151+day; break;
case 7: total=181+day; break;
case 8: total=212+day; break;
case 9: total=243+day; break;
case 10: total=273+day; break;
case 11: total=304+day; break;
case 12: total=334+day; break;
}
leap=year%4==0&&year%100!=0||year%400==0;
if (leap&&month>2)
total++;
printf ("%d", total);

getch ();

2007-01-03 23:19
yupeng
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2006-12-28
收藏
得分:0 

我也写了一个
#include <iostream>
using namespace std;
//判断是否是晕年
int yunian (int year )
{

if (year%4==0 && year%100!=0 || year%400==0)return 1;
else return 0;


}
void jisuan(int year ,int yue ,int day)
{
int str[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i;
str[2]+=+yunian(year);
for (i=1;i<yue ;i++)
day+=str[i];
printf("It is the %d day of %d\n", day, year);


}
main()
{
int a, b, c, day;
printf("year=?\nyue=?\nday=?\n");
scanf("%d%d%d", &a, &b, &c);
jisuan(a, b, c);
system("PAUSE");
}


理解 *高效* 自信
2007-01-04 09:36
zmzsmnh
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-1-3
收藏
得分:0 


#include <stdio.h>
int main ()
{
int i, j, m, n, year, month, day, number=0;
int s[12][31];

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

for(i=1; i<=12; i++)
{
for(j=1; j<=31; j++)
s[i][j]=1;
}

if(year%4==0)
{
if(year%100==0&&year%400!=0)
s[2][29]=s[2][30]=s[2][31]=s[4][31]=s[6][31]=s[9][31]=s[11][31]=0;
else if(year%400==0)
s[2][30]=s[2][31]=s[4][31]=s[6][31]=s[9][31]=s[11][31]=0;
else
s[2][30]=s[2][31]=s[4][31]=s[6][31]=s[9][31]=s[11][31]=0;
}
if(year%4!=0)
s[2][29]=s[2][30]=s[2][31]=s[4][31]=s[6][31]=s[9][31]=s[11][31]=0;

for(m=1; m<month; m++)
{
for(n=1; n<=31; n++)
number += s[m][n];
}
number += day;
printf("%d", number);
}
这是我写的。。。
比较麻烦。。。
但应该更容易看懂吧。。。

2007-01-04 10:18
yigedaizi
Rank: 1
等 级:新手上路
帖 子:123
专家分:0
注 册:2006-11-24
收藏
得分:0 
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);}

layman on C#
2007-03-29 17:16
快速回复:[求助]任意输入某年某月某日,算出该日是该年的第几天。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023734 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved