编写一个程序,输入年月日,就能回答那天是星期几。

已知公元1 年1 月1 日是星期一
Sample Input
1 1 1
2 1 1
2006 7 10
Sample Output
Monday
Tuesday
Monday
还要 区分闰年!

【数据结构】:
建议用结构体链表,不过全局变量也行,反正不大,没记忆功能无所谓
(1)必须要有
年份变量、月份变量、日期变量、星期变量、闰年标识
(2)必须要有
年份、月份、闰年标志以及日期临时变量、星期临时变量
【算法】:
(1)判断年份输入是否正确y>0&&y<=2011?对的继续,错的重输
(2)判断月份输入是否正确m>0&&m<13?对的继续,空的直接转到输出一年日历,错的重输
(3)判断日起输入是否正确d>0&&d<32?错的重输,对的继续判断
if(m!=2){
if((m==4||m==6||m==9||m==11))&&d>30)printf(错误重输)
}
else{
if(y不是闰年&&d>28)
printf(错误重输)
else
i=1;//这个i应该是闰年标志flag把
}
(4)计算星期几
(5)循环输出
while(需要输出整年日历&&没有输出完毕){
输出当月日历;
月份++;
最后一天是30?31?28?29?确定;
第一天是星期几确定(以及前面空几格);

【主要函数】:
(1)年月日判断
(2)星期判断
(3)日历循环输出
分开来是因为这样干净看得清楚,全放在一块儿,到时候有很多重复的程序段,调试起来你会崩溃的……
注意:
(1)注意题目要求,输入年份就要输出一年份的日历,就是说你在判断月份的时候是不是还要加个空条件判断?用int
的话最好先全初始化为0,不然不好判断。
(2)后边那个while(1);一点用都没有,这程序是你写的还是程序改错题要你改的?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-23
#include <stdio.h>

#define MONTH_COUNT 13
#define YEAR_DAYS 365

typedef struct _DAY
{
int year;
int month;
int day;
}DAY;

int month[MONTH_COUNT] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int calDays(DAY normDay, DAY Day)
{
int totalDays = 0;

for(int i=normDay.year; i<Day.year; i++)
{
totalDays += YEAR_DAYS;

if(i % 4 ==0 && i % 100 != 0 || i % 400 == 0)
totalDays++;
}

for(i=normDay.month; i<Day.month; i++)
totalDays += month[i];

for(i=normDay.day; i<Day.day; i++)
totalDays++;

return totalDays;
}

void main()
{
DAY inputDate;
DAY normDate = {1, 1, 1};

int duringDays = 0;

static char* wday[]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday", "Sunday"};

printf("Please input the date year/month/day :");
scanf("%d %d %d", &(inputDate.year), &(inputDate.month), &(inputDate.day));

duringDays = calDays(normDate, inputDate);

duringDays %= 7;

printf("%s\n", wday[duringDays])
}

哈哈...本回答被提问者采纳
第2个回答  2019-12-26
#include
#define
MONTH_COUNT
13
#define
YEAR_DAYS
365
typedef
struct
_DAY
{
int
year;
int
month;
int
day;
}DAY;
int
month[MONTH_COUNT]
=
{31,
28,
31,
30,
31,
30,
31,
31,
30,
31,
30,
31};
int
calDays(DAY
normDay,
DAY
Day)
{
int
totalDays
=
0;
for(int
i=normDay.year;
i
评论
0
0
加载更多
相似回答