當前位置:首頁 » 編程語言 » c語言程序輸出教學日歷
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言程序輸出教學日歷

發布時間: 2023-02-24 03:08:53

『壹』 c語言編程序實現如下功能:輸入任意一個日期的年、月、日的值,求出是星期幾並輸出。

用蔡勒公式即可:

#include<stdio.h>

intmain()

{

inty,m,d,c,w;

printf("輸入年月日(空格間隔):");

scanf("%d%d%d",&y,&m,&d);

if(m==1||m==2)

{//判斷月份是否為1或2y--;m+=12;}

c=y/100;

y=y-c*100;

w=(c/4)-2*c+(y+y/4)+(13*(m+1)/5)+d-1;

while(w<0)w+=7;

w%=7;

if(w==0)printf("星期日");

elseprintf("星期%d",w);

return0;

}

方法二:

#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) c=31 28 d;

else if (m==4) c=31 28 31 d;

else if (m==5) c=31 28 31 30 d;

else if (m==6) c=31 28 31 30 31 d;

else if (m==7) c=31 28 31 30 31 30 d;

else if (m==8) c=31 28 31 30 31 30 31 d;

else if (m==9) c=31 28 31 30 31 30 31 31 d;

else if (m==10) c=31 28 31 30 31 30 31 31 30 d;

else if (m==11) c=31 28 31 30 31 30 31 31 30 31 d;

else if (m==12) c=31 28 31 30 31 30 31 31 30 31 30 d;

if (m>2)

{if (y0==0) {if (y@0==0) c=c 1;}

else if (y%4==0) c=c 1;}

s=(y-1)*365 (y-1)/4-(y-1)/100 (y-1)/400 c;

w=s%7;

switch (w)

{

case 0: printf("星期日");break;

case 1: printf("星期一");break;

case 2: printf("星期二");break;

case 3: printf("星期三");break;

case 4: printf("星期四");break;

case 5: printf("星期五");break;

case 6: printf("星期六");break;

printf("
");

}

}

(1)c語言程序輸出教學日歷擴展閱讀:

C語言日期函數,日期處理函數:

定義一個表示日期的結構體類型,再分別定義函數完成下列功能:計算某一天是對應年的第幾天,這一年一共多少天;計算兩個日期之間相隔的天數。兩個日期由鍵盤輸入。

演算法思想:

設定結構體類型表示日期類型名為 Date,利用 typedef 將其定義為日期型類型名,有三個整型類型的成員分別表示年、月、日。

設定函數計算輸入的日期是這一年的第幾天。函數的形參為日期型變數,函數體中設定整型數組存放每個月的天數,二月份的天數為 28 天。

設定函數判斷年份是否為閏年以決定二月份的天數。根據輸入的日期月份,在數組中將相應的月份天數求和,假日曰期即為天數。

設定函數完成兩個日期的比較,比較形參 d 和 s 兩個日期的大小。首先比較年,同年的比較月,同月的比較日。變數 start 保存輸入的小的日期年份,end 保存輸入日期大的年份,然後計算兩個日期之間的天數。

程序由 6 個函數構成,yearday() 函數計算某年的天數,monthday() 函數計算某年二月份的天數,dayofyeaK() 函數計算某日期是某年的第幾天。

cmpdate() 函數比較兩個日期的大小,interday() 函數計算兩個日期之間的天數。

dayofyear() 函數調用 monthday() 函數,interday() 函數調用 cmpdate() 函數。

yearday() 函數、dayofyear() 函數;主函數調用 yearday() 函數、dayofyear() 函數、interday() 函數。

『貳』 用c語言編寫萬年歷,要求輸出任意一年的某月,能顯示出這個月的日歷

1、首先要判斷一個年份是閏年還是平年,用一個子程序來做。

『叄』 怎樣設計一個C語言程序列印指定年份的公歷表和農歷表(包括24節氣)

參考文章:http://www.abcchip.com/show.asp?type=wzh&id=91
天芯網

『肆』 編寫一個c語言程序,輸入一個年月日,輸出這個日期是這一年的第幾天。(考慮閏年)

請分別輸入年月日三個數值,計算出這是這一年的第幾天?
(提示:要考慮閏年和2月的情況)
*/


#include <stdio.h>


void main()
{
int year=0,month=0,day=0,i=0,sum=0;
while(1)
{
printf("請輸入年份:");


scanf("%d",&year);


printf("請輸入月份:");


scanf("%d",&month);


printf("請輸入日期:");


scanf("%d",&day);




i=0;//i變數是為了控制月和日的格式是否輸入正確;


switch(month)//判斷每個月的日期是否輸入正確;

sum=i+day;

printf("%d年%d月%d日是%d年的第%d天 !",year,month,day,year,sum);


}

『伍』 C語言程序設計 萬年歷查詢程序。

實驗名稱:萬年歷的查詢及列印
【內容】:設計一個查詢並列印萬年歷的程序。
【步驟】:
1.
畫出程序流程圖;
2.
編寫程序;
3.
調試程序,對調試過程中出現的問題進行分析,找出錯誤的原因並予改正;
4.
寫出通過調試並修改正確的原程序。
【要求】:
1.
程序運行後,首先在屏幕上顯示主菜單:
1.
查詢某年某月某日是星期幾
2.
查詢某年是否是閏年
3.
列印某年的全年日歷
4.
退出
2.
在主菜單中輸入1後,顯示:

「請輸入年月日(XXXX,XX,XX)」

運行後輸出:XXXX年XX月XX日是星期X,是否繼續查詢(Y/N)?

如果輸入Y,則重新顯示
「請輸入年月日(XXXX,XX,XX)」,否則回到主菜單。
3.
在主菜單中輸入2後,顯示:

「請輸入要查哪一年?(XXXX)」


運行後輸出:XXXX年是(否)是閏年,是否繼續查詢(Y/N)?

如果輸入Y,則重新顯示,「請輸入要查哪一年?(XXXX)」,否則回到主菜單。
4.
在主菜單中輸入3後,顯示:

「請輸入要列印的年份(XXXX)」


運行後輸出XXXX年的日歷,格式為:
XXXX

X(月數)

0
1
2
3
4
5
6

S
M
T
W
T
F
S

x
x
x
x
x
x
x

x
x
x
xx
xx
xx
xx

xx
xx
xx
xx
xx
xx
xx

xx
xx
xx
xx
xx
xx
xx

xx
xx
xx
X(月數)
0
1
2
3
4
5
6

S
M
T
W
T
F
S

x
x
x
x

x
x
x
xx
xx
xx
xx

xx
xx
xx
xx
xx
xx
xx

xx
xx
xx
xx
xx
xx
xx

xx
xx
xx
xx
xx
.
.
.
.
.

運行完後顯示:「是否繼續列印(Y/N)?」

如果輸入Y,則重新顯示,「請輸入要列印的年份(XXXX)」,否則回到主菜單。
5.
在主菜單中輸入4後,顯示:「是否要真的退出(Y/N)?」


如果輸入Y,結束程序運行,否則重新顯示主菜單。
【提示】:
1.
閏年計算:滿足下列二者之一,是閏年:
能被4整除,但不能被100整除;
能被4整除,且能被400整除。
2.閏年的二月是29天,平年的二月是28天
3.星期幾的計算:

S=X-1+(X-1)/4+(X-1)/100+(X-1)/400+C

X是年份,C是該年從元旦開始到到這一日的天數。

S/7的余數既是星期數
例1:1982年12月26日

由於1982年不是閏年(不能被4整除),所以該年的二月是28天。

C=31+28+31+30+31+30+31+31+30+31+30+26=360
(1月到11月的天數+12月的實際天數)
S=1982-1+(1982-1)/4+(1982-1)/100+(1982-1)/400+360=2821.3925

S/7=2821/7=403
余數為0,所以該日是星期天。
例2:2000年3月8日

由於2000年是閏年(能被4整除,又能被100和400整除),所以該年的二月是29天。

C=31+29+8=68
(1月到2月的天數+3月的實際天數)
S=2000-1+(2000-1)/4+(2000-1)/100+(2000-1)/400+68=2551.757

S/7=2551/7=364
余數為3,所以該日是星期三。

『陸』 用C語言編寫一個程序:輸入任意一個年份,輸出該年的日歷,要求日歷自上而下排成兩列。

//萬年歷.
#include <stdio.h>
long int f(int year,int month)
{
if(month<3) return year-1;
else return year;
}
long int g(int month)
{
if(month<3) return month+13;
else return month+1;
}

long int n(int year,int month,int day)
{
return 1461L*f(year,month)/4+153L*g(month)/5+day;
}

int w(int year,int month,int day)
{
return(int) ((n(year,month,day)%7-621049L%7+7)%7);
}

int date[12][6][7];
int day_tbl[ ][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}};

main()
{
int sw,leap,i,j,k,wd,day;
int year;
char title[]="SUM MON TUE WED THU FRI SAT";

printf("Please input the year whose calendar you want to know:\n");
scanf("%d%*c",&year);

sw=w(year,1,1);
leap=year%4==0&&year%100||year%400==0;
for(i=0;i<12;i++)
for(j=0;j<6;j++)
for(k=0;k<7;k++)
date[i][j][k]=0;
for(i=0;i<12;i++)
for(wd=0,day=1;day<=day_tbl[leap][i];day++)
{
date[i][wd][sw]=day;
sw=++sw%7;
if(sw==0) wd++;
}
printf("\n|================== The Calendar of Year %d==================|\n|",year);
for(i=0;i<6;i++)
{
for(wd=0,k=0;k<7;k++)
wd+=date[i][5][k]+date[i+6][5][k];
wd=wd?6:5;
printf(" %2d %s %2d %s|\n|",i+1,title,i+7,title);
for(j=0;j<wd;j++)
{
printf(" ");
for(k=0;k<7;k++)
if(date[i][j][k])
printf("%4d",date[i][j][k]);
else printf(" ");
printf(" ");
for(k=0;k<7;k++)
if(date[i+6][j][k])
printf("%4d",date[i+6][j][k]);
else printf(" ");
printf("|\n|");
}
}
puts("==============================================================|");
}

『柒』 c語言輸出年月日

下面是這段代碼,配合注釋體會一下吧

#include <stdio.h>

void MonthDay(int year,int yearDay,int *pMonth,int *pDay);

int main()
{
int year,yearDay,month,day;
scanf("%d%d",&year,&yearDay);//輸入年份和天數
MonthDay(year,yearDay,&month,&day);
printf("%d-%d-%d",year,month,day);
return 0;
}

void MonthDay(int year,int yearDay,int *pMonth,int *pDay)
{
int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};//這個數組保存每月的天數
if(year%4==0&&year%100!=0||year%400==0)//判斷是否為閏年
days[1]=29;//閏年的二月有29天
*pMonth=1;//從一月開始看
while(yearDay>days[*pMonth-1])//如果哪一天超出這個月
{
yearDay-=days[*pMonth-1];//求出超出此月的天數
(*pMonth)++;//繼續考慮下一月
}
*pDay=yearDay;
}

『捌』 C語言題目:設計一個程序輸入年月日 輸出下一天的年月日 要C語言,不要C++

#include
"stdio.h"
int
isleapyear(int
year);//判斷是不是閏年。
int
iscurrentdate(int
year,int
month,int
day);//是不是正確的日期。
int
returnnextday(int
year,int
month,int
day);//返回下一天,也有判斷是不是正確的日期。
int
leapyear_month_sumday[12]={31,29,31,30,31,30,31,31,30,31,30,31};//閏年數組,保存各月天數。
void
main()
{
int
year=0,month=0,day=0,nextday=0;
printf("pleace
enter
right
date(example:2005
6
27):\n");
scanf("%d%d%d",&year,&month,&day);
nextday=returnnextday(year,month,day);
switch
(nextday)
{
case
0:
printf("not
a
current
date\n");
break;
case
1:
if
(month==12)
{
year++;
month=1;
}
else
{
month++;
}
break;
}
if
(nextday!=0)
printf("the
you
input
next
date
is
%d-%d-%d.thank
use
bye
bye!\n",year,month,nextday);
}
int
isleapyear(int
year)
{
if
(year%4==0)
{
if
(year%400)
return
1;
else
{
if
(year%100==0)
return
0;
else
return
1;
}
}
else
{
return
0;
}
}
int
iscurrentdate(int
year,int
month,int
day)
{
if
((year<0)
&&
(year>9999)
&&
(month>12)
&&
(month<1)
&&
(day<1)
&&(day>31)
)return
0;
else
return
1;
}
int
returnnextday(int
year,int
month,int
day)
{
int
thismonthsumday;
if
(iscurrentdate(year,month,day)==1)
{
thismonthsumday=leapyear_month_sumday[month-1];
if
(month==2)
{
if
(isleapyear(year)==0)
thismonthsumday--;
}
if
(day<thismonthsumday)
{
return
++day;
}
else
{
if
(day==thismonthsumday)
{
return
1;
}
else
{
return
0;
}
}
}
else
{
return
0;
}
}