真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言年歷顯示函數(shù)介紹 C語言年歷

C語言年歷顯示程序設(shè)計(jì)

#include stdio.h

成都創(chuàng)新互聯(lián)"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實(shí)現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動(dòng)網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營銷需求!成都創(chuàng)新互聯(lián)具備承接各種類型的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)項(xiàng)目的能力。經(jīng)過10年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評(píng)。

#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) //定義函數(shù)檢測輸入年份是否為閏年

{

if((/*year%400==0*/year%4==0year%100!=0)||(year%400==0))

return (1);

// else if(year%4==0year%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表示該天在該年份的累計(jì)天數(shù)

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;imonth;i++)

d+=month_day[i];

d=d+day;*/

for(i=1;imonth;i++)

d+=month_day(year,i);

d+=day;

w=(year-1)+(int)(year-1)/4-(int)(year-1)/100+(int)(year-1)/400+d;//網(wǎng)上公式

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-b10)

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) //輸入一個(gè)年月,輸出這個(gè)月的日歷

{

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日有多少天,星期幾,以及是否是公歷節(jié)日

{

int i,a,b,c=0,d=0,days=0,m=0,n=0,t;

a=year=x?year:x;

b=yearx?year:x;

if(ab)

{

for(i=b+1;ia;i++)

c+=j_leapyear(i);

}

else c=0;

if(year!=x)

d=a-b-1;

else d=0;

m=365*d+c;

if(yearx)

{

for(i=month;i=12;i++)

n+=month_day(year,i);

days=m+n+z-day;

}

else if(yearx)

{

for(i=y;i=12;i++)

n+=month_day(x,i);

for(i=1;imonth;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號(hào)有%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==1day==1)

printf("這天是元旦節(jié)");

else if(month==2day==14)

printf("這天是情人節(jié)");

else if(month==3day==8)

printf("這天是婦女節(jié)");

else if(month==3day==12)

printf("這天是植樹節(jié)");

else if(month==4day==1)

printf("這天是愚人節(jié)");

else if(month==4day==4)

printf("這天是清明節(jié)");

else if(month==5day==1)

printf("這天是勞動(dòng)節(jié)");

else if(month==6day==1)

printf("這天是兒童節(jié)");

else if(month==8day==1)

printf("這天是建軍節(jié)");

else if(month==9day==10)

printf("這天是教師節(jié)");

else if(month==10day==1)

printf("這天是國慶節(jié)");

else if(month==12day==25)

printf("這天是圣誕節(jié)");

else printf("這天不是特殊節(jié)日");

putchar('\n');

return days;

}

void fish_or_net(int year,int month,int day) //判斷是打魚還是曬網(wǎng)

{

int q;

int i,a,b,c=0,d=0,days=0,m=0,n=0;

a=year=1990?year:1990;

b=year1990?year:1990;

if(ab)

{

for(i=b+1;ia;i++)

c+=j_leapyear(i);

}

else c=0;

if(year!=1990)

d=a-b-1;

else d=0;

m=365*d+c;

if(year1990)

{

for(i=month;i=12;i++)

n+=month_day(year,i);

days=m+n+1-day;

}

else if(year1990)

{

for(i=1;i=12;i++)

n+=month_day(1990,i);

for(i=1;imonth;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) //判斷打魚還是曬網(wǎng)

printf("漁人今天打魚");

else printf("漁人今天曬網(wǎng)");

putchar('\n');

}

/*int main() //這部分內(nèi)容用來校檢

{

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請隨便輸入一個(gè)日期,格式同上:");

scanf("%d,%d,%d",year,month,day);

jisuan_day(year,month,day,x,y,z);

// fish_or_net(x,y,z);

return 0;

} // 這部分內(nèi)容是用來檢測上述函數(shù)是否出錯(cuò)的

*/

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); //函數(shù)聲明

int option,year,month,day,x,y,z;

char ny;

system("color 1f");

while (1)

{

printf("\n\n\t 歡迎來到由...編寫的程序\n\n");

printf(" 請選擇您需要的服務(wù),輸入編號(hào)回車結(jié)束\n");

printf(" 1.輸入一個(gè)年份,輸出該年的日歷\n");

printf(" 2.輸入年月,輸出這個(gè)月的日歷。\n");

printf(" 3.輸入年月日,輸出據(jù)今天還有多久,星期幾,是否是公歷節(jié)日。\n");

printf(" 4.某人自1990年1月1日開始打魚,“三天打魚,兩天曬網(wǎng)”,輸入一個(gè)1990年以后的日期,輸出他這一天是打魚還是曬網(wǎng)。\n");

printf(" 5.退出\n");

scanf("%d",option);

switch(option) //switch分支結(jié)構(gòu)

{

case 1:

while(1) //while循環(huán),后面的1是常數(shù),表示一直到break才結(jié)束循環(huán)

{

printf("請輸入一個(gè)年份:");

scanf("%d",year);

allyear(year);

printf("你想繼續(xù)查詢?nèi)諝v么?(y表示繼續(xù),n表示結(jié)束)");

scanf("%c",ny);

if(ny=='n')

break;

}

break;

case 2:

while (1)

{

printf("輸入年月:");

scanf("%d,%d",year,month);

month_print(year,month);

printf("你想繼續(xù)查詢?nèi)諝v么?(y表示繼續(xù),n表示結(jié)束):");

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("你想繼續(xù)查詢么?(y表示繼續(xù),n表示結(jié)束):");

scanf("%c",ny);

if(ny=='n')

break;

}

break;

case 4:

while (1)

{

printf("輸入1990年1月1日以后的一個(gè)日期:");

scanf("%d,%d,%d",year,month,day);

fish_or_net(year,month,day);

printf("你想繼續(xù)查詢漁人是打魚還是曬網(wǎng)么?(y表示繼續(xù),n表示結(jié)束):");

scanf("%c",ny);

if(ny=='n')

break;

}

break;

case 5:

while (1)

{

printf("確認(rèn)么?y表示是的,n表示不是");

scanf("%c",ny);

if(ny=='y')

exit(1); //表示退出程序

else if(ny=='n')

break;

}

break;

default:printf("對不起,暫時(shí)沒有這個(gè)服務(wù)");

break;

}

}

return 0;

}

c語言年歷編程

#includestdio.h

static?int?year;

static?int?weekDay;

bool?isLeapYear(int?y)??//判斷是否是閏年

{

return(y%4==0y%100!=0||y%400==0);?//閏年的條件就是年份同時(shí)能被4和100整除或

//?者能被400整除

}

long?firstDayOfYear(int?y)???//求出輸入的那年第一天是星期幾

{

long?n;

n=y*365;

for(int?i=1;iy;i++)

if(isLeapYear(i))?

???n+=1;

return?n%=7;

}

void?printHead(int?m)??//打印每個(gè)月的標(biāo)題

{

if(m10)

?printf("????%d月???日???一???二???三???四???五???六\n",m);

else?

?printf("???%d月???日???一???二???三???四???五???六\n",m);

printf("???????");

for(int?i=0;iweekDay;i++)??

???printf("?????");

}

int?daysOfMonth(int?m)??//?判斷每個(gè)月有多少天

{

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(isLeapYear(year))?

??return?29;

else?

???return?28;

}

return?0;

}

void?printMonth(int?m)??//打印每月的日歷

{

printHead(m);

int?days=daysOfMonth(m);

for(int?i=1;i=days;i++)

{

if(i10)?

?printf("????%d",i);

else?

?printf("???%d",i);

weekDay=(weekDay+1)%7;

if(weekDay==0)

??{

printf("\n");

printf("???????");

}

}

}

void?main()??//主程序入口,接收輸入的年份,調(diào)用函數(shù)打印日歷

{

int?y;

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

scanf("%d",y);

year=y;

if(year1)

{

printf("輸入年份不能小于1\n");

return;

}

weekDay=(int)firstDayOfYear(year);

printf("???????????????????%d年\n",year);

printf("???========================================\n");

for(int?i=1;i=12;i++)

?{

printf("\n");

printMonth(i);

printf("\n");

}

}

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

C語言中有沒有能顯示系統(tǒng)日期和時(shí)間的函數(shù)?

C語言中讀取系統(tǒng)時(shí)間的函數(shù)為time(),其函數(shù)原型為:

#include time.h

time_t time( time_t * ) ;

time_t就是long,函數(shù)返回從1970年1月1日(MFC是1899年12月31日)0時(shí)0分0秒,到現(xiàn)在的的秒數(shù)??梢哉{(diào)用ctime()函數(shù)進(jìn)行時(shí)間轉(zhuǎn)換輸出:

char * ctime(const time_t *timer);

將日歷時(shí)間轉(zhuǎn)換成本地時(shí)間,按年月日格式,進(jìn)行輸出,如:

Wed Sep 23 08:43:03 2015

C語言還提供了將秒數(shù)轉(zhuǎn)換成相應(yīng)的時(shí)間結(jié)構(gòu)的函數(shù):

struct tm * gmtime(const time_t *timer); //將日歷時(shí)間轉(zhuǎn)化為世界標(biāo)準(zhǔn)時(shí)間(即格林尼治時(shí)間)

struct tm * localtime(const time_t * timer); //將日歷時(shí)間轉(zhuǎn)化為本地時(shí)間

將通過time()函數(shù)返回的值,轉(zhuǎn)換成時(shí)間結(jié)構(gòu)struct tm :

struct tm {

int tm_sec; /* 秒 – 取值區(qū)間為[0,59] */

int tm_min; /* 分 - 取值區(qū)間為[0,59] */

int tm_hour; /* 時(shí) - 取值區(qū)間為[0,23] */

int tm_mday; /* 一個(gè)月中的日期 - 取值區(qū)間為[1,31] */

int tm_mon; /* 月份(從一月開始,0代表一月) - 取值區(qū)間為[0,11] */

int tm_year; /* 年份,其值等于實(shí)際年份減去1900 */

int tm_wday; /* 星期 – 取值區(qū)間為[0,6],其中0代表星期天,1代表星期一,以此類推 */

int tm_yday; /* 從每年的1月1日開始的天數(shù) – 取值區(qū)間為[0,365],其中0代表1月1日,1代表1月2日,以此類推 */

int tm_isdst; /* 夏令時(shí)標(biāo)識(shí)符,實(shí)行夏令時(shí)的時(shí)候,tm_isdst為正。不實(shí)行夏令時(shí)的進(jìn)候,tm_isdst為0;不了解情況時(shí),tm_isdst()為負(fù)。*/

};

編程者可以根據(jù)程序功能的情況,靈活的進(jìn)行日期的讀取與輸出了。

例如:

#includetime.h

main()

{

time_t timep;

struct tm *p;

time (timep);

p=gmtime(timep);

printf("%d\n",p-tm_sec); /*獲取當(dāng)前秒*/

printf("%d\n",p-tm_min); /*獲取當(dāng)前分*/

printf("%d\n",8+p-tm_hour);/*獲取當(dāng)前時(shí),這里獲取西方的時(shí)間,剛好相差八個(gè)小時(shí)*/

printf("%d\n",p-tm_mday);/*獲取當(dāng)前月份日數(shù),范圍是1-31*/

printf("%d\n",1+p-tm_mon);/*獲取當(dāng)前月份,范圍是0-11,所以要加1*/

printf("%d\n",1900+p-tm_year);/*獲取當(dāng)前年份,從1900開始,所以要加1900*/

printf("%d\n",p-tm_yday); /*從今年1月1日算起至今的天數(shù),范圍為0-365*/

}

C語言編寫 年歷顯示程序

此題不是很難,我會(huì)前三個(gè)

關(guān)鍵是算那一年的第一天是周幾

給你個(gè)基本算法,一年是365天,閏年366天

364是7的倍數(shù),這樣一年多出一天,中間多少個(gè)閏年,在加上相應(yīng)的天數(shù)即可

400年多出來的天數(shù)是400+97=497也是7的倍數(shù),那么400年一輪回,這樣就算400年以內(nèi)的即可

一個(gè)子函數(shù),返回這一年的第一天是周幾,很好做

int ye(int year)

{

int y=year%400;

int day=y;

int i;

for(i=0;iy;i++)

if(閏年判斷)

day++;

return day%7;

}

做一個(gè)月份天數(shù)的全局?jǐn)?shù)組

int mo[12]={31,28,31,30,31,30,31,31,30,31,30,31};

需要時(shí)用一個(gè)if判斷閏年改變m0[1]的值是28還是29

打印子函數(shù),有一個(gè)小技巧,就是每個(gè)月前面的空缺部分,這個(gè)1月份是ye子函數(shù)的返回值,后面的你看和前面月份是不是重合啊,吧這個(gè)記錄下來在下一月份用即可

1 2

3 4

這樣月份排列更好打印一些,你的那個(gè)截圖有點(diǎn)麻煩

int pr(int year)

{

int k=ye(year);

int i,j,;

if(閏年判斷)

mo[1]=29;

else

mo[1]=28;

for(i=0;i12;i++)

{

printf("周幾英文的打印");

for(j=0;jk;j++)

printf("一般是四個(gè)空格,就是月份前面空缺的打印");

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");

}

}

如果像你那樣,感覺需要賦值一個(gè)大一點(diǎn)的數(shù)組,在吧數(shù)組打印出來更好,呵呵

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個(gè)月的英文字符串

const char month_str[][4]={"","Jan","Feb","Mar","Apl",

"May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};

//定義各個(gè)月的天數(shù),二月為28天, 平年

const int month_day[]={30,31,28,31,30,31,30,31,31,30,31,30,31};

//分別定義:

int i;//該變量在后續(xù)代碼中經(jīng)常被使用,為計(jì)數(shù)變量

int j;//同上

int wdays;//該變量是星期數(shù)(1至7)分別代表星期(一至日)

int mdays;//記錄所查詢的月份的天數(shù),注意該天數(shù)在一開始計(jì)算總天數(shù)days的時(shí)候并未被算入

int days;//記錄所查詢年月(從公元元年開始)的總天數(shù),比如2008年12月的days總天數(shù)計(jì)算方式為:先計(jì)算從公元1年到2007年的總天數(shù),再加上2008年前11個(gè)月的總天數(shù),至此總天數(shù)days的值還不是正確的,2008年12月份的天數(shù)尚未加上,這一點(diǎn)在(向控制臺(tái))顯示日歷的過程中將逐一加上,這一處理方法也是程序?qū)崿F(xiàn)的一個(gè)必須性要求

//從公元元年開始計(jì)算到第(year-1)年的總的天數(shù)

for(i=1,days=0;iyear;i++)

{

if(leap(i)) //閏年

{

days += 366;

}

else

{

days += 365; //平年

}

}

//再加上第year年前(month-1)個(gè)月的總天數(shù)

for(i=1;imonth;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; //此即公式核心,計(jì)算星期序號(hào),星期天為星期七

for( j = 0; j wdays; j++)

{

printf("%4c",' '); // 控制臺(tái)顯示格式需要 即空格打印

}

//定義mdays的值

if(month == 2 leap(year))

{

mdays=29;

}

else

{

mdays= month_day[month];

}

//其中 i 為月的號(hào)數(shù)

for(i=1;i=mdays;i++)

{

if( i 1 days % 7 == 0 ) //此即日歷公式核心,它是以星期為單元計(jì)算日歷,可見公元元年元旦為星期一

{

printf("\n"); //格式需要 換行

}

printf("%4d",i);

days=days+1; //此處讓days(不是完整的總天數(shù))變量逐一遞增到真正的總天數(shù)

}

printf("\n---------------------------\n");

}

/*main()

{

int year,month;

printf("輸入年和月份:");

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

show(year,month);

getchar();//暫停,讓控制臺(tái)顯示的內(nèi)容停留,鍵入任意鍵將繼續(xù)

}*/

//給個(gè)新的main()

void main()

{

int year,month;

char c;

do

{

printf("\n輸入年和月份:");

scanf("%d%d",year,month);

if(year1 || month1 || month 12)//這三個(gè)條件缺一不可

{

//錯(cuò)誤信息提示

printf("年月數(shù)據(jù)輸入有誤,請檢查!");

}

else

{

show(year,month);

}

printf("\n\n繼續(xù)查詢請輸入y");

c=getchar();

getchar();//接收鍵入y以后回車確定的字符

}while(c=='y');

}

//我已經(jīng)在VC上調(diào)試過,運(yùn)行正常

萬歷表還可以做很多擴(kuò)展,有興趣可以加我交流 QQ:805966355


分享名稱:c語言年歷顯示函數(shù)介紹 C語言年歷
鏈接分享:http://weahome.cn/article/dodcosi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部