已知公元1年1月1日是星期一,计算输入的年月日是星期几?(用C语言编写)
思路:计算出输入的年月日和公元1年1月1日距离多少天。计算公元1年到输入日期的上一年年底有多少天。再计算输入的年的1月到上月月底有多少天。再加上输入日期的天数。其中闰年满...
思路:计算出输入的年月日和公元1年1月1日距离多少天。
计算公元1年到输入日期的上一年年底有多少天。
再计算输入的年的1月到上月月底有多少天。
再加上输入日期的天数。
其中闰年满足:
(year%4==0)&&(year%100!=0)||(year%400==0) 展开
计算公元1年到输入日期的上一年年底有多少天。
再计算输入的年的1月到上月月底有多少天。
再加上输入日期的天数。
其中闰年满足:
(year%4==0)&&(year%100!=0)||(year%400==0) 展开
4个回答
展开全部
我只是刚学C语言,下面的程序仅供参考,上面的结果有问题。
int n=0; /*定义外部变量n*/
int year(int x)
{int i,y=0;
for(i=1;i<=x;i++)
{if(i%4==0&&i%100!=0||i%400==0)
{y++;
n=1;
}
else n=0;
}
return(y); /*y是计算出其中有多少个闰年,n是算出最后一年是不是闰年*/
}
int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int sum_day(int y,int y1,int m,int d)
{int i,day=0;
for(i=1;i<m;i++)
day+=day_tab[i];
day=day+d-1+(y1-1)*2+y; /*减1是减去了1月1日那一天,乘2是因为365除7余2*/
if(n==1&&m<3)
day--;
return(day);
}
#include<stdio.h>
main()
{int year1,month1,day1,y,day,s;
printf("year/month/day:");
scanf("%d/%d/%d",&year1,&month1,&day1);
y=year(year1);
day=sum_day(y,year1,month1,day1);
s=day%7+1;
printf("%d/%d/%d=%d\n",year1,month1,day1,s);
getchar(); /*两个getchar是为了运行后可看到结果*/
getchar();
}
int n=0; /*定义外部变量n*/
int year(int x)
{int i,y=0;
for(i=1;i<=x;i++)
{if(i%4==0&&i%100!=0||i%400==0)
{y++;
n=1;
}
else n=0;
}
return(y); /*y是计算出其中有多少个闰年,n是算出最后一年是不是闰年*/
}
int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int sum_day(int y,int y1,int m,int d)
{int i,day=0;
for(i=1;i<m;i++)
day+=day_tab[i];
day=day+d-1+(y1-1)*2+y; /*减1是减去了1月1日那一天,乘2是因为365除7余2*/
if(n==1&&m<3)
day--;
return(day);
}
#include<stdio.h>
main()
{int year1,month1,day1,y,day,s;
printf("year/month/day:");
scanf("%d/%d/%d",&year1,&month1,&day1);
y=year(year1);
day=sum_day(y,year1,month1,day1);
s=day%7+1;
printf("%d/%d/%d=%d\n",year1,month1,day1,s);
getchar(); /*两个getchar是为了运行后可看到结果*/
getchar();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我没有多高文凭,但我知里在公元1月1日是儒略历和奥古斯都历中都星期日,是公历编制的历法中应该是星期五。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
int main()
{
int i = 0,year, month, day;
int j, sum1=1, sum2=1,sum = 0;
int flag = 1; int flag1 = 1;
printf("please input year,month,day:");
do
{
scanf_s("%d,%d,%d", &year, &month, &day);
} while (month < 1 || month>12);
int days[][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 (j = 1; j < year; j++)
{
if (j % 4 == 0 && j % 100 != 0 || j % 400 == 0)
{
sum1 = flag * 366;
flag++;
}
else
{
sum2 = 365 * flag1;
flag1++;
}
}
if (month == 1)
;
//printf("该日期是今年的%d天\n", day);
else if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
for (i = 0; i < month - 1; i++)
{
sum = sum + days[1][i];
}
day = sum + day;
//printf("%d\n", day);
}
else
{
for (i = 0; i < month - 1; i++)
{
sum = sum + days[0][i];
}
day = sum + day;
//printf("%d\n", day);
}
sum = sum1 + sum2 + day;
sum = sum % 7;
switch (sum)
{
case 0: printf("这一天是星期天\n"); break;
case 1:printf("这一天是星期一\n"); break;
case 2:printf("这一天是星期二\n"); break;
case 3:printf("这一天是星期三\n"); break;
case 4:printf("这一天是星期四\n"); break;
case 5:printf("这一天是星期五\n"); break;
case 6:printf("这一天是星期六\n"); break;
default:printf("error occurred\n"); break;
}
}
int main()
{
int i = 0,year, month, day;
int j, sum1=1, sum2=1,sum = 0;
int flag = 1; int flag1 = 1;
printf("please input year,month,day:");
do
{
scanf_s("%d,%d,%d", &year, &month, &day);
} while (month < 1 || month>12);
int days[][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 (j = 1; j < year; j++)
{
if (j % 4 == 0 && j % 100 != 0 || j % 400 == 0)
{
sum1 = flag * 366;
flag++;
}
else
{
sum2 = 365 * flag1;
flag1++;
}
}
if (month == 1)
;
//printf("该日期是今年的%d天\n", day);
else if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
for (i = 0; i < month - 1; i++)
{
sum = sum + days[1][i];
}
day = sum + day;
//printf("%d\n", day);
}
else
{
for (i = 0; i < month - 1; i++)
{
sum = sum + days[0][i];
}
day = sum + day;
//printf("%d\n", day);
}
sum = sum1 + sum2 + day;
sum = sum % 7;
switch (sum)
{
case 0: printf("这一天是星期天\n"); break;
case 1:printf("这一天是星期一\n"); break;
case 2:printf("这一天是星期二\n"); break;
case 3:printf("这一天是星期三\n"); break;
case 4:printf("这一天是星期四\n"); break;
case 5:printf("这一天是星期五\n"); break;
case 6:printf("这一天是星期六\n"); break;
default:printf("error occurred\n"); break;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
main()
{
long year,month,day;
long totalday;
int week;
int monthday[12]={0,31,59,90,120,151,181,212,243,273,304,334};
int monthdayLeap[12]={0,31,60,91,121,152,182,213,244,274,305,335};
char * weekname[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
printf("Please input Year Month Day:");
scanf("%ld %ld %ld",&year,&month,&day);
totalday=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400;
if((year%4==0)&&(year%100!=0)||(year%400==0))
totalday+=monthdayLeap[month-1];
else
totalday+=monthday[month-1];
totalday+=day;
week=totalday%7;
printf("%ld,%s\n",totalday,weekname[week]);
}
这里totalday的最后结果公元1年1月1日等于1。
main()
{
long year,month,day;
long totalday;
int week;
int monthday[12]={0,31,59,90,120,151,181,212,243,273,304,334};
int monthdayLeap[12]={0,31,60,91,121,152,182,213,244,274,305,335};
char * weekname[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
printf("Please input Year Month Day:");
scanf("%ld %ld %ld",&year,&month,&day);
totalday=(year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400;
if((year%4==0)&&(year%100!=0)||(year%400==0))
totalday+=monthdayLeap[month-1];
else
totalday+=monthday[month-1];
totalday+=day;
week=totalday%7;
printf("%ld,%s\n",totalday,weekname[week]);
}
这里totalday的最后结果公元1年1月1日等于1。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询