当前位置:首页 » 编程语言 » 某月一日为星期几c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

某月一日为星期几c语言

发布时间: 2022-08-10 08:31:18

c语言 已知某年一月一日是星期几,按照SUN MON TUS WED THU FRI STA的格式输出该年某个月的月历

以下是我以前写的一个万年历系统的一个模块:输入某一年份,然后显示出全年日历,你可以在其中修改满足你的要求-----------

#include<stdio.h>

voidmain(void)

{

intyear,month,day;

//intmonth=1;

intx;//定义该月的天数

intsum,leap,result;

inta[42]={0};

printf("====>请输入年份:");

scanf("%d",&year);

for(month=1;month<13;month++){

inta[42]={0};

if(month==4||month==6||month==9||month==11)

x=30;

elseif(month==2)

{

if(year%400==0||(year%4==0&&year%100!=0))

x=29;

else

x=28;

}

else

x=31;

day=1;

switch(month)

{

case1:{sum=day;break;}

case2:{sum=31+day;break;}

case3:{sum=59+day;break;}

case4:{sum=90+day;break;}

case5:{sum=120+day;break;}

case6:{sum=151+day;break;}

case7:{sum=181+day;break;}

case8:{sum=212+day;break;}

case9:{sum=243+day;break;}

case10:{sum=273+day;break;}

case11:{sum=304+day;break;}

case12:{sum=334+day;break;}

}

if(year%400==0||(year%4==0&&year%100!=0))

leap=1;

else

leap=0;

if(leap==1&&month>2)//如果是闰年并且月份大于2,总天数应该加一天

sum=sum+1;

result=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+sum)%7;

//写入数组

a[result]=1;//定位该月第一天的位置

for(inti=0;i<x;i++)

a[result+i]=i+1;

//输出结果

printf(" %d%d:",year,month);

printf("SUNMONTUEWENTHUFRISAT ");

printf("========================================= ");

for(i=0;i<6;i++)//格式化输出,一维变二维输出

{

printf(" ");

for(intj=0;j<7;j++)

printf("%4d",a[7*i+j]);

printf(" ");

}

}

}

❷ C语言中如何计算每个月开头为星期几

每年的各月份1日是星期几并不是固定的,所以没有千篇一律的情况。正宗的是元年1月1日是星期一,根据它来算出所有年份的每月1日是星期几。听起来遥远,但用C提供的tm结构体做也不难。如果不这样做那就得先知道一个某年某月某日是星期几的定数,再据此推算;说真的,并不好算——要考虑闰年、大小月等等。我的体会是用tm结构体反而简单,把已知数往里一填(就几个数,好多可以不填),什么都不用考虑了:哪一天是星期几,哪一天是那年的第几天……等等,都直接往出读就是了!

❸ 数组c语言 输入某年某月某日 判断这一天是星期几

#include <stdio.h>
int j_rn(int y)
{
if(y%4==0&&y%100!=0||y%400==0)
return 1;
else
return 0;
}
main()
{
int y,m,d,s=28,n,num;
printf("\n请输入年月日用空格隔开:");
scanf("%d %d %d",&y,&m,&d);
if(j_rn(y))
s=29;
switch(m)
{
case 1:n=d;break;
case 2:n=31+d;break;
case 3:n=31+s+d;break;
case 4:n=31+s+31+d;break;
case 5:n=31+s+31+30+d;break;
case 6:n=31+s+31+30+31+d;break;
case 7:n=31+s+31+30+31+30+d;break;
case 8:n=31+s+31+30+31+30+31+d;break;
case 9:n=31+s+31+30+31+30+31+31+d;break;
case 10:n=31+s+31+30+31+30+31+31+30+d;break;
case 11:n=31+s+31+30+31+30+31+31+30+31+d;break;
case 12:n=31+s+31+30+31+30+31+31+30+31+30+d;
}
num=(y-1)+(y-1)/4-(y-1)/100+(y-1)/400+n;
printf("那天是星期%d\n",num%7);//星期0代表星期天
//getch();
}

❹ C语言 给日期算星期几

补充一个错误,下面回答同理

case3:if(d>32){b=1printf("dayiserror.
")};break;
case4:if(d>31){b=1printf("dayiserror. ")};break;
case5:if(d>32){b=1printf("dayiserror. ")};break;
case6:if(d>31){b=1printf("dayiserror. ")};break;
case7:if(d>32){b=1printf("dayiserror. ")};break;
case8:if(d>32){b=1printf("dayiserror. ")};break;
case9:if(d>31){b=1printf("dayiserror. ")};break;
case10:if(d>32){b=1printf("dayiserror. ")};break;
case11:if(d>31){b=1printf("dayiserror. ")};break;
case12:if(d>32){b=1printf("dayiserror. ")};break;

这一段代码if后面的条件全部大了1,限制值应该是31和30,除非你改成>=

❺ c语言知道日期 算星期几

这个是用于计算是周几的公式
参见下链第一个公式
http://hi..com/greation/item/4e9615dedba8c94fdcf9be51
不过这个代码写的有点问题,应该是取整的
我个人比较喜欢用蔡勒公式或基姆拉尔森公式

❻ 用c语言确定某一年一月一日是星期几

1900年1月1日为星期一:
#include<stdio.h>

inttest(intyear){//闰年返回1

if((year%400==0)||(year%4==0&&year%100!=0))return1;

return0;

}

voidmain(){

intyear,i;

longsum=0;//计算1900到你输进的年的总天数

printf(" Inputyear(year>=1900):");

scanf("%d",&year);

for(i=1900;i<year;i++){

sum+=365;

if(test(year)==1)sum+=1;

}

printf(" %d-1-1:",year);

intfg=sum%7;

switch(fg){

case0:printf("星期一");break;

case1:printf("星期二");break;

case2:printf("星期三");break;

case3:printf("星期四");break;

case4:printf("星期五");break;

case5:printf("星期六");break;

case6:printf("星期日");break;

}

printf(" ");

}
//测试通过,望采纳

❼ c语言 怎么算某年某月某日是星期几啊

week=6;//2000年元旦是星期六
//每年365天,即每年星期数加1;
week
+=
year-2000;
if(year<2000){
for(i=year;i<2000;i--)
{
if((
y%4==0
&&
y%100!=0)
||
y%400==0))
week--;
}
}
else
{
for(i=2000;i<year;i++)
{
if((
y%4==0
&&
y%100!=0)
||
y%400==0)
)
week++;
}
}
for(i=0;i<month;i++)
week
+=
month_day[i];
if(if((
y%4==0
&&
y%100!=0)
||
y%400==0)
month>=2)
week++;
week
+=
day;
week
=
week%7;//0
=星期日
//以上计算,在2000分界处不完整,自己改进,思路如此,如果想省掉,可手算-32768年的星期,然后只算算加法,但要在中间%7一次,防止数据越界。

❽ c语言编写 万年历系统的程序中怎么计算本月一日是星期几

我将获取方法封装成一个名字叫week的函数了,他的三个参数分别是年月日,在里面会打印输出当天是星期几,不懂的地方给我留言
#include
#include
void
week(int
year,
int
month,
int
day)
{

tm
tmTime
=
{0};

time_t
tTime;

tmTime.tm_year
=
year-1900;

tmTime.tm_mon
=
month-
1;

tmTime.tm_mday
=
day;

tTime
=
mktime(&tmTime);

int
week
=
localtime(&tTime)->tm_wday;

if
(week
!=
0)

printf("%d年%d月%d日是星期%d\n",
year,
month,
day,
week);

else

printf("%d年%d月%d日是星期日\n",
year,
month,
day);
}
void
main()
{

week(2010,
11,
1);
}

❾ c语言编写万年历时计算每月第一天是星期几的公式是什么

C语言根据日期判断星期几,使用基姆拉尔森计算公式:

W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7

在公式中d表示日期中的日数,m表示月份数,y表示年数。

注意:

把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。

以公元元年为参考,公元元年1月1日为星期一

参考代码:

#include<stdio.h>
voidCaculateWeekDay(inty,intm,intd)
{
if(m<=2){
m+=12;
y--;
}
intiWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
switch(iWeek)
{
case0:printf("星期一 ");break;
case1:printf("星期二 ");break;
case2:printf("星期三 ");break;
case3:printf("星期四 ");break;
case4:printf("星期五 ");break;
case5:printf("星期六 ");break;
case6:printf("星期日 ");break;
}
}
voidmain()
{
CaculateWeekDay(2015,10,1);
}

❿ 怎样用C语言程序计算每月的一号是星期几

1、C语言根据日期判断星期几(使用基姆拉尔森计算公式)
算法如下:
基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中的日数,m表示月份数,y表示年数。
注意:在公式中有个与其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
以公元元年为参考,公元元年1月1日为星期一。

2、例程:

#include"stdio.h"
voidCaculateWeekDay(inty,intm,intd)
{
if(m==1||m==2){
m+=12;
y--;
}
intiWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
switch(iWeek)
{
case0:printf("星期一 ");break;
case1:printf("星期二 ");break;
case2:printf("星期三 ");break;
case3:printf("星期四 ");break;
case4:printf("星期五 ");break;
case5:printf("星期六 ");break;
case6:printf("星期日 ");break;
}
}
voidmain()
{
intyear=0,month=0,day=0;
printf("请输入日期: 格式为:1900,1,1 ");
chartemp='1';
while(temp!='0')
{
scanf("%d,%d,%d",&year,&month,&day);
scanf("%c",&temp);
CaculateWeekDay(year,month,day);
printf("输入0退出,其他继续:");
scanf("%c",&temp);
}
}