• 输入 There is one single line contains the day number d, month name M and year number y( 1000 ≤y≤ 3000 ). The month name is the corresponding English name ...
• 题目描述
We now use the Gregorian style of dating in Russia. The leap years are years with number divisible by 4 but not divisible by 100, or divisible by 400.
For example, years 2004, 2180 and 2400 are leap. Years 2004, 2181 and 2300 are not leap.
Your task is to write a program which will compute the day of week corresponding to a given date in the nearest past or in the future using today’s
• 输入
There is one single line contains the day number d, month name M and year number y(1000≤y≤3000). The month name is the corresponding English name starting from the capital letter.

• 输出
Output a single line with the English name of the day of week corresponding to the date, starting from the capital letter. All other letters must be in lower case.

• 样例输入
9 October 2001
14 October 2001
• 样例输出
Tuesday
Sunday
• 代码
//
//  main.c
//  判断星期
//
//  Created by fanaticheng on 2018/1/14.
//

#include <stdio.h>
#include <string.h>

#define LEAPYEAR(x) x % 100 != 0 && x % 4 == 0 || x % 400 == 0 ? 1 : 0
int dayOfMonth[13][2] = {
0,0,
31,31,
28,29,
31,31,
30,30,
31,31,
30,30,
31,31,
31,31,
30,30,
31,31,
30,30,
31,31
};
struct Date{
int day;
int month;
int year;
int weekday;
};
void NextDay(struct Date * date){
date->day ++;
if(date->day > dayOfMonth[date->month][LEAPYEAR(date->year)]){
date->day = 1;
date->month ++;
if(date->month > 12){
date->month = 1;
date->year ++;
}
}
}
char Month[12][20] = {
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
};
char Weekday[7][20] = {
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
};

int main(int argc, const char * argv[]) {
int inc1 = 0;
int inc2 = 0;
int day;
char month[20];
struct Date date1,date2,date3,date4;
date3.year = 0;
date3.month = 1;
date3.day = 1;
date4 = date3;
while(scanf("%d",&date2.day) != EOF){
scanf("%s",month);
scanf("%d",&date2.year);
int i = 0;
while(i != 12){
if(strcmp(month, Month[i]) == 0){
date2.month = i + 1;
break;
}
else i++;
}
if(i == 12){
printf("ERROR MONTH!\n");
return -1;
}
date1.year = 2001;
date1.month = 10;
date1.day = 9;
date1.weekday = 2;
while(!(date1.year == date3.year && date1.month == date3.month && date1.day == date3.day)){
NextDay(& date3);
inc1 ++;
}
while(!(date2.year == date4.year && date2.month == date4.month && date2.day == date4.day)){
NextDay(& date4);
inc2 ++;
}
if(inc1 >= inc2) day = inc1 - inc2;
else day = inc2 - inc1;
date2.weekday = ((date1.weekday + day % 7) % 7) - 1;
if(date2.weekday == -1) printf("Sunday\n");
else printf("%s\n",Weekday[date2.weekday]);
}
return 0;
}

展开全文
• //n年份 月份 日期 星期 int day=1; int temp;//套用星期几的公式 总数 int i=1; int a; scanf("%d%d%d",&year,&month,&das); if(month>12||day>31) { printf(“瞎几把输入啥呢”); return 0; } ...

在我们刷oj准备蓝桥杯时，代码在下面
我们遇见这样一个题目：输入一个日期 输出这个月的日历
如图所示：

我这个代码也是想了很久才写出来 被判断日期的事情逼疯了
相信很多人写这个代码遇见的问题主要就是如何判断每个月的第一天是星期几,题者我也找了很多公式 但是都觉得太过于麻烦，比如给定一个指定的日期，从那里循环计算得来，有一个公式是直接可以得出当前日期的，但是并不是首月，不过可以逆推回去，

week=((year-1)+((year-1)/4)-((year-1)/100)+((year-1)/400)+day-7);
//相信大家很迷糊为什么-7，其实我也不能很好解释  有意向的同学可以去看一下
//蔡勒公式，我也是-1然后发现bug  有些时候并不能直接表示，改来改去随便输
//入一个居然成功了 大家可以自己试试，可能有误 抱歉
a=week%7;//算星期几，0为特殊情况 也就是7；
if (a==0)
{
a=a+7;//防止为0
}

#include<stdio.h>
int main()
{
int year,month,das,week;//n年份 月份 日期 星期
int day=1;
int temp;//套用星期几的公式 总数
int i=1;
int a;
scanf("%d%d%d",&year,&month,&das);
if(month>12||day>31)
{
printf("瞎几把输入啥呢");
return 0;
}
for (i = 1; i < month; i++)
{
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
day+=31;//判断

else if (i==2)
{
if (year% 4 == 0 && year% 100 != 0 || year % 400 == 0)
day+=29;

else
day+=28;

}
else
day+=30;

}

week=((year-1)+((year-1)/4)-((year-1)/100)+((year-1)/400)+day-7);
a=week%7;//算星期几，0为特殊情况 也就是7；
if (a==0)
{
a=a+7;//防止为0
}

int end;//每个月的最后一天
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
end=31;
else if (month == 2)
{
if (year% 4 == 0 && year% 100 != 0 || year % 400 == 0)
end=29;
else
end=28;
}
else
end=30;
//printf("%d",day);
printf(" %d年%d月%d日是这一年的第%d天\n", year, month,das,day+das-1);//输出日历日历标题
printf(" 一 二 三 四 五 六 七\n");
for(int m=1;m<a;m++)
{
printf("   ");//a是星期几 空格堆过去;
}
for(i=1;i<=end;i++)
{
printf("%3d",i);
if((i+a-1)%7==0)//换行
{
printf("\n");
}
}

return 0;
}

代码就是这样了 谢谢各位 有不懂可以私信评论 谢谢大家

展开全文
• 方法一： int const table_week[12]={0,3,3,6,1,4,6,2,5,0,3,5}; //月修正数据表 ...*输入日期，得到星期几 *输入：year: 年 * month: 月 * day: 日 *返回：星期几 *0 1 2 3 4 5 6 *七 一 二 三 ...
方法一：
int const table_week[12]={0,3,3,6,1,4,6,2,5,0,3,5}; //月修正数据表
/*
*输入日期，得到星期几
*输入：year:  年
*      month: 月
*      day:   日
*返回：星期几
*0      1      2      3     4       5     6
*七     一    二     三     四     五     六
*/
int get_Week(int year,int month,int day)
{
int temp2;
int yearH,yearL;

yearH = year/100;
yearL = year%100;
if(yearH > 19)
{
yearL += 100;
}
temp2 = yearL+yearL/4;
temp2 = temp2%7;
temp2 = temp2+day+table_week[month-1];

if(yearL%4 == 0 && month < 3)
{
temp2--;
}
return temp2%7;

}
方法二：
/*
*输入日期，得到星期几
*输入：y:年
*      m:月
*      d:日
*返回：星期几
*0      1      2      3     4       5     6
*一    二     三     四     五     六     七
*/
int get_Week(int y,int m,int d)
{
int week = 0;
if(m==1 || m == 2)
{
m += 12;
y--;
}
week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
return week;
}

展开全文
• 分析首先要判断是否为闰年，二月也是一个特列需要单独拿出，排列月份发现，除去八月，其他月份遵循... /* 定义需要计算的日期 */ int year = 2008; int month = 8; int day = 8; int d,m; if((year%4==0&&year%100

## 分析

首先要判断是否为闰年，二月也是一个特列需要单独拿出，排列月份发现，除去八月，其他月份遵循一定规律。

#include <stdio.h>
int main()
{
/* 定义需要计算的日期 */
int year = 2008;
int month = 8;
int day = 8;
int d,m;

if((year%4==0&&year%100!=0)||year%400==0)
{
m=29;
}
else{
m=28;
}
switch(month){
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 9:
case 10:
case 11:
case 12:
d=(month+1)/2*31+((month+1)/2-2)*30+m;
break;
case 8:
d=(month/2+1)*31+(month/2-2)*30+m;//5*31+2*30+29
break;
default:
puts("日期有误！");
break;
}
if(month==2){
d=d-(m-day);
}
else if(month%2!=0||month==8){
d=d+day-31;
}
else{
d=d+day-30;
}
printf("%d年%d月%d日是该年的第%d天",year,month,day,d);
return 0;
}
展开全文
• C语言 输入今天的日期，显示明天的日期 //对输入的月份与天数是否正确进行判断 //对输入的年份是否是闰年进行判断 //对输入日期是否正好是月末或年末进行判断 #include<stdio.h> typedef struct date{ int...
• //一下代码是我从一本书中看到的，大家可以参考#include #include //别忘了 ，写这个int main(int argc, const char * argv[]){int ...printf("输入数字 0 获取帮助！\n");printf("请输入命令符:\n");while (1){s...
• C语言中，输入日期查星期的程序#include void main(){int y,m,d,z,r,temp;start1:printf("请输入查询年(1901年-2200年)：");scanf("%d",&y);if(y<=1900||y>=2200){printf("你输入的年份不在指定范围内，请...
• C语言 计算日期间隔 题目内容： 用结构体实现计算日期的差值： （1）编写一函数，计算两个日期之间的时间差，并将其值返回。日期以年、月、日表示。“时间差”以天数表示。注意考虑日期之间的闰年。函数的输入参数...
• 该文档是C语言根据日期求星期，分段计算方式今天是2007年10月17日，星期六. 现在告诉你一个日期，你能回答今天是星期几吗？ 输入描述： 输入数据有多组，每组占一行，输入三个整数year(0), month(0), day(0). 输出...
• C语言输入日期，计算该日期是该年的第几天。 #include <stdio.h> //键盘输入一个日期，计算该日期是该年的第几天。 //判断是不是闰年 int year(int year) { if ((year % 4 == 0) && (year % 100 !=...
• 通过用户输入日期基准数据计算出用户想要查询的日期是星期几，并可以选择输出这一年的完整日历。望笑纳。
• 问题描述：输入一个日期，计算这一天是周几，假设年份和月份的天数是一定的，分别是360天和30天，并且已知一个日期。 首先，要解决一个问题，你要知道真正需要求的是什么。 对于这个题，我们要解决的是已知日期和...
•   <p></p> 如图， 输入2021， 1， 11. 代表2021的第十一个周一是3月15号</p>
• int year_sum(int a , int b , int c) //计算到输入日期前的总共天数 { int i = 0; //计算到这个年份之前有的闰年 int j = 0; //计算到这个年份之前有的平年 int sum = 0; int d[] = {31 , 28 , 31 , 30 , 31...
• ①判断输入的年份、月份、天数要合法； ②其中天数不能超过该月的最大天数； ③区分平年和闰年。 代码如下：int isLeapYear(int year) { if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) ...
• C语言输入起始日期与截至日期，计算相距天数。 //输入两个日期，计算它们相隔的天数。 //判断是不是闰年 int year(int year) { if ((year % 4==0) && (year % 100!=0)) return 1; else return 0; } /...

...

c语言 订阅