C语言编程题:给出元旦是星期几,求某个日期是该年的星期几?

如题所述

第1个回答  2013-04-09
发现了几处错误,只是在原答案基础上纠正了下
#include <stdio.h>
//判断是否为闰年
int IsLeepYear(int year)
{
if( ((0 == year%4)&&(0 != year%100)) ||(0 == year %400) )
return 1;
else return 0;
}
//计算为星期几的函数
void CountWeekday(int firstWeekDay, int year, int month, int day)
{
int monthDays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31,30, 31};//此处修改
int sum = 0, i, res;
if(IsLeepYear(year))
monthDays[2] = 29;

for(i = 0; i < month-1; i++)
sum += monthDays[i];

sum += day;
--sum;
res = sum % 7 + firstWeekDay;
res = res%7; //此处为修改

printf("该日期为星期:%d\n", res);
}
int main()
{
int firstWeekDay, year, month, day;
printf("请输入元旦星期几, 年份, 月份, 日,以空格间隔输入:\n");
scanf("%d %d %d %d", &firstWeekDay, &year, &month, &day);
CountWeekday(firstWeekDay, year, month, day);
return 0;
}
第2个回答  推荐于2016-07-19
代码如下,请查看:

#include <stdio.h>
//判断是否为闰年
int IsLeepYear(int year)
{
if( ((0 == year%4)&&(0 != year%100)) ||(0 == year %400) )
return 1;
else return 0;
}

//计算为星期几的函数
void CountWeekday(int firstWeekDay, int year, int month, int day)
{
int monthDays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 31};
int sum = 0, i, res;
if(IsLeepYear(year))
monthDays[2] = 29;

for(i = 0; i < month-1; i++)
sum += monthDays[i];

sum += day;
--sum;

res = sum % 7 + firstWeekDay;

printf("该日期为星期:%d\n", res);
}

int main()
{
int firstWeekDay, year, month, day;

printf("请输入元旦星期几, 年份, 月份, 日,以空格间隔输入:\n");
scanf("%d %d %d %d", &firstWeekDay, &year, &month, &day);
CountWeekday(firstWeekDay, year, month, day);

return 0;
}追问

为什么要--sum?

追答

因为计算的时候,本身的那天也算一天,如果你不减掉,那就多算了一天,能理解么?你试下代几个小点的数字试算一下,就知道啦~~~

本回答被提问者和网友采纳
相似回答