當前位置:首頁 » 編程語言 » c語言月日計算星期幾
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言月日計算星期幾

發布時間: 2022-10-08 19:54:56

c語言程序,輸入年月日算出當天星期幾

#include <stdio.h>
int main()
{
int day,mn,yr,i,days=0,s,k;
int mont[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char wek[][9]={ {'S','u','n','d','a','y'},
{'M','o','n','d','a','y'},
{'T','u','e','s','d','a','y'},
{'W','e','d','n','s','d','a','y'},
{'T','h','u','r','s','d','a','y'},
{'F','r','i','d','a','y'},
{'S','a','t','u','r','d','a','y'}
};
printf("Inpute the date (year-month-day):");
scanf("%d-%d-%d",&yr,&mn,&day);
if (yr%4==0||yr%100==0||yr%400==0)
mont[2]=29;
else
mont[2]=28;
for (i=0;i<mn;i++)
days+=mont[i];
days+=day;
s=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+days;
k=s%7;
printf("%d-%d-%d is %s.",yr,mn,day,wek[k]);
return 0;
}

⑵ 怎樣用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);
}
}

⑶ C語言:輸入任意年月日,求該天是星期幾

注意:本源碼中,函數GetWeekDay的返回值僅僅表示輸入參數是否「正確/有效」(例如前三個參數使用2001,2,29就是無效參數),能否得到預期的星期值;真正的星期值則是通過輸出變數返回給主調函數的。
#include
<time.h>
#include
<stdio.h>
int
GetWeekDay(int
nYear,int
nMon,int
nDay,
int
*npWeekDay);
int
main()
{
int
nMyWeekDay;
int
nResult;
nResult
=
GetWeekDay(2007,1,10,&nMyWeekDay);
return
0;
}
//輸入日期,返回星期的C語言函數
int
GetWeekDay(int
nYear,int
nMon,int
nDay,
int
*npWeekDay)
{
int
nRetVal
=
0;
time_t
tMyDateTime;
struct
tm
tmMyDate,*tmpMyDate;
if((nYear<1900||nYear>=3000)
||
(nMon<1
||
nMon>12)
||
(nDay<1||nDay>31)
)
{
nRetVal
=
1;
*npWeekDay
=
-1;
return
nRetVal;
}
//memset(tmMyDate,0,sizeof(struct
tm));
tmMyDate.tm_year
=
nYear-1900;
tmMyDate.tm_mon
=
nMon-1;
tmMyDate.tm_mday
=
nDay;
tmMyDate.tm_hour
=16;
tmMyDate.tm_min
=30;
tmMyDate.tm_sec
=30;
tMyDateTime
=
mktime(&tmMyDate);
if(tMyDateTime<0)
{
nRetVal
=
1;
*npWeekDay
=
-1;
return
nRetVal;
}
tmpMyDate
=
localtime(&tMyDateTime);
*npWeekDay
=
tmpMyDate->tm_wday;
return
nRetVal;
}

⑷ C語言程序,輸入年月日算出當天星期幾

似乎是有時間函數,看看說明
其實弄個語言,主要的是使用中間的函數、工具、各種包,
語言本身比較簡單,相對的,而那是不夠的,
那些函數,也不都是語言本身寫的,

⑸ C語言程序,輸入年月日算出當天星期幾

先做一個函數,計算1900年1月1日到該天的天數,然後用膜除求出星期幾並輸出。

具體代碼如下:

#include<stdio.h>
#include<stdlib.h>

intDay(inty,intm,intd);

intmain(intargc,char*argv[]){
inti;//循環變數
intyear,month,day;//讀取用戶輸入的年月日
intdays;//儲存從1900-1-1到該天的天數
intweek=0;//儲存求余後的星期
//字元串組合輸出星期
charb[]={"星期"};
charc[7][4]={"日","一","二","三","四","五","六"};

loop:printf("請輸入年月日:(空格分隔) ");
scanf("%d%d%d",&year,&month,&day);
days=Day(year,month,day);
//增強程序的健壯性
if(days==-1)
{
printf("輸入格式有誤,");
fflush(stdin);//防止用戶輸入字母等其他非數字字元
gotoloop;
}
else
{
week=days%7;//用求余計算星期幾
printf("%d年%d月%d日是%s%s ",year,month,day,b,c[week]);
}
system("pause");
return0;
}

//函數功能:輸入年月日,輸出1900-1-1到該天的天數,-1位輸入不合法
intDay(inty,intm,intd)
{
inti;
intr=0;//儲存1900到該天的閏年個數
inta[]={31,28,31,30,31,30,31,31,30,31,30};//m給每出月的天數

if(y>=1900&&m>0&&m<13&&d>0&&d<32)
{
for(i=1900;i<=y;i++)//計算閏年的個數
{
if(i%400==0||i%100!=0&&i%4==0)
r++;
}
for(i=0;i<m-1;i++)//統計當年1月1日到當月的天數
{
d+=a[i];
}
if((y%400==0||y%100!=0&&y%4==0)&&m<3)//如果當年是閏年但不到二月就不能算進去
r--;
return365*(y-1900)+r+d;
}
else
return-1;
}

⑹ c語言計算日期為星期幾

#include<stdio.h>
int isRn(int num){
if((num%4==0&&num%400!=0)||num%400==0){
return 1;
}else{
return 0;
}
int monthDay(int year,int month){
if(month==1||month==3||month==5
||month==7||month==8||month==10
||month==12){
return 31;
}else if(month==4||month==6||month==9
||month==11)
{
return 30;
}else if(month==2){
if(isRn(int num)==1){
return 29;
}else{
return 28;
}
}
}
void main(){
int sum=0,year,month,day,i,temp,j;
printf("請輸入年份:");
scanf("%d",&year);
while(year<1900){
printf("年份必須從1900年開始!\n\n");
printf("請輸入年份:");
scanf("%d",&year);
}
printf("請輸入月份:");
scanf("%d",&month);
while(month<1||month>12){
printf("月份必須是1到12之間!\n\n");
printf("請輸入月份:");
scanf("%d",&month);
}
printf("請輸入日:");
scanf("%d",&day);
while(day>monthDay(year,month)||day<1){
printf("日必須從1開始,並且不能大於該月的天數!\n\n");
printf("請輸入日:");
scanf("%d",&day);
}
temp=month;
temp-=1;
for(i=1900;i<=year;i++){
for(j=1;j<=12;j++){
if(i==year&&j==temp){
break;
}
sum+= monthDay(year,j);
}
}
sum+=day;
printf("%d年%d月%d日,是星期",year,month,day)
if(sum%7==0){
printf("日。\n");
}else if(sum%7==1){
printf("一。\n");
}else if(sum%7==2){
printf("二。\n");
}else if(sum%7==3){
printf("三。\n");
}else if(sum%7==4){
printf("四。\n");
}else if(sum%7==5){
printf("五。\n");
}else if(sum%7==2){
printf("六。\n");
}
}

⑺ C語言編程(程序怎樣編寫):給定年、月、日,計算該日是該年的第幾天,然後計算該日是星期幾。

/**
程序描述:給定年、月、日,計算該日是該年的第幾天,然後計算該日是星期幾。
*/
#include<stdio.h>

intmon[]={31,28,31,30,31,30,31,31,30,31,30,31};

intleap_year(intn)
{
if(n%400==0||(n%4==0&&n%100!=0))
return1;
else
return0;
}
intcal_dayCount(intyear,intmonth,intday)
{
inti,sum;
for(i=0,sum=0;i<month-1;i++)
sum+=mon[i];
if(month>2)
sum+=day+leap_year(year);
else
sum+=day;
returnsum;
}
intcal_weekday(intyear,intmonth,intday)
{
/**
蔡勒(Zeller)公式
歷史上的某一天是星期幾?未來的某一天是星期幾?關於這個問題,有很多計算公式(兩個通用計算公式和
一些分段計算公式),其中最著名的是蔡勒(Zeller)公式。
即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1

公式中的符號含義如下,
w:星期;
c:年的高兩位,即世紀-1
y:年的低兩位;
m:月(m大於等於3,小於等於14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月來計算,
比如2003年1月1日要看作2002年的13月1日來計算);
d:日;
[]代表取整,即只要整數部分。

算出來的W除以7,余數是幾就是星期幾。如果余數是0,則為星期日。
如果結果是負數,負數求余數則需要特殊處理:
負數不能按習慣的余數的概念求余數,只能按數論中的余數的定義求余。為了方便
計算,我們可以給它加上一個7的整數倍,使它變為一個正數,然後再求余數

以2049年10月1日(100周年國慶)為例,用蔡勒(Zeller)公式進行計算,過程如下:
蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=49+[49/4]+[20/4]-2×20+[26×(10+1)/10]+1-1
=49+[12.25]+5-40+[28.6]
=49+12+5-40+28
=54(除以7餘5)
即2049年10月1日(100周年國慶)是星期5。
*/
inty,c,m,d;
intw;

if(month>=3)
{
m=month;
y=year%100;
c=year/100;
d=day;
}
else/*某年的1、2月要看作上一年的13、14月來計算*/
{
m=month+12;
y=(year-1)%100;
c=(year-1)/100;
d=day;
}
w=y+y/4+c/4-2*c+(26*(m+1))/10+d-1;

if(w<0)/*如果w是負數,則計算余數方式不同*/
{
w=7-(-w)%7;
}
else
{
w=w%7;//如果w等於0,表示為星期天
}
returnw;
}
intmain()
{
intyear,month,day;
intdayCount=0,i;
printf("請輸入當前的年,月,日:");
scanf("%d-%d-%d",&year,&month,&day);
printf("該日是該年的第幾天:%d ",cal_dayCount(year,month,day));
printf("該日是星期幾:%d ",cal_weekday(year,month,day));
return0;
}

示例運行結果:

⑻ c語言知道日期算星期幾

//這定義的是一個二維數組(7行10列)
//每一個字元串,比如:"星期天"就是一行,共七個字元。
//漢字占兩個字元,所以"星期天"就是7個字元(末尾應該還有一個''結束符)。
//這里的10確實是隨便定義的數,但是要保證大於等於7
charstr[7][10]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
intyear,month,day;

//這是定義一個子函數,IsLeapYear也是隨便取的,
//但是要符合C語言的命名規范,並且最好有實際意義
intIsLeapYear()
{
if((year%4==0&&year%100!=0)||(year%400==0))
return1;
else
return0;
}

//這和上面一樣,定義子函數,名字是隨便取的,
//下劃線也是符合c語言命名規范的,所以可用
//intm是一個參數,用來保存主函數傳遞過來的值
intmonth_day(intm)
{
//這是數組初始化的一種格式,由於有初始值列表,
//系統會自動根據初始化數據確定數組大小
//比如這里相當於intmon_day[12]
intmon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};

這些都是基礎,還是看看書吧

⑼ 用c語言輸入日期輸出星期幾

#include<stdio.h>

intmain(intargc,charconst*argv[])
{
intdata;
scanf("%d",&data);
printf("星期%d ",(data+1)%7+1);
return0;
}