Sicily 3912 计算星期几 (难得水题)

来源:互联网 发布:中国网络女歌手排行榜 编辑:程序博客网 时间:2024/04/30 14:12

日期的各种水,用之前编过的一个程序改改交了就过。

代码如下:

#include <stdio.h>#include <stdlib.h>int monthLimit[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};char weekDay[7][10] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};struct Date{int year;int month;int day;};int isLeap(int year){if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){return 1;}return 0;}int isValid(int year, int month, int day){if(month >= 1 && month <= 12 && day >= 1 && day <= monthLimit[month - 1] + (int)(month == 2) * isLeap(year)){return 1;}return 0;}int whatDay(int year, int month, int day){    int i;int days = 0;int result;for(i = 2000; i < year; i++){days += 365;days += isLeap(i);}for(i = 1; i < month; i++){days += monthLimit[i - 1];if(i == 2){days += isLeap(year);}}days += day - 1;result = (6 + days ) % 7;if(result == 0){return 7;}else{return result;}}int main(){struct Date input;int days;int result;int te;scanf("%d", &te);while(te--){//printf("Please input a date after 2000 01 01 in form of yyyy mm dd:\n");//scanf("%d %d %d", &input.year, &input.month, &input.day);scanf("%d %d", &input.month, &input.day);input.year = 2011;if(isValid(input.year, input.month, input.day) == 1){if(input.year < 2000){printf("This date is too early!\n");}else{result = whatDay(input.year, input.month, input.day);//printf("This day is %s.\n", weekDay[result - 1]);printf("%s\n", weekDay[result - 1]);}}else{printf("This date is invalid!\n");}//system("pause");}    return 0;}

 

原创粉丝点击