❶ 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);
}
}