已知公元1年1月1日是星期一,计算输入的年月日是星期几?(用C语言编写)

思路:计算出输入的年月日和公元1年1月1日距离多少天。
计算公元1年到输入日期的上一年年底有多少天。
再计算输入的年的1月到上月月底有多少天。
再加上输入日期的天数。
其中闰年满足:
(year%4==0)&&(year%100!=0)||(year%400==0)

第1个回答  2007-09-15
我只是刚学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();
}
第2个回答  2023-05-08
我没有多高文凭,但我知里在公元1月1日是儒略历和奥古斯都历中都星期日,是公历编制的历法中应该是星期五。
第3个回答  2021-09-10
#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;

}

}
第4个回答  2007-09-15
#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。本回答被提问者采纳

已知公元1年1月1日是星期一,计算输入的年月日是星期几?(用C语言...
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);da...

c语言,已知1年1月1日是星期一,计算输入的年月日是星期几
sum=sum+1;if(sum%7==0)printf("这一天是星期天\\n");else printf("这一天是星期%d\\n",sum%7);}

求一篇c语言的万年历程序,要求输入年份和月份就会自动打印出当月的日...
for(i=0;i<nouth-1)day+=m[i];return day%7;} 这个是计算year年mouth月的第一天是周几的 这两个子函数返回值可能差一天,自己调整一下吧 打印子函数 void pr(int mm,int x){ int i;printf("%d\\n日 一 二 三 四 五 六\\n",mm);for(i=0;i<k;i++)printf(" "); ...

c语言编写万年历时计算每月第一天是星期几的公式是什么
以公元元年为参考,公元元年1月1日为星期一 参考代码:include <stdio.h>void CaculateWeekDay(int y,int m, int d){ if(m<=2) { m+=12; y--; } int iWeek=(d+2*m+3*(m+1)\/5+y+y\/4-y\/100+y\/400)%7; switch(iWeek) { case 0: printf("星期...

想用c语言写一个关于日历的小程序,但是不知道如何计算星期几的问题...
公历一年一月一日是星期一,算出这一天和公历一年一月一日之间的天数就可以了 还有一个算法就是,400年一个循环,也就是401年一月一日也是周一这样可以少算很多天 再就是更简单的算法就是,一年是365天,364天正好是7的倍数,也就是一年多出一天来,这样再把闰年的那一天加上就可以了,这样可以算...

用VC++设计一个由日期判断对应是星期几的程序
2008,1,1星期二输入0退出,其他继续:l2008,8,8星期五输入0退出,其他继续:0请按任意键继续. . .编者注:用来算现在真实日期的星期是没有问题的。原理是根据已知公元1年1月1日的星期数来推算。如果在你的题目中约定了某天是星期几,你要注意那天的星期是否跟真实的星期相同,如果不同,需要考虑相差几天!如果大家...

C语言 给日期算星期几
\/\/ 最后面少了逗号} \/\/ 这里结尾的分号去掉 else {if(d<0) {b=1; printf("day is error.\\n");\/\/ 最后面少了逗号} \/\/ 这里结尾的分号去掉 elseswitch(m) { case 1: if(d>32) {b=1; printf("day is error.\\n");}; break; \/\/ 问题同上,少逗号 ca...

C语言年历显示程序设计
用C实现如下功能:1、输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间;2、输入年月,输出该月的日历。3、输入年月日,输出距今天还有多少天,星期几,... 用C实现如下功能:1、输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间;2、输入年月,输出该月的...

C语言 给日期算星期几
\/\/ 最后面少了逗号} \/\/ 这里结尾的分号去掉 else {if(d<0) {b=1; printf("day is error.\\n");\/\/ 最后面少了逗号} \/\/ 这里结尾的分号去掉 elseswitch(m) { case 1: if(d>32) {b=1; printf("day is error.\\n");}; break; \/\/ 问题同上,少逗号 ca...

C语言编程序实现如下功能:输入任意一个日期的年、月、日的值,求出是...
if (w == 0) printf ("星期日"); else printf ("星期%d", w); return 0; } 方法二: #include void main () { int y,m,d,c,s,w; printf("请输入8位年月日,以空格隔开:"); scanf("%d%d%d",&y,&m,&d); if (m==1) c=d; else if (m==2) c=31 d; else if (m==3)...

相似回答