『壹』 幫忙用c語言編一個「日歷列印程序」 需要源代碼
你好
#include "stdio.h"
void CaculateWeekDay(int y,int m, int d)
{
if(m==1||m==2) {
m+=12;
y--;
}
int iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
switch(iWeek)
{
case 0: printf("星期一\n"); break;
case 1: printf("星期二\n"); break;
case 2: printf("星期三\n"); break;
case 3: printf("星期四\n"); break;
case 4: printf("星期五\n"); break;
case 5: printf("星期六\n"); break;
case 6: printf("星期日\n"); break;
}
}
void main()
{
int year=0,month=0,day=0;
printf("請輸入日期:\n格式為:1900,1,1\n");
char temp = '1';
while (temp != '0')
{
scanf("%d,%d,%d",&year,&month,&day);
scanf("%c",&temp);
CaculateWeekDay(year,month,day);
printf("輸入0退出,其他繼續:");
scanf("%c",&temp);
}
} 希望對你有幫助.....
『貳』 用c語言編寫萬年歷,要求輸出任意一年的某月,能顯示出這個月的日歷
1、首先要判斷一個年份是閏年還是平年,用一個子程序來做。
『叄』 C語言「列印日歷」的程序是什麼
#include <stdio.h>
void main()
{
int i,j,k,year,week;
int day[]={31,28,31,30,31,30,31,31,30,31,30,31};
char month[12][10]={"January","February","March","April","May","June","July","August","September","October","November","December"};
printf("Input year you want to print:");
scanf("%d",&year);
if((year%4==0&&year%100!=0)||(year%400==0)) day[1]++; //判斷是否閏年
week=(35+year+year/4-year/100+year/400)%7; //計算當年的1月1日是周幾的公式
for(i=0;i<12;i++)
{
printf("\n%s\n",month[i]); //輸出月份的英文
printf("Sun Mon Tue Wed Thu Fri Sat\n"); //輸出表頭
for(k=0;k<week;k++) printf(" "); //每月一號對齊它的星期數
for(j=1;j<=day[i];j++)
{
printf("%3d ",j);
if(++week>=7)
{
printf("\n");
week=week%7;
}
}
printf("\n");
}
}
『肆』 C語言年歷顯示程序設計
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
char* month[]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nev","Dec"};
char* week[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
int j_leapyear(int year) //定義函數檢測輸入年份是否為閏年
{
if((/*year%400==0*/year%4==0&&year%100!=0)||(year%400==0))
return (1);
// else if(year%4==0&&year%100!=0)
// return (1);
else return 0;
}
int month_day(int year,int month) //檢測該年月份有多少天
{
int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};
if(j_leapyear(year)&&month==2)
return 29;
else return (mon_day[month-1]);
}
int j_week(int year,int month,int day) //檢測該天是星期幾
{
int d=0,i; //d表示該天在該年份的累計天數
int w;
/* int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31};
if(j_leapyear(year)==1)
month_day[1]=29;
for(i=0;i<month;i++)
d+=month_day[i];
d=d+day;*/
for(i=1;i<month;i++)
d+=month_day(year,i);
d+=day;
w=(year-1)+(int)(year-1)/4-(int)(year-1)/100+(int)(year-1)/400+d;//網上公式
return ((int)w%7);
}
int allyear(int year) //輸出全年日歷
{
int i,j,b;
printf("\n%d 日歷",year);
for(i=1;i<=12;i++)
{
printf("\n\n\t%s\n",month[i-1]);
// printf(" 7 1 2 3 4 5 6 \n");
printf(" S M T W T F S \n");
b=j_week(year,i,1);
for(j=1;j<=month_day(year,i)+b;j++)
{
if(j<=b)
printf(" ");
else if(j-b<10)
printf("%2d ",j-b);
else printf("%2d ",j-b);
//else printf("%2d ",j-b);
if(j%7==0)
putchar('\n');
}
putchar('\n');
}
return 0;
}
void month_print(int year,int month) //輸入一個年月,輸出這個月的日歷
{
int i,c,d;
c=month_day(year,month);
printf("\n\n %d年%d月日歷\n",year,month);
printf(" S M T W T F S \n");
d=j_week(year,month,1);
for(i=1;i<=c+d;i++)
{
if(i<=d)
printf(" ");
else printf("%2d ",i-d);
if(i%7==0)
putchar('\n');
}
putchar('\n');
}
int jisuan_day(int year,int month,int day,int x,int y,int z) //輸入年月日,輸出距x年y月z日有多少天,星期幾,以及是否是公歷節日
{
int i,a,b,c=0,d=0,days=0,m=0,n=0,t;
a=year>=x?year:x;
b=year<x?year:x;
if(a>b)
{
for(i=b+1;i<a;i++)
c+=j_leapyear(i);
}
else c=0;
if(year!=x)
d=a-b-1;
else d=0;
m=365*d+c;
if(year<x)
{
for(i=month;i<=12;i++)
n+=month_day(year,i);
days=m+n+z-day;
}
else if(year>x)
{
for(i=y;i<=12;i++)
n+=month_day(x,i);
for(i=1;i<month;i++)
n+=month_day(year,i);
days=m+n+day-z;
}
else
{
for(i=month>=y?y:month;i<(month>=y?month:y);i++)
n+=month_day(x,i);
days=abs(day-z)+n; //輸出距離y月z日有多少天
}
printf("這天離%d年%d月%d號有%d天\n",x,y,z,days);
t=j_week(year,month,day);
if(t==0) //輸出星期幾
printf("這天星期日");
else if(t==1)
printf("這天星期一");
else if(t==2)
printf("這天星期二");
else if(t==3)
printf("這天星期三");
else if(t==4)
printf("這天星期四");
else if(t==5)
printf("這天星期五");
else if(t==6)
printf("這天星期六");
putchar('\n');
if(month==1&&day==1)
printf("這天是元旦節");
else if(month==2&&day==14)
printf("這天是情人節");
else if(month==3&&day==8)
printf("這天是婦女節");
else if(month==3&&day==12)
printf("這天是植樹節");
else if(month==4&&day==1)
printf("這天是愚人節");
else if(month==4&&day==4)
printf("這天是清明節");
else if(month==5&&day==1)
printf("這天是勞動節");
else if(month==6&&day==1)
printf("這天是兒童節");
else if(month==8&&day==1)
printf("這天是建軍節");
else if(month==9&&day==10)
printf("這天是教師節");
else if(month==10&&day==1)
printf("這天是國慶節");
else if(month==12&&day==25)
printf("這天是聖誕節");
else printf("這天不是特殊節日");
putchar('\n');
return days;
}
void fish_or_net(int year,int month,int day) //判斷是打魚還是曬網
{
int q;
int i,a,b,c=0,d=0,days=0,m=0,n=0;
a=year>=1990?year:1990;
b=year<1990?year:1990;
if(a>b)
{
for(i=b+1;i<a;i++)
c+=j_leapyear(i);
}
else c=0;
if(year!=1990)
d=a-b-1;
else d=0;
m=365*d+c;
if(year<1990)
{
for(i=month;i<=12;i++)
n+=month_day(year,i);
days=m+n+1-day;
}
else if(year>1990)
{
for(i=1;i<=12;i++)
n+=month_day(1990,i);
for(i=1;i<month;i++)
n+=month_day(year,i);
days=m+n+day-1;
}
else
{
for(i=month>=1?1:month;i<(month>=1?month:1);i++)
n+=month_day(1990,i);
days=abs(day-1)+n; //先確定這天離1990年1月1日有多少天
}
q=days%5+1;
if(q==1||q==2||q==3) //判斷打魚還是曬網
printf("漁人今天打魚");
else printf("漁人今天曬網");
putchar('\n');
}
/*int main() //這部分內容用來校檢
{
int j_leapyear(int year);
int month_day(int year,int month);
int j_week(int year,int month,int day);
int allyear(int year);
void month_print(int year,int month);
int jisuan_day(int year,int month,int day,int x,int y,int z);
void fish_or_net(int year,int month,int day);
int x,y,z,year,month,day;
// allyear(2015);
//month_print(2016,12);
printf("請輸入今天的日期(按年,月,日輸入,如2016,1,14表示2016年1月14日):");
scanf("%d,%d,%d",&x,&y,&z);
printf("\n請隨便輸入一個日期,格式同上:");
scanf("%d,%d,%d",&year,&month,&day);
jisuan_day(year,month,day,x,y,z);
// fish_or_net(x,y,z);
return 0;
} // 這部分內容是用來檢測上述函數是否出錯的
*/
int main()
{
int j_leapyear(int year);
int month_day(int year,int month);
int j_week(int year,int month,int day);
int allyear(int year);
void month_print(int year,int month);
int jisuan_day(int year,int month,int day,int x,int y,int z);
void fish_or_net(int year,int month,int day); //函數聲明
int option,year,month,day,x,y,z;
char ny;
system("color 1f");
while (1)
{
printf("\n\n\t 歡迎來到由...編寫的程序\n\n");
printf(" 請選擇您需要的服務,輸入編號回車結束\n");
printf(" 1.輸入一個年份,輸出該年的日歷\n");
printf(" 2.輸入年月,輸出這個月的日歷。\n");
printf(" 3.輸入年月日,輸出據今天還有多久,星期幾,是否是公歷節日。\n");
printf(" 4.某人自1990年1月1日開始打魚,「三天打魚,兩天曬網」,輸入一個1990年以後的日期,輸出他這一天是打魚還是曬網。\n");
printf(" 5.退出\n");
scanf("%d",&option);
switch(option) //switch分支結構
{
case 1:
while(1) //while循環,後面的1是常數,表示一直到break才結束循環
{
printf("請輸入一個年份:");
scanf("%d",&year);
allyear(year);
printf("你想繼續查詢日歷么?(y表示繼續,n表示結束)");
scanf("%c",&ny);
if(ny=='n')
break;
}
break;
case 2:
while (1)
{
printf("輸入年月:");
scanf("%d,%d",&year,&month);
month_print(year,month);
printf("你想繼續查詢日歷么?(y表示繼續,n表示結束):");
scanf("%c",&ny);
if(ny=='n')
break;
}
break;
case 3:
while (1)
{
printf("輸入年月日:");
scanf("%d,%d,%d",&year,&month,&day);
printf("請輸入今天的日期:");
scanf("%d,%d,%d",&x,&y,&z);
jisuan_day(year,month,day,x,y,z);
printf("你想繼續查詢么?(y表示繼續,n表示結束):");
scanf("%c",&ny);
if(ny=='n')
break;
}
break;
case 4:
while (1)
{
printf("輸入1990年1月1日以後的一個日期:");
scanf("%d,%d,%d",&year,&month,&day);
fish_or_net(year,month,day);
printf("你想繼續查詢漁人是打魚還是曬網么?(y表示繼續,n表示結束):");
scanf("%c",&ny);
if(ny=='n')
break;
}
break;
case 5:
while (1)
{
printf("確認么?y表示是的,n表示不是");
scanf("%c",&ny);
if(ny=='y')
exit(1); //表示退出程序
else if(ny=='n')
break;
}
break;
default:printf("對不起,暫時沒有這個服務");
break;
}
}
return 0;
}
『伍』 C語言編程題,編寫顯示單月的日歷,用戶指定這個月的天數和該月起始日是星期幾:
#include <stdio.h>
int main()
{
int day=0;//天數
int count=0;//起始日是星期幾
int printdays=0;//列印天數
int i;
printf("請輸入天數和起始日是星期幾:\n");
scanf("%d%d",&day,&count);
printdays=day+count-1;
//printf("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n");
for(i=1;i<=printdays;i++)
{
if(i<count)
printf("\t");
else
{
if((i-1)%7==0)
{
printf("\n");
}
printf("%d\t",i-count+1);
}
}
printf("\n");
return 0;
}
『陸』 c語言列印月歷 怎麼編寫啊~ 謝謝!
我這兒有一個萬年歷的程序,樓主可以試著編寫實現你所需要的功能。希望有所幫助。
#include<stdio.h>
#include<stdlib.h>
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int n[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
char w[7][3]={"日","一","二","三","四","五","六"};
char mon[13][7]={"","一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
/*判斷是否為閏年*/
int IsLeap(int year)
{
if((year%4==0 && year%100!=0)||(year%400==0))
return 1;
else
return 0;
}
/*計算某年某月某日是星期幾*/
int Getweekday(int year,int month,int day)
{
int weekday;
int dayCount=0;
int i;
if(IsLeap(year))
{
for(i=1;i<month;i++)
dayCount+=n[i];
}
else
{
for(i=1;i<month;i++)
dayCount+=m[i];
}
dayCount=dayCount+day;
weekday=((year-1)+(year-1)/4-(year-1)/100+(year-1)/400+dayCount)%7;
return weekday;
}
/*判斷某年某月某日是星期幾的函數*/
void SelectDay()
{
int year,month,day;
char ch;
int weekday;
printf("請輸入年月日(xxxx-xx-xx):\t");
scanf("%d-%d-%d",&year,&month,&day);
weekday=Getweekday(year,month,day);
printf("\n");
printf("%d年%d月%d日是:星期%s\n",year,month,day,w[weekday]);
printf("\n您還需要繼續查詢嗎?\t是(Y)/否(N)");
getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
SelectDay();
}
/*輸出某月的日歷*/
void GetMonth(int year,int month )
{
int weekday,i,monthday;
weekday=Getweekday(year,month,1);
printf("日\t一\t二\t三\t四\t五\t六\n");
for(i=0;i<weekday;i++)
printf("\t");
if(IsLeap(year))
monthday=n[month];
else
monthday=m[month];
for(i=1;i<=monthday;i++)
{
printf("%2d\t",i);
weekday++;
if(weekday%7==0)
printf("\n");
}
printf("\n");
}
/*列印某年某月日歷函數*/
void Month()
{
int year,month;
char ch;
printf("請輸入年月(xxxx-xx):\t");
scanf("%d-%d",&year,&month);
printf("\n");
GetMonth(year,month );
printf("\n您還需要繼續查詢嗎?\t是(Y)/否(N)");
getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
Month();
}
/*列印某年日歷函數*/
void Year()
{
int year,i;
char ch;
printf("請輸入年份:\n");
scanf("%d",&year);
for(i=1;i<=12;i++)
{
printf("%s\n",mon[i]);
GetMonth(year,i);
printf("\n\n");
}
printf("\n您還需要繼續查詢嗎?\t是(Y)/否(N)");
getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
Year();
}
/*退出程序*/
void Exit()
{
char ch;
getchar();
printf("是否確定退出?\t是(Y)/否(N)");
ch=getchar();
if(ch=='y'||ch=='Y')
printf("感謝您的使用!!\n\n");
exit(0);
}
/*主函數*/
void main()
{
int choice;
while(1)
{
printf("歡迎使用該系統!!\n");
printf("**===**===**===**===**===**===**===**===**===**\n");
printf("1.查詢某年某月某日是星期幾\n");
printf("2.列印某年某月的全月日歷\n");
printf("3.列印某年的全年日歷\n");
printf("4.退出系統\n");
printf("**===**===**===**===**===**===**===**===**===**\n");
printf("請輸入您需要進行的操作前面的序號: ");
scanf("%d",&choice);
switch(choice)
{
case 1:SelectDay(); break;
case 2:Month(); break;
case 3:Year(); break;
case 4:Exit(); break;
}
}
}
『柒』 c語言編寫程序「任意輸入一年份和月份,列印當月日歷。」
#include<stdio.h>
intisly(intyear)
{
return((!(year%4))&&(year%100)||(!(year%400)));
}
intmtod(intm)
{
intn=0;
switch(m)
{
case1:n=31;break;
case2:n=59;break;
case3:n=90;break;
case4:n=120;break;
case5:n=151;break;
case6:n=181;break;
case7:n=212;break;
case8:n=243;break;
case9:n=273;break;
case10:n=304;break;
case11:n=334;break;
default:n=0;
}
returnn;
}
intdmax(inty,intm)
{
if(m==2)
{
return28+(isly(y));
}
if((m==1||m==3||m==5||m==7||m==8||m==10||m==12))
return31;
return30;
}
intday(inty,intm)
{
intlyn=0;
intdn=0;
intweekday;
staticintaday[7]={2,3,4,5,6,0,1};
if(y>=1901)
{
for(inti=1901;i<=y;i++)
{
lyn+=isly(i);
}
if(isly(y))
{
if(m<=2)
lyn--;
}
dn=(y-1901)*365+mtod(m-1)+lyn;
weekday=aday[dn%7];
}
if(y<1901)
{
for(inti=y;i<1901;i++)
{
lyn+=isly(i);
}
if(isly(y))
{
if(m>2)
lyn--;
}
dn=(1901-y)*365-mtod(m-1)+lyn;
weekday=aday[dn%7];
}
returnweekday;
}
voidprintdate(inty,intm,intwd)
{
intcd=dmax(y,m);
intmdate[40]={0};
printf("日一二三四五六 ");
for(inti=0;i<cd;i++)
{
mdate[i+wd]=i+1;
}
for(inti=0;i<cd+wd;i++)
{
if(mdate[i]==0)
printf("");
else
printf("%3d",mdate[i]);
if((i+1)%7==0)
printf(" ");
}
printf(" ");
}
intmain()
{
inty,m;
printf("輸入年月:");
do
{
scanf("%d%d",&y,&m);
if(m<13&&m>0)
{
printf(" ");
printdate(y,m,day(y,m));
break;
}
else
printf("輸入不合法,請重新輸入:");
}
while(1);
return0;
}
『捌』 求一個輸入年月日,可以顯示該月份日歷的C語言程序! 求大神幫忙,謝謝!
#include<stdio.h>
/*得到所輸入年月的第一天是星期幾0~6*/
intgetdate(inty,intm);
/*判斷所輸入的是否是閏月,是則返回1,否則返回0*/
intleap(inty);
/*列印輸入月份月歷表*/
voidprint(inty,intm);
intmain()
{
inty,m;
printf("輸入年份和月份:");
scanf("%d%d",&y,&m);
print(y,m);
return0;
}
intgetdate(inty,intm)
{
intw=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7;
intdays=0;
switch(m)
{
case12:days+=30;
case11:days+=31;
case10:days+=30;
case9:days+=31;
case8:days+=31;
case7:days+=30;
case6:days+=31;
case5:days+=30;
case4:days+=31;
case3:if(leap(y))days+=29;
elsedays+=28;
case2:days+=31;
case1:days+=0;
}
w=(w+days)%7;
returnw;/*返回輸入月份1號的星期*/
}
voidprint(inty,intm)
{
intw=getdate(y,m);
printf("%d年%d月的月歷表: ",y,m);
printf(" ==========================="
"======================== ");
intmonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(leap(y))month[1]=29;
printf("SUN MON TUE WED THU FRI SAT ");
inti,j;
for(i=0;i<w;i++)printf(" ");
for(i=w,j=1;j<=month[m-1];i++,j++)
{
if(i%7==0)printf(" ");
printf("%d ",j);
}
printf(" ========================"
"=========================== ");
}
intleap(inty)
{
if((y%4==0&&y%100!=0)||y%400==0)return1;
return0;
}
『玖』 c語言 高手們 幫幫我吧 做一個日歷 輸入 年月 輸出 該年該月的 日歷
#include<stdio.h>
#include<time.h>
main(){
//定義變數
struct tm t,*date;
time_t t_day;
int year,month;
int month_day;
int i,j;
struct tm *local;
time_t t_mow;
t_mow=time(NULL);
local=gmtime(&t_mow);
//輸入年份和月份
printf("請輸入年份:\n");
scanf("%d",&year);
printf("請輸入月份:\n");
scanf("%d",&month );
if(month==2 ){
if(year%4==0 && year%100!=0)
month_day=29;
else
month_day=28;
}
else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
month_day=31;
}
else
month_day=30;
printf("當前時間是: ");
printf(asctime(local));
printf("\n\n");
printf("當月天數是:%d \n\n 日歷\n",month_day); //輸出當前天數
printf("一\t二\t三\t四\t五\t六\t日\t\n"); //日歷的第一行,顯示一二三四五六日
for (i=1;i<=month_day;i++)
{
t.tm_year=year-1900;
t.tm_mon=month-1;
t.tm_mday=i;
t.tm_hour=0;
t.tm_min=0;
t.tm_sec=0;
t.tm_isdst=0;
t_day=mktime(&t);
date=gmtime(&t_day);
if(i==1)
{
for(j=0;j<date->tm_wday;j++)
printf("\t");
}
if(date->tm_wday==6)
{
printf("%d\n",i);
}
else
printf("%d\t",i);
}
printf("\n\n",i);
}
『拾』 用C語言編寫一個日歷
# include <stdio.h>
# include <math.h>
void printmonth(int m);
void printhead(int m);
int daysofmonth(int m);
int firstday(int y);
int year,weekday;
void main()
{
int i;
printf("請輸入年份:");
scanf("%d",& year);
weekday=firstday(year);
printf("\n\n");
printf(" %d年\n",year);
for(i=1;i<=12;i++)
{
printmonth(i);
printf("\n");
}
printf("\n\n");
}
void printmonth(int m) //列印每月日歷
{
int i,days;
printhead(m);
days=daysofmonth(m);
for(i=1;i<=days;i++)
{
printf("%5d",i);
weekday=(weekday+1)%7;
if (weekday==0) printf("\n ");
}
}
void printhead(int m) //列印每月的日歷頭(判定起始位置)
{
int i;
printf("\n%d月 日 一 二 三 四 五 六\n",m);
printf(" ");
for(i=0;i<weekday;i++)
printf(" ");
}
int daysofmonth(int m) //每月的天數
{
switch (m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:return 31;
case 4:
case 6:
case 9:
case 11:return 30;
case 2:if (((year%4==0 && year%100!=0)||year%400==0))
return 29;
else
return 28;
default: return 0;
}
}
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;
}