69,368
社区成员
发帖
与我相关
我的任务
分享
/*
元年1月1日是星期天?还是星期一?如果是星期一,就对了
计算输入的日期是星期几*/
#include "stdio.h"
#include "conio.h"
typedef struct date{
int year;
int month;
int day;
}DATE;
int pear(int year){ /*判断闰年*/
if((year%400==0&&year%100==0)||(year%4==0&&year%100!=0))
return 1;
else
return 0;
}
long days(DATE date1,DATE date2){/*计算从1-1-1到输入日期的天数*/
int i;
long dayday,dayt=0,dayt1=0,dayt2=0;
int d[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
for(i=date1.year;i<date2.year;i++){
if(pear(i))
dayt+=366;
else dayt+=365;
}
for(i=1;i<date1.month;++i)
dayt1+=d[pear(date1.year)][i-1];
dayt1+=date1.day;
for(i=1;i<date2.month;++i)
dayt2+=d[pear(date2.year)][i-1];
dayt2+=date2.day;
dayday=dayt+dayt2-dayt1;
return dayday;
}
main()
{ DATE date1={1,1,1},date2;
int p;
char *w;
printf("Please input the date you want to know:");
scanf("%d-%d-%d",&date2.year,&date2.month,&date2.day);
p=(days(date1,date2)+1)%7;
switch(p){ /*把数字转换成星期*/
case 0:
w="Sunday";
break;
case 1:
w="Monday";
break;
case 2:
w="Tuesday";
break;
case 3:
w="Wednesday";
break;
case 4:
w="Thursday";
break;
case 5:
w="Friday";
break;
case 6:
w="Saturday";
break;
}
printf("There are %ld days from 1-1-1 to today.\n",days(date1,date2));
printf("%d-%d-%d is %s.",date2.year,date2.month,date2.day,w);
getch();
}
{0, 31,28,31,30,31,30,31,31,30,31,30,31},
{0, 31,29,31,30,31,30,31,31,30,31,30,31}
};/*这个我没改*/
dayt1+=d[pear(date1.year)][i-1];/*但是我把这里加了1*/
/*
元年1月1日是星期天
计算输入的日期是星期几*/
#include "stdio.h"
#include "conio.h"
typedef struct date{
int year;
int month;
int day;
}DATE;
int pear(int year){ /*判断闰年*/
if((year%400==0&&year%100==0)||(year%4==0&&year%100!=0))
return 1;
else
return 0;
}
long days(DATE date1,DATE date2){/*计算从1-1-1到输入日期的天数*/
int i;
long dayday,dayt=0,dayt1=0,dayt2=0;
int d[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
for(i=date1.year;i<date2.year;i++){
if(pear(i))
dayt+=366;
else dayt+=365;
}
for(i=1;i<date1.month;++i)
dayt1+=d[pear(date1.year)][i-1];
dayt1+=date1.day;
for(i=1;i<date2.month;++i)
dayt2+=d[pear(date2.year)][i-1];
dayt2+=date2.day;
dayday=dayt+dayt2-dayt1;
return dayday;
}
main()
{ DATE date1={1,1,1},date2;
int p;
char *w;
printf("Please input the date you want to know:");
scanf("%d-%d-%d",&date2.year,&date2.month,&date2.day);
p=days(date1,date2)%7;
switch(p){ /*把数字转换成星期*/
case 0:
w="Sunday";
break;
case 1:
w="Monday";
break;
case 2:
w="Tuesday";
break;
case 3:
w="Wednesday";
break;
case 4:
w="Thursday";
break;
case 5:
w="Friday";
break;
case 6:
w="Saturday";
break;
}
printf("There are %ld days from 1-1-1 to today.\n",days(date1,date2));
printf("%d-%d-%d is %s.",date2.year,date2.month,date2.day,w);
getch();
}
/* 元年1月1日是星期天
计算输入的日期是星期几*/
#include "stdio.h"
#include "conio.h"
typedef struct date{
int year;
int month;
int day;
} DATE;
int pear(int year){
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
return 1;
else
return 0;
}
long days(DATE date1, DATE date2) {
int i;
long dayday, dayt = 0, dayt1 = 0, dayt2 = 0;
int d[2][13]={
{0, 31,28,31,30,31,30,31,31,30,31,30,31},
{0, 31,29,31,30,31,30,31,31,30,31,30,31}
};
for(i = date1.year; i < date2.year; i++){
if(pear(i))
dayt += 366;
else
dayt += 365;
}
for(i = 1; i < date1.month; ++i)
dayt1 += d[pear(date1.year)][i];
dayt1 += date1.day;
for(i = 1; i < date2.month; ++i)
dayt2 += d[pear(date2.year)][i];
dayt2 += date2.day;
dayday = dayt + dayt2 - dayt1;
return dayday;
}
void main()
{
DATE date1 = {1, 1, 1}, date2;
int p;
printf("Please input the date you want to know:");
scanf("%d-%d-%d", &date2.year, &date2.month, &date2.day);
p=(int)(days(date1, date2) % 7) + 1;
printf("%d-%d-%d is %d.", date2.year, date2.month, date2.day, p);
getchar();
}
#include <stdio.h>
#include<conio.h>
char *week[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
int main()
{
int Y;
int M;
int D;
int A;
printf("\nEnter year:");
scanf("%d",&Y);
printf("\nEnter month:");
scanf("%d",&M);
printf("\nEnter date(如果是一位数,请以0开头):");
scanf("%d",&D);
//下面的四条语句用来计算输入日期的星期数,是程序的核心部分,缺一不可
A = Y > 0 ? (5 + (Y + 1) + (Y - 1)/4 - (Y - 1)/100 + (Y - 1)/400) % 7
: (5 + Y + Y/4 - Y/100 + Y/400) % 7;
A = M > 2 ? (A + 2*(M + 1) + 3*(M + 1)/5) % 7
: (A + 2*(M + 2) + 3*(M + 2)/5) % 7;
if (((Y%4 == 0 && Y%100 != 0) || Y%400 == 0) && M>2)
{
A = (A + 1) % 7;
}
A = (A + D) % 7;
printf("\nI's a %s.\n\n",week[A]);
getch();
return 0;
}