| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1073 人关注过本帖
标题:这一天是星期几(gcc) 急用,请帮一下,谢谢!
只看楼主 加入收藏
心剑菩提
Rank: 1
等 级:新手上路
帖 子:249
专家分:0
注 册:2007-5-17
收藏
 问题点数:0 回复次数:4 
这一天是星期几(gcc) 急用,请帮一下,谢谢!


Time Limit:1000MS Memory Limit:65536K
Total Submit:0 Accepted:0

Description

在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。 给定从公元2000年1月1日开始逝去的天数,你的任务是给出这一天是哪年哪月哪日星期几。

Input

输入包含若干行,每行包含一个正整数,表示从2000年1月1日开始逝去的天数。输入最后一行是−1, 不必处理。可以假设结果的年份不会超过9999。


Output

对每个测试样例,输出一行,该行包含对应的日期和星期几。格式为“YYYY-MM-DD DayOfWeek”, 其中 “DayOfWeek” 必须是下面中的一个: "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" 或 "Saturday“。

Sample Input


1730
1740
1750
1751
-1

Sample Output


2004-09-26 Sunday
2004-10-06 Wednesday
2004-10-16 Saturday
2004-10-17 Sunday

Source

POJ

搜索更多相关主题的帖子: gcc 
2007-09-27 20:22
静源
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-8-25
收藏
得分:0 
回复:(心剑菩提)这一天是星期几(gcc) 急用,请帮...
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;breake;
case 2:sum=31;breake;
case 3:sum=59;breake;
case 4:sum=90;breake;
case 5:sum=120;breake;
case 6:sum=151;breake;
case 7:sum=181;breake;
case 8:sum=212;breake;
case 9:sum=243;breake;
case 10:sum=273;breake;
case 11:sum=304;breake;
case 12:sum=334;breake;
default :printf("data error");breake;
}
sum=sum+day;
if(year%400==0||(year%100!==0))
leap=1;
else
leap=0;
if(leap==1&&month>2)
sum++;
printf("It is the %dth day.",sum);}


这是网上找的,或许和你所需要的并不完全一致,但是有很多类似之处,或许你可以有所借鉴.
2007-09-27 22:46
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
以下是引用静源在2007-9-27 22:46:00的发言:

switch(month)
{
case 1:sum=0;breake;
case 2:sum=31;breake;
case 3:sum=59;breake;
case 4:sum=90;breake;
case 5:sum=120;breake;
case 6:sum=151;breake;
case 7:sum=181;breake;
case 8:sum=212;breake;
case 9:sum=243;breake;
case 10:sum=273;breake;
case 11:sum=304;breake;
case 12:sum=334;breake;
default :printf("data error");breake;
}

汗一个~~~~~~~~~


偶学编程,也许本身就是一个错。。。
2007-09-27 22:48
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
好象A这道有点难,据说测试数据比较BT.
貌似我以前做过,但不知道还有没有源码了.

倚天照海花无数,流水高山心自知。
2007-09-27 23:43
windlzf
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-8-7
收藏
得分:0 
回复:(心剑菩提)这一天是星期几(gcc) 急用,请帮...

/*我不知道dev c++下怎么来测试计算时间(dev c++上做的第一个程序)*/

#include <stdio.h>
#include <stdlib.h>

int firstDayEachMonth[]={0,31,59,90,120,151,181,212,243,273,304,334};
int daysEachMonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
char *weekDay[]={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" ,"Saturday"};

/*判断是否闰年*/
int isLeapYear(int year)
{
return (int)(year%400==0||(year%4==0&&year%100!=0));
}

/*获得该年的天数*/
int getDaysThisYear(int year)
{
return (int)(365+isLeapYear(year));
}

/*获得该年该月的天数*/
int getDaysThisMonth(int year,int month)
{
return (int)(daysEachMonth[month-1]+isLeapYear(year)*(month==2));
}

int main(int argc, char *argv[])
{
int day,month,year,sum,leap,n,num,daysThisYear,daysThisMonth,indexInWeek;
printf("\nplease input days(0~9999) from 2000-01-01:");
scanf("%d",&num);

/*获得年份*/
for(day=num+1,year=2000;;year++)
{
daysThisYear=getDaysThisYear(year);
if(day<=daysThisYear) break;
day-=daysThisYear;
}

/*获得星期几*/
indexInWeek=((year-1)+(year-1)/4-(year-1)/100+(year-1)/400+day)%7;

/*获得月份和日*/
for(month=1;month<=12;month++)
{
daysThisMonth=getDaysThisMonth(year,month);
if(day<=daysThisMonth) break;
day-=daysThisMonth;
}

printf("%4d-%02d-%02d %s\n",year,month,day,weekDay[indexInWeek]);

system("PAUSE");
return 0;
}

2007-09-28 10:43
快速回复:这一天是星期几(gcc) 急用,请帮一下,谢谢!
数据加载中...
 
   



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

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