當前位置:首頁 » 編程語言 » 判斷年歷前面的空格c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

判斷年歷前面的空格c語言

發布時間: 2022-09-19 00:22:14

❶ 用c語言實現萬年歷

#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
long Year;
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}};//每月最後一天
char *str[]={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};

void nian(long year,FILE *fp)
{
int i,j,n=0,t;
char s[5][23];//把數字圖形看作一個二維數組
void fyear(int t,int n,char s[5][23]);
for(i=0;i<5;i++){
for(j=0;j<23;j++){
if(((i==1)||(i==3))&&((j>=1&&j<=3)||(j>=7&&j<=9)||(j>=13&&j<=15)||(j>=19&&j<=21)))
s[i][j]=' ';
else if((j==5)||(j==11)||(j==17))
s[i][j]=' ';
else
s[i][j]='*';
}//判斷『*』的位置
}
do{
t=year%10;
year=year/10;
fyear(t,n,s);
n++;
}while(year!=0);
if(n<4){
for(i=0;i<5;i++){
for(j=0;j<24-6*n;j++)
s[i][j]=' ';
}
}
for(i=0;i<5;i++){
printf(" ");
fprintf(fp,"%s"," ");
for(j=0;j<23;j++){
printf("%c",s[i][j]);
fprintf(fp,"%c",s[i][j]);
}
printf("\n");
fprintf(fp,"\n");
}
}//用『*』顯示年份

void fyear(int t,int n,char s[5][23])
{
int i,j;
switch(t){
case 0:
for(j=19-6*n;j<22-6*n;j++)
s[2][j]=' ';
break;
case 1:
for(i=0;i<5;i++){
for(j=18-6*n;j<22-6*n;j++)
s[i][j]=' ';
}
break;
case 2:
s[1][18-6*n]=' ';
s[3][22-6*n]=' ';
break;
case 3:
s[1][18-6*n]=' ';
s[3][18-6*n]=' ';
break;
case 4:
for(j=19-6*n;j<22-6*n;j++){
s[0][j]=' ';
s[4][j]=' ';
}
s[3][18-6*n]=' ';
s[4][18-6*n]=' ';
break;
case 5:
s[1][22-6*n]=' ';
s[3][18-6*n]=' ';
break;
case 6:
s[1][22-6*n]=' ';
break;
case 7:
for(i=1;i<5;i++){
for(j=18-6*n;j<22-6*n;j++)
s[i][j]=' ';
}
break;
case 8:
break;
case 9:
s[3][18-6*n]=' ';
break;
}
}//判斷圖形數字里的空格
long int f(long 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);
}//計算查詢日期所處位置

void yueli(int m,FILE *fp)
{
struct tm *local;
long t;
long i,sw,wd,day,leap,k,j;
char title[]=" 日 一 二 三 四 五 六";
void rili(long year,FILE *fp);
time(&t);
local = localtime(&t);
local->tm_year = local->tm_year + 1900;
local->tm_mon ++;
Year=local->tm_year;
if(m==1){
printf("\t\t\t %s\n",str[local->tm_mon-1]);
fprintf(fp,"\t\t\t %s\n",str[local->tm_mon]);
printf("\t\t ___________________________\n");
fprintf(fp,"\t\t ___________________________\n");
printf("\t\t %s\n",title);
fprintf(fp,"\t\t %s\n",title);
sw=w(local->tm_year,local->tm_mon,1);
leap=local->tm_year%4==0&&local->tm_year%100||local->tm_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(wd=0,day=1;day<=day_tbl[leap][local->tm_mon-1];day++)
{
date[local->tm_mon][wd][sw]=day;
sw=++sw%7;//每星期七天,以0至6計數
if(sw==0) wd++;//日期表每七天一行,星期天開始新的一行
}
for(j=0;j<6;j++){
printf("\t\t ");
fprintf(fp,"\t\t ");
for(k=0;k<7;k++)
if(date[local->tm_mon][j][k]){
printf("%3d ",date[local->tm_mon][j][k]);
fprintf(fp,"%3d ",date[local->tm_mon][j][k]);
}
else{
printf(" ");
fprintf(fp,"%s"," ");
}
printf("\n");
fprintf(fp,"\n");
}
printf("\t\t 今天是: %ld年%ld月%ld日,",local->tm_year,local->tm_mon,local->tm_mday);
fprintf(fp,"\t\t 今天是: %ld年%ld月%ld日,",local->tm_year,local->tm_mon,local->tm_mday);
switch(local->tm_wday){
case 0:printf("星期日\n");fprintf(fp,"星期日\n");break;
case 1:printf("星期一\n");fprintf(fp,"星期一\n");break;
case 2:printf("星期二\n");fprintf(fp,"星期二\n");break;
case 3:printf("星期三\n");fprintf(fp,"星期三\n");break;
case 4:printf("星期四\n");fprintf(fp,"星期四\n");break;
case 5:printf("星期五\n");fprintf(fp,"星期五\n");break;
case 6:printf("星期六\n");fprintf(fp,"星期六\n");break;
default:printf("error\n");
}
printf(" \t\t 當前時間是: %ld時%ld分%ld秒\n",local->tm_hour,local->tm_min,local->tm_sec);
fprintf(fp," \t\t 當前時間是: %ld時%ld分%ld秒\n",local->tm_hour,local->tm_min,local->tm_sec);
}//顯示當前系統時間
if(m==2)
rili(local->tm_year,fp);

}

void rili(long year,FILE *fp)
{ int sw,leap,i,j,k,wd,day;
char title[]=" 日 一 二 三 四 五 六";
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;//日期表置0
nian(year,fp);
for(i=0;i<12;i++)//一年十二個月
for(wd=0,day=1;day<=day_tbl[leap][i];day++)
{//將第i+1月的日期填入日期表
date[i][wd][sw]=day;
sw=++sw%7;//每星期七天,以0至6計數
if(sw==0) wd++;//日期表每七天一行,星期天開始新的一行
}
for(i=0;i<11;i+=2)
{//先測算第i+1月和第i+2月的最大星期數
// for(wd=0,k=0;k<7;k++)//日期表的第六行有日期,則wd!=0
// wd+=date[i][5][k]+date[i+2][5][k];
// wd=6;
printf("\t\t%s\t\t\t\t%s\n",str[i],str[i+1]);
fprintf(fp,"\t\t%s\t\t\t\t%s\n",str[i],str[i+1]);
printf(" ___________________________ ___________________________\n");
fprintf(fp," ___________________________ ___________________________\n");
printf(" %s %s \n",title,title);
fprintf(fp," %s %s \n",title,title);
for(j=0;j<6;j++)
{
printf(" ");//輸出四個空白符
//左欄為第i+1月,右欄為第i+2月
fprintf(fp," ");
for(k=0;k<7;k++)
if(date[i][j][k]){
printf("%4d",date[i][j][k]);
fprintf(fp,"%4d",date[i][j][k]);
}
else{
printf(" ");
fprintf(fp," ");
}
printf(" ");//輸出十個空白符
fprintf(fp," ");
for(k=0;k<7;k++)
if(date[i+1][j][k]){
printf("%4d",date[i+1][j][k]);
fprintf(fp,"%4d",date[i+1][j][k]);
}
else{
printf(" ");
fprintf(fp," ");
}
printf(" \n");
fprintf(fp," \n");
}
//鍵入回車輸出下一行的日歷
}
}
void main()
{
FILE *fp;
int choice;
if((fp=fopen("E:\\out1.txt","w"))==NULL){
printf("open error!\n");
exit(0);
}
yueli(1,fp);
while(1){
printf("歡迎使用本程序!請按提示選擇\n");
printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n");
printf("按[1]查看當天信息和本月月歷\n");
printf("按[2]查看當年日歷\n");
printf("按[3]查看某年日歷\n");
printf("按[4]查看下一年日歷\n");
printf("按[5]查看上一年日歷\n");
printf("按[0]退出\n");
printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n");
printf("輸入你的選擇並按回車結束:");
scanf("%d",&choice);
switch(choice){
case 1:yueli(1,fp);break;
case 2:yueli(2,fp);break;
case 3:
printf("請輸入你要查詢的年份: ");//輸入年
scanf("%d",&Year);
rili(Year,fp);
break;
case 4:rili(++Year,fp);break;
case 5:rili(--Year,fp);break;
case 0:printf("感謝您的使用,再見!\n");return;
}
}
fclose(fp);
return;
}

❷ C語言程序 關於萬年歷程序的問題~~~

int
firstday(int
y)
//判斷某年元旦是星期幾
{
double
s
;
s=floor(year-1+(year-1)/4.0-(year-1)/100.0+(year-1)/400.0+1);
return
(int)s%7;
}
這個函數寫錯了,2013年錯了一天,另外用浮點數,肯定有問題。

❸ c語言年歷編程

#include<stdio.h>

staticintyear;
staticintweekDay;

boolisLeapYear(inty)//判斷是否是閏年
{
return(y%4==0&&y%100!=0||y%400==0);//閏年的條件就是年份同時能被4和100整除或
//者能被400整除
}

longfirstDayOfYear(inty)//求出輸入的那年第一天是星期幾
{
longn;
n=y*365;
for(inti=1;i<y;i++)
if(isLeapYear(i))
n+=1;
returnn%=7;
}

voidprintHead(intm)//列印每個月的標題
{
if(m<10)
printf("%d月日一二三四五六 ",m);
else
printf("%d月日一二三四五六 ",m);
printf("");
for(inti=0;i<weekDay;i++)
printf("");
}

intdaysOfMonth(intm)//判斷每個月有多少天
{
switch(m)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:return31;
case4:
case6:
case9:
case11:return30;
case2:if(isLeapYear(year))
return29;
else
return28;
}
return0;
}

voidprintMonth(intm)//列印每月的日歷
{
printHead(m);
intdays=daysOfMonth(m);
for(inti=1;i<=days;i++)
{
if(i<10)
printf("%d",i);
else
printf("%d",i);
weekDay=(weekDay+1)%7;
if(weekDay==0)
{
printf(" ");
printf("");
}
}
}

voidmain()//主程序入口,接收輸入的年份,調用函數列印日歷
{
inty;
printf("請輸入年份:");
scanf("%d",&y);
year=y;
if(year<1)
{
printf("輸入年份不能小於1 ");
return;
}
weekDay=(int)firstDayOfYear(year);
printf("%d年 ",year);
printf("======================================== ");
for(inti=1;i<=12;i++)
{
printf(" ");
printMonth(i);
printf(" ");
}
}

可以顯示公元1世紀以後的所有年份的日歷,第2和第3問其實都包含在第1問里,程序看懂了自然也就會了(話說為什麼不能上傳附件?)

❹ c語言編程:列印年歷

基於你對問題的描述c語言編程:列印年歷
可以跟我詳細交流下

ES://DL5858DLls
你看下吧

❺ 、電子萬年歷:用C語言設計一個年歷系統,功能要求: (1)輸入任一年將顯示出該年的所有月份日期,對應的

/*
1、閏年的演算法:
如果某年能被4整除但不能被100整除,
或者能被400整除,
則該年是閏年.
用表達式表示就是
(year %4 == 0 && year%100 != 0) || (year%400 == 0)

2、計算某一天是星期幾:
已知1900年的1月1號為星期一,
然後就可以用某一天和1900年的1月1號相差的天數對7取余來求星期,
本題是用的公元1年的1月1號作為基準
*/
#include <stdio.h>
#include<conio.h>
#include<stdlib.h>
int IsLeapYear(int); //函數定義
void main()
{
int i;
int day;
int year;
int temp;
int temp_i;
long int Year_days = 0;
int Year_Start = 1;
int Per_Year_Days;
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29};

printf("Please enter the year: ");
scanf("%d",&year); //輸入年份

while(Year_Start < year) //從公元1年開始執行while循環, 該年的一月一號為星期一
{
if( IsLeapYear( Year_Start ) )
Per_Year_Days = 366; //如果是閏年, 則一年有366天
else
Per_Year_Days = 365; //如果不是閏年, 則一年有365天

Year_days = Year_days + Per_Year_Days; //Year_days為從公元1年到輸入年份的前一年的天數的總和
Year_Start++;
}

for( temp = 1; temp <=12; temp++ ) //temp從1到12, 對應一年內12個月
{
switch( temp ) //用switch語句將temp和12個月對應起來
{
case 1:
printf(" January(%d)\n",year); //一月
break;
case 2:
printf(" February(%d)\n",year); //二月
break;
case 3:
printf(" March(%d)\n",year); //三月
break;
case 4:
printf(" April(%d)\n",year); //四月
break;
case 5:
printf(" May(%d)\n",year); //五月
break;
case 6:
printf(" June(%d)\n",year); //六月
break;
case 7:
printf(" July(%d)\n",year); //七月
break;
case 8:
printf(" August(%d)\n",year); //八月
break;
case 9:
printf(" September(%d)\n",year); //九月
break;
case 10:
printf(" October(%d)\n",year); //十月
break;
case 11:
printf(" November(%d)\n",year); //十一月
break;
case 12:
printf(" December(%d)\n",year); //十二月
break;
}
i = Year_days % 7; //每個星期有7天, 故用每年的天數對7取余
printf("Mon\tTue\tWed\tThu\tFri\tSat\tSun\n");
if( i != 0 ) //如果余數不為零
for( temp_i = 0; temp_i < i; temp_i++)
printf("\t"); //則列印空格(這里用\t代替空格, 更加美觀), 空格數為i
day = 1; //初始化day為1, 為下面的while循環做准備
if( IsLeapYear(year) && temp == 2) //如果輸入的年份是閏年, 並且月份為2
while( day <= month_day[12] ) //day為一循環變數, 取值為1-365(閏年的話為1-366)
{
if( day >1 ) //如果天數大於一
if( Year_days % 7 == 0 ) //如果是星期日, 則換行
printf("\n");
if( day >= 10 )
printf("%d\t",day); //列印天數+空格
else
printf("%d\t",day);
Year_days++;
day++;
}

else //如果不滿足"輸入的年份是閏年, 並且月份為2"
while (day <= month_day[temp-1])
{
if( day > 1 )
if( Year_days % 7 == 0 )
printf("\n");
if( day >=10 )
printf("%d\t",day);
else
printf("%d\t",day);
Year_days++;
day++;
}
printf("\n");
if( getch() == 'q' ) //如果輸入為q, 則退出程序
exit(0);
}
getch(); //每按一次鍵, 列印一個月份
}

int IsLeapYear( int year )
{
//判斷是否是閏年, 是則返回1, 否則返回0
if ((year %4 == 0) && (year % 100 != 0) ||
(year % 400 == 0) )
return 1;
else
return 0;
}

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

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

❼ C語言編寫 年歷顯示程序

此題不是很難,我會前三個
關鍵是算那一年的第一天是周幾
給你個基本演算法,一年是365天,閏年366天
364是7的倍數,這樣一年多出一天,中間多少個閏年,在加上相應的天數即可
400年多出來的天數是400+97=497也是7的倍數,那麼400年一輪回,這樣就算400年以內的即可
一個子函數,返回這一年的第一天是周幾,很好做
int ye(int year)
{
int y=year%400;
int day=y;
int i;
for(i=0;i<y;i++)
if(閏年判斷)
day++;
return day%7;

}
做一個月份天數的全局數組
int mo[12]={31,28,31,30,31,30,31,31,30,31,30,31};
需要時用一個if判斷閏年改變m0[1]的值是28還是29

列印子函數,有一個小技巧,就是每個月前面的空缺部分,這個1月份是ye子函數的返回值,後面的你看和前面月份是不是重合啊,吧這個記錄下來在下一月份用即可
1 2
3 4
這樣月份排列更好列印一些,你的那個截圖有點麻煩

int pr(int year)
{
int k=ye(year);
int i,j,;
if(閏年判斷)
mo[1]=29;
else
mo[1]=28;
for(i=0;i<12;i++)
{
printf("周幾英文的列印");
for(j=0;j<k;j++)
printf("一般是四個空格,就是月份前面空缺的列印");
for(j=1;j<=mo[i];j++)
{
printf("%4d",j);
k++;
if((k+j)%7==0)
printf("\n");

}
k%=7;
if(k!=0)
printf("\n");

}

}
如果像你那樣,感覺需要賦值一個大一點的數組,在吧數組列印出來更好,呵呵

❽ c語言萬年歷編程解釋

#include <stdio.h>

int leap(int year ) //平閏年的判斷
{
if ((year %4 == 0) && (year % 100 != 0) || (year % 400 == 0))
{
return 1;
}
return 0;
}

void show(int year,int month) //顯示指定年制定月的日歷
{
//定義12個月的英文字元串
const char month_str[][4]={"","Jan","Feb","Mar","Apl",
"May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
//定義各個月的天數,二月為28天, 平年
const int month_day[]={30,31,28,31,30,31,30,31,31,30,31,30,31};
//分別定義:
int i;//該變數在後續代碼中經常被使用,為計數變數
int j;//同上
int wdays;//該變數是星期數(1至7)分別代表星期(一至日)
int mdays;//記錄所查詢的月份的天數,注意該天數在一開始計算總天數days的時候並未被算入
int days;//記錄所查詢年月(從公元元年開始)的總天數,比如2008年12月的days總天數計算方式為:先計算從公元1年到2007年的總天數,再加上2008年前11個月的總天數,至此總天數days的值還不是正確的,2008年12月份的天數尚未加上,這一點在(向控制台)顯示日歷的過程中將逐一加上,這一處理方法也是程序實現的一個必須性要求

//從公元元年開始計算到第(year-1)年的總的天數
for(i=1,days=0;i<year;i++)
{
if(leap(i)) //閏年
{
days += 366;
}
else
{
days += 365; //平年
}
}

//再加上第year年前(month-1)個月的總天數
for(i=1;i<month;i++)
{
if(i==2 && leap(year))
{
days+=29;
}
else
{
days+=month_day[i];
}
}

printf(" %s (%d)\n",month_str[month],year); //顯示月(年)
printf(" Mon Tue Wed Thu Fri Sat Sun\n"); //顯示日歷表頭
wdays = days % 7; //此即公式核心,計算星期序號,星期天為星期七
for( j = 0; j < wdays; j++)
{
printf("%4c",' '); // 控制台顯示格式需要 即空格列印
}
//定義mdays的值
if(month == 2 && leap(year))
{
mdays=29;
}
else
{
mdays= month_day[month];
}
//其中 i 為月的號數
for(i=1;i<=mdays;i++)
{
if( i > 1 && days % 7 == 0 ) //此即日歷公式核心,它是以星期為單元計算日歷,可見公元元年元旦為星期一
{
printf("\n"); //格式需要 換行
}
printf("%4d",i);
days=days+1; //此處讓days(不是完整的總天數)變數逐一遞增到真正的總天數
}
printf("\n---------------------------\n");
}

/*main()
{
int year,month;

printf("輸入年和月份:");
scanf("%d%d",&year,&month);//該程序的一個明顯的bug:對輸入的年月數據沒有進行必要的數據約束檢查,比如我們總不能輸入 -2009 13 吧?這樣程序一下就崩潰了

show(year,month);
getchar();//暫停,讓控制台顯示的內容停留,鍵入任意鍵將繼續

}*/

//給個新的main()

void main()
{
int year,month;
char c;
do
{
printf("\n輸入年和月份:");
scanf("%d%d",&year,&month);
if(year<1 || month<1 || month > 12)//這三個條件缺一不可
{
//錯誤信息提示
printf("年月數據輸入有誤,請檢查!");
}
else
{
show(year,month);
}
printf("\n\n繼續查詢請輸入y");
c=getchar();
getchar();//接收鍵入y以後回車確定的字元
}while(c=='y');
}
//我已經在VC上調試過,運行正常

萬曆表還可以做很多擴展,有興趣可以加我交流 QQ:805966355

❾ c語言設計萬年歷

看看沒人幫你,我來幫你吧,以下是我新寫的,用了我自己原創的演算法,完全不同於網上的程序,等於說是專門為你量身定製的。奉上程序:

#include<stdio.h>
#include<windows.h>
char*NameOfMonth[12]={"January","February","March","April","May","June","July","August","September","October","November","December"};
char*WeekDay[7]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
intIsLeapYear(intyear)
{
if(year%4==0&&year%100!=0||year%400==0)
{
return1;//閏年返回1
}else
{
return0;//平年返回0
}
}
intDateCheck(intuYear,intuMonth,intuDay)//合法返回true,非法或超出范圍返回false
{
if(uYear<1901||uYear>9999||uMonth<1||uMonth>12||uDay<1||uDay>31)
{
return0;
}
if(uMonth==4||uMonth==6||uMonth==9||uMonth==11)
{
if(uDay>30)
{
return0;
}
}elseif(uMonth==2)
{
if(IsLeapYear(uYear))
{
if(uDay>29)
{
return0;
}
}else
{
if(uDay>28)
{
return0;
}
}
}
return1;
}
intGetDays(intyear,intmonth,intday)
{
intsum=0;
if(DateCheck(year,month,day)==0)
{
return-1;//日期有誤
}
if(year>=1901)
{
intX=(int)(year/100);//世紀數
intY=X-(int)(X/4);//如果按4年一閏來算,Y指的是比實際上多算的天數,在下面需要減去
if(month<=2&&month>0)
{
year--;//把1月、2月視為上一年的13月、14月(純粹為了計算需要)
month+=12;
}
sum=(int)(365.25*(year-1900))+(int)(30.6*(month+1))+day-Y-49;//以365.25(本來實際太陽年是365.2425天)來計算是為了計算按4年一閏的整數年總天數,加上月份天數再加上餘下天數,減掉多閏天數,再減掉一個偏差值(多加的)
//月份以30.6天的平均值計算。最後減去的49,是多加的一個月以及其餘相差天數的和,可得到1900年1月1日的積日為0
}
returnsum;//返回距離1900年1月1日的總天數(積日)
}
intGetDayOfMonth(intmonth,intyear)
{
inttmp_days=GetDays(year,month,1);//本月積日
intDayOfMonth=0;
month++;//下個月
if(month>12)
{
month=1;//遇到月份為12月的情況,月份為1,年份加1
year++;
}
DayOfMonth=GetDays(year,month,1);//下個月的積日
DayOfMonth-=tmp_days;//下月1日的總天數(距離1900年1月1日的積日)減去當前月1日的總天數
returnDayOfMonth;//返回當前月總天數
}
intShowCalendar(intyear,intmonth,intday)
{
inti,j,count;
intjiri=0;//積日
intdayofweek=0;//星期
if(DateCheck(year,month,day)==0)
{
printf("輸入日期有誤! ");//日期不合法或超出范圍,年歷從1901年開始
return0;
}
printf(" %d%s ",year,NameOfMonth[month-1]);
printf("-------------------------------------- ");
printf("SunMonTueWedThuFriSat ");
printf("-------------------------------------- ");
jiri=GetDays(year,month,1);//獲取距離1900年1月1日的總天數
dayofweek=(1+jiri)%7;//月首星期,因為1900年1月1日星期一
count=GetDayOfMonth(month,year);
for(i=0;i<dayofweek;i++)
{
printf("");//填充前面空格
}
for(i=1,j=dayofweek;i<=count;i++,j++)
{
if(i<10)
{
printf("%d",i);
}else
{
printf("%d",i);
}
if((j+1)%7==0)
{
if(i!=count)
{
printf(" ");//滿7天,換行
}
}
}
printf(" -------------------------------------- ");
return1;
}
intmain()
{
intyear,month,day,nChoise=0;
inttotaldays=0;
while(1)//主循環
{
printf("******************歡迎使用萬年歷******************** ");
printf("$菜單$ ");
printf("$1.閏年判斷2.星期計算$ ");
printf("$$ ");
printf("$3.月歷查詢4.列印整年日歷$ ");
printf("$$ ");
printf("**************************************************** ");
printf("輸入對應的序號進行相關操作:Choise>");
scanf("%d",&nChoise);
switch(nChoise)
{
case1:
printf("請輸入要判斷的年份:Year>");
scanf("%d",&year);
if(year<1900||year>9999)
{
printf("輸入年份超出范圍!");
break;
}
if(IsLeapYear(year)==1)
{
printf("%d年是閏年! ",year);
}else
{
printf("%d年不是閏年! ",year);
}
break;
case2:
printf("請輸入要判斷的日期:YearMonthDay>");
scanf("%d%d%d",&year,&month,&day);
totaldays=GetDays(year,month,day);
printf("%d年%d月%d日是%s ",year,month,day,WeekDay[(totaldays+1)%7]);
break;
case3:
printf("請輸入要顯示的月份:YearMonth>");
scanf("%d%d",&year,&month);
ShowCalendar(year,month,1);
break;
case4:
printf("請輸入要判斷的年份:Year>");
scanf("%d",&year);
for(month=1;month<=12;month++)
{
ShowCalendar(year,month,1);
}
break;
default:
printf("無效的菜單項! ");
break;
}
system("pause");
system("cls");
}
return0;
}