PIC16F877A LCD1602液晶式萬(wàn)年歷

成都創(chuàng)新互聯(lián)長(zhǎng)期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為新民企業(yè)提供專(zhuān)業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè),新民網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
默認(rèn)分類(lèi) 2011-03-23 23:27:51 閱讀10 評(píng)論0 ??字號(hào):大中小?訂閱
#includepic.h#define uchar unsigned char#define uint? unsigned int#define RS RA1#define RW RA2#define E? RA3#define s1 RB1#define s2 RB2#define s3 RB3?__CONFIG(0x1832);int Hours=0;//定義小時(shí)int Minutes=0;//定義分鐘int Seconds=0;//定義秒int Day=20;int Months=03;int Years=2011;const char Table[]="0123456789";?? ////1602:0-9 數(shù)字uint Y[16]; //8字節(jié)的顯示緩沖區(qū)uchar set_2=0;int incone(int n);int decone(int m);void delay(uint x)///延時(shí)?{?uint a,b;? for(a=x;a0;a--)?? for(b=30;b0;b--);? ?}
void interrupt time0 (){uchar temp,intnum;??? T0IF=0;??? TMR0=63;??? intnum++;?? if(intnum==40)???? {???intnum=0;??????? Seconds++;??if(Seconds==60)??? {???Seconds=0;???Minutes++;???if(Minutes==60)???? {????Minutes=0;????Hours++;????if(Hours==24)????? {?????Hours=0;??????????????????? Day++;????????????????? if(Day==31)??????????????????? {?????? Day=0;????????????????????? Months++;??????????????????? ???????????????????? if(Months==12)?????????????????????? {???????????????????????? Months=0;???????????????????????? Years++;?????????????????????? } ??????????????????? }???????????????? }???????????? ???? }??? }???? }? }
void write_Directive(uchar a)//寫(xiě)指令{RS=0;RW=0;delay(1);E=0;PORTD=a;delay(1);E=1;delay(1);E=0;delay(1);}
void write_Data(uchar a)//寫(xiě)數(shù)據(jù){RS=1;RW=0;delay(1);E=0;PORTD=a;delay(1);E=1;delay(1);E=0;delay(1);
}void init()//初始化{ ? ADCON1=0X07;? PORTB=0xFF;? TRISB=0XFF;? PORTC=0x00;? TRISC=0X00;? TRISD=0;? TRISA=0;? OPTION=0X06;? TMR0=63;? INTCON=0XA0;Y[14]=':';delay(15);write_Directive(0x38);delay(5);write_Directive(0x38);delay(5);write_Directive(0x38);write_Directive(0x01);write_Directive(0x02);//初始化后數(shù)據(jù)地址為0x80;即第一行,第一個(gè)位置write_Directive(0x0c);//不顯示光標(biāo)}
void write_Data_String()//顯示時(shí)間函數(shù){ Y[0]=Hours/10;//轉(zhuǎn)換成10進(jìn)制顯示Y[1]=Hours%10;Y[2]=Minutes/10;Y[3]=Minutes%10;Y[4]=Seconds/10;Y[5]=Seconds%10;Y[6]=Years/1000;Y[7]=Years/100%10;Y[8]=Years/10%10;Y[9]=Years%10;//Y[6]=Years/1000;//Y[7]=Years%1000/100;//DispBuf[8]=Years%100/10;//DispBuf[9]=Years%10;Y[10]=Months/10;Y[11]=Months%10;Y[12]=Day/10;Y[13]=Day%10;Y[14]=':';Y[15]='.';Y[0]=Table[Y[0]];//查表取字符Y[1]=Table[Y[1]];Y[2]=Table[Y[2]];Y[3]=Table[Y[3]];Y[4]=Table[Y[4]];Y[5]=Table[Y[5]];Y[6]=Table[Y[6]];//查表取字符Y[7]=Table[Y[7]];Y[8]=Table[Y[8]];Y[9]=Table[Y[9]];Y[10]=Table[Y[10]];Y[11]=Table[Y[11]];Y[12]=Table[Y[12]];Y[13]=Table[Y[13]];write_Directive(0x80+0x04);//第一行,第五個(gè)位置地址
write_Data(Y[0]);//第一行,第五個(gè)位置write_Data(Y[1]);//第一行,第六個(gè)位置
write_Data(Y[14]);//第一行,第七個(gè)位置
write_Data(Y[2]);//第一行,第八個(gè)位置write_Data(Y[3]);//第一行,第九個(gè)位置
write_Data(Y[14]);//第一行,第十個(gè)位置
write_Data(Y[4]);//第一行,第十一個(gè)位置write_Data(Y[5]);//第一行,第十二個(gè)位置
write_Directive(0x80+0x43);//第二行,第四個(gè)位置地址
write_Data(Y[6]);//第二行,第四個(gè)位置write_Data(Y[7]);//第二行,第五個(gè)位置write_Data(Y[8]);//第二行,第六個(gè)位置write_Data(Y[9]);//第二行,第七個(gè)位置
write_Data(Y[15]);//第二行,第八個(gè)位置
write_Data(Y[10]);//第二行,第九個(gè)位置write_Data(Y[11]);//第二行,第十個(gè)位置
write_Data(Y[15]);//第二行,第十一個(gè)位置
write_Data(Y[12]);//第二行,第十二個(gè)位置write_Data(Y[13]);//第二行,第十三個(gè)位置}void key_set() //時(shí)間按鍵設(shè)置{if(s1 == 0){?? delay(20);?? if(s1 == 0)?? {??? set_2++;??? while(!s1);??? if(set_2 == 8)??? {???? set_2 = 0;??? }?? }}}void set_time()?? //設(shè)置時(shí)間函數(shù){?? if(set_2==1)???? {????? RC0=1;???? }?? ?? if(set_2==2)????????? ////s2即RB1按1次調(diào)秒???? {???? Seconds=incone(Seconds);???? if(Seconds59)????? {?????? Seconds=0;????? }??? Seconds=decone(Seconds);??? if(Seconds0)????? {?????? Seconds=59;????? } ???? }??? if(set_2==3)???????????? ////s2即RB1按2次調(diào)分??? {???? Minutes=incone(Minutes);???? if(Minutes59)?????? {??????? Minutes=0;?????? }??? Minutes=decone(Minutes);??? if(Minutes0)?????? {?????? Minutes=59;?????? } ??? } ?? if(set_2==4)???????????? ////s2即RB1按3次調(diào)時(shí)?? {??? Hours=incone(Hours);??? if(Hours23)??? {???? Hours=0;??? }??? Hours=decone(Hours);??? if(Hours0)??? {???? Hours=23;??? }?? } ????? if(set_2==5)????????? ////s2即RB1按4次調(diào)天???? {???? Day=incone(Day);???? if(Day31)????? {?????? Day=1;????? }??? Day=decone(Day);??? if(Day1)????? {?????? Day=31;????? }???? }??? if(set_2==6)???????????? ////s2即RB1按4次調(diào)月??? {???? Months=incone(Months);???? if(Months12)?????? {??????? Months=1;?????? }??? Months=decone(Months);??? if(Months1)?????? {??????? Months=12;?????? } ??? } ?? if(set_2==7)???????????? ////s2即RB1按5次調(diào)年?? {??? Years=incone(Years);??? if(Years2050)??? {???? Years=1986;??? }??? Years=decone(Years);??? if(Years1986)??? {???? Years=2010;??? }?? }?? }
int incone(int n)?? //加“1”函數(shù){?if(s2==0)? { ?? delay(20);?? if(s2==0)?? {??? n++; ??? while(!s2);???? write_Data_String();?? }? }}
int decone(int m)??? //減“1”函數(shù){?if(s3==0)?{?? delay(20);?? if(s3==0)?? {??? m--;??? while(!s3);??? write_Data_String();?? }?}}void main(){init();while(1)?? {?? key_set();?? set_time();?? write_Data_String();?? }}
這個(gè)題用循環(huán)語(yǔ)句比較簡(jiǎn)單,遞歸的話稍微復(fù)雜點(diǎn),下面是我剛寫(xiě)的:
Hand和Hand2是遞歸函數(shù);Test是測(cè)試函數(shù),用來(lái)檢驗(yàn)x1,x2,x3的值是否滿足條件,滿足的話輸出(這個(gè)函數(shù)不是重點(diǎn),我只寫(xiě)了句提示,你把它補(bǔ)充完整就行);fun函數(shù)直接調(diào)用Hand函數(shù),主函數(shù)中把fun函數(shù)放進(jìn)去就行了。
void fun(bool x1,bool x2,bool x3){
static int count=0;
Hand(x1,x2,x3,count);
}
void Test(bool X,bool Y,bool Z){ //測(cè)試函數(shù)
if((x1 || !x2 || x3)(!x1 || x2 || x3)) ..... 輸出X,Y,Z的值
}
bool Hand2(int x){ //遞歸函數(shù),按順序?yàn)閤1x2x3賦值
if(x=0) return false;
ruturn !Hand(x-1);}
void Hand(bool x1,bool x2,bool x3,count) //遞歸函數(shù),依次賦值并檢測(cè)(調(diào)用了Hand2和Test)
{
if (count=8) return ;
x1=Hand2(count%4);x2=Hand2(count%2);x3=Hand2(count);
Test(x1,x2,x3);
Hand(x1,x2,x3,count++);
}
采用就給分吧。
#include"stdio.h"
#include"stdlib.h"
main( )
{
int Year,Month; //年、月
int FirstDay_Year,FirstDay_Month; //某年的第一天是星期幾,某年某月的第一天是星期幾(范圍是0~6,其中0代表星期日)
int IsLeapYear; //是否為閏年,0表示不是閏年,1表示是閏年
int i,d,y; //臨時(shí)變量
char YN; //Yes No,程序是否要繼續(xù)
int Days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//Days[1~12]存儲(chǔ)每個(gè)月有多少天,其中二月的天數(shù)是可變的(閏年29天,平年28天),這里初始化為28天
printf(" C語(yǔ)言簡(jiǎn)單萬(wàn)年歷\n"); //打印標(biāo)題
XunHuan: //循環(huán)標(biāo)號(hào)(可以通過(guò)goto跳轉(zhuǎn)到這里)
printf("請(qǐng)輸入年份: "); //提示輸入年份(0~9999)
scanf("%d",Year); //把輸入的年份賦值給變量Year
printf("請(qǐng)輸入月份: "); //提示輸入月份(1~12)
scanf("%d",Month); //把輸入的月份賦值給變量Month
y=Year;
FirstDay_Year=5*(y/4)+(y%4)-(y/100)+(y/400);//蔡勒公式(計(jì)算某年的第一天是星期幾)
IsLeapYear=(y%4==4y%100!=100||y%400==0)?1:0;
//判斷是否為閏年
Days[2]=(IsLeapYear==1)?29:28; //閏年二月29天,非閏年二月28天
for(i=1,d=0;iMonth;i++)
d=d+Days[i];
FirstDay_Month=(d+FirstDay_Year)%7; //當(dāng)月的第一天是星期幾(0代表星期日)
printf("\n****************************************************\n");
printf("\t\t公元 %d 年 %2d 月",Year,Month); //打印年月
printf("\n****************************************************\n");
printf(" 星期日 星期一 星期二 星期三 星期四 星期五 星期六\n");
//打印星期表頭
for(i=0;iFirstDay_Month;i++)
printf("%7c",' '); //當(dāng)某月的第一天不是星期日時(shí)打印空格占位
for(d=1;d=Days[Month];d++) //循環(huán),從每個(gè)月的第一天開(kāi)始打印
{
printf("%7d",d);
if(((d+FirstDay_Month)%7)==0 dDays[Month])
printf("\n"); //當(dāng)輸出了星期六而且還未輸出所有天數(shù)時(shí),換行
}
printf("\n****************************************************\n");
printf("\n");
printf("是否繼續(xù)(Y/N)?\n");
scanf("%c",YN);
scanf("%c",YN);
if(YN=='Y' || YN=='y')
goto XunHuan;
}
遞歸函數(shù)有三點(diǎn)要求:
1,遞歸的終止點(diǎn),即遞歸函數(shù)的出口
2,不斷的遞歸調(diào)用自身
3,遞歸函數(shù)主體內(nèi)容,即遞歸函數(shù)需要做的事情
ps:3一般可以放在2的前面或者后面,一般1放最前面。另外,2和3可以根據(jù)不同的需要合并,比如,有時(shí)候遞歸函數(shù)的主體就是返回調(diào)用下層函數(shù)所得到的結(jié)果。
具體例子如下:
void?fun(int?n)
{
if(n=0)?return;???//1?這是遞歸的終點(diǎn),即出口
fun(n-1);????????//2、遞歸函數(shù)自身的調(diào)用
coutnendl;?????//3?遞歸函數(shù)的主體內(nèi)容
}
2,3合并的情況
int?fun(int?n)
{
if(n=0)?return?0;
return?fun(n-1)+fun(n-2);??//2?3合并
}
C語(yǔ)言設(shè)計(jì)簡(jiǎn)單萬(wàn)年歷源代碼[含陽(yáng)歷陰歷轉(zhuǎn)化、密碼登陸功能]
C語(yǔ)言課程設(shè)計(jì)簡(jiǎn)單萬(wàn)年歷源代碼[含陽(yáng)歷陰歷轉(zhuǎn)化、密碼登陸功能]發(fā)布:極樂(lè)鳥(niǎo) | 發(fā)布時(shí)間: 2009年6月23日
萬(wàn)年歷
一.基本要求
1. 萬(wàn)年歷是簡(jiǎn)單實(shí)用的單機(jī)軟件。考慮到學(xué)生們對(duì)日歷的認(rèn)知比較熟悉,所以需要他們實(shí)現(xiàn)日歷的諸多功能。在編碼前先提供清晰的設(shè)計(jì)框架,再用C語(yǔ)言的程序源完成主要模塊的詳細(xì)設(shè)計(jì)。即:先構(gòu)想好流程圖,然后利用流程圖編寫(xiě)C語(yǔ)言源代碼,編寫(xiě)的源代碼在TC上運(yùn)行,運(yùn)行通過(guò)后再進(jìn)行測(cè)試。
2. 一人一組完成程序的分析和編碼。
3. 熟悉各個(gè)流程步驟,理解各個(gè)環(huán)節(jié)之間的控制流程。
4. 熟練掌握TC或Visual C++下C程序的運(yùn)行環(huán)境。
5. 熟練掌握C語(yǔ)言,調(diào)用子程序和函數(shù)進(jìn)行讀寫(xiě)數(shù)據(jù)的操作。程序編寫(xiě)過(guò)程中必須用到函數(shù)、指針、文件操作等C語(yǔ)言技能。
二、任務(wù)分解
本軟件能查詢(xún)0~20000年的公歷并能查詢(xún)1900-2200年的農(nóng)歷,是真正的“萬(wàn)年歷”。
1. 顯示封面模塊(初始界面)
(1)執(zhí)行本軟件后首先顯示歡迎信息、版本號(hào)、作者姓名、日期及其它信息。
(2)進(jìn)入方式:按回車(chē)進(jìn)入日歷系統(tǒng),按‘ESC’鍵退出。
2. 密碼檢測(cè)模塊
(1)進(jìn)入日歷系統(tǒng)時(shí),需要密碼驗(yàn)證,若密碼輸入正確則課選擇進(jìn)入日歷系統(tǒng)或進(jìn)入重設(shè)新密碼頁(yè)面,否則若密碼輸入連續(xù)3次錯(cuò)誤按任意鍵退出程序。
(2)若需重設(shè)新密碼,則按‘Y’鍵即進(jìn)入重設(shè)新密碼系統(tǒng)。
(3)在重設(shè)新密碼時(shí),要求輸入正確的舊密碼2次,才能輸入新密碼進(jìn)行重設(shè)。
(4)若輸入舊密碼3次錯(cuò)誤,重設(shè)新密碼失敗,按任意鍵退出到初始界面。
(5)定義文件指針,用來(lái)讀取密碼文件中的密碼數(shù)據(jù)和將新的密碼數(shù)據(jù)寫(xiě)入密碼文件。
3. 查詢(xún)顯示日歷模塊
(1)查詢(xún)并顯示某一個(gè)月的日歷(公歷);
(2)查詢(xún)并顯示某一年的日歷(公歷);
(3)查詢(xún)并顯示某一天是星期幾,屬于該月的第幾個(gè)星期;
(4)查詢(xún)并顯示某一天是該年的第幾天;
(5)查詢(xún)并顯示某一天對(duì)應(yīng)的農(nóng)歷是哪一天;
(6)能夠查詢(xún)中國(guó)傳統(tǒng)的24節(jié)氣所對(duì)應(yīng)的公歷和農(nóng)歷
(7)當(dāng)所查詢(xún)?nèi)諝v完成,按上下光標(biāo)鍵可以進(jìn)行向前向后翻屏查詢(xún);按‘ENTER’鍵重新輸入年月,進(jìn)行新的查詢(xún);按‘ESC’鍵退出程序。
4. 特殊功能模塊:用函數(shù)實(shí)現(xiàn)特殊功能子模塊(子程序)。
(1)通過(guò)文件操作設(shè)置自己的備忘錄;
(2)中國(guó)傳統(tǒng)節(jié)日自動(dòng)提醒或特殊顯示。
5. 學(xué)生們可以自由發(fā)揮增添更豐富的功能。
#include stdio.h
int day,year,month;
int isLeap()
{int isleap;
if(((year%4==0)!(year%100==0))||(year%400==0))isleap=1;
else isleap=0;
return isleap;}
int lastdayofmonth()
{int lastday,isleap;
switch (month)
{case 1: case 3: case 5: case 7:case 8: case 10: case 12: lastday=31;break;
case 4: case 6: case 9: case 11: lastday=30;break;
case 2: {isleap=isLeap();
if (isleap==1) lastday=29;
else lastday=28;}}
return lastday;}
int ValidDate()
{int valid;
int yearOK,monthOK,dayOK;
if ((year1811)(year=2012)) yearOK=1;
else yearOK=0;
if ((month0)(month=12)) monthOK=1;
else monthOK=0;
if ((day0)(day=lastdayofmonth())) dayOK=1;
else dayOK=0;
if(yearOK monthOK dayOK) valid=1;
else valid=0;
return valid;}
int getday(){printf("Enter a month/a day/a year");scanf("%d %d %d",month,day,year);
return ValidDate();}
void incrementdate()
{if (daylastdayofmonth()) day+=1;
else
{day=1;
if (month==12)
{month=1;year+=1;}
else month+=1;}}
void print()
if (ValidDate())printf("nextday is %d/%d/%d",month,day,year);elseprintf("Date error");}
void main(){getday();incrementdate();print();}
補(bǔ)充一下,又發(fā)現(xiàn)一個(gè)問(wèn)題。輸入之后雖然你做了輸入檢查,但是現(xiàn)在的寫(xiě)法,這個(gè)檢查起不到任何作用。可以把main里的getday();改寫(xiě)成if(getday()==0){printf("Date error");return;}意思是如果輸入的日期不正常的話打出出錯(cuò)信息并結(jié)束程序
主要功能包括
1.查詢(xún)某年某月每一天對(duì)應(yīng)星期幾
2.可以查詢(xún)某年某月的上個(gè)月或是下個(gè)月的日歷情報(bào)
3.查詢(xún)某年某月某日是這一年的第幾天,并查詢(xún)改天是星期幾
4.判斷該年是閏年還是平年,判斷這一年的生肖
#include stdio.h
#include conio.h
#include dos.h
void rili(int,int);
int runniansub(int);
int week(int,int,int);
int monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{ struct date d;
getdate(d);
printf("今天是:%d年 %d月 %d日\(chéng)n",d.da_year,d.da_mon,d.da_day);
rili(d.da_year,d.da_mon-1);
system("pause");
return 0; }
void rili(int year,int month)
{ int d,w,i,s,c,p;
char x;
while(month11) {
month-=12;
year++; }
while(month0) { year--;
month+=12; }
if(runniansub(year)) monthday[1]=29;
printf("%d年%d月\n",year,month+1);
printf("S M T W T F S\n");
s=week(year,month+1,1);
for(i=0; i3*s; i++ ) printf(" ");
c=s;
for(d=1;d=monthday[month];d++) {
if(c6) {
printf("\n");
c=0; }
c++;
printf("%d",d);
printf("%s",(d10)?" ":" "); }
printf("\n");
printf("下月N,上月P,退出Q");
x=getch();
printf("%c\n",x);
if(x=='N' || x=='n') { rili(year,month+1); }
else if(x=='P' || x=='p') { rili(year,month-1); }
else { printf("感謝使用!88\n"); return;} }
int runniansub(int year)
{ return ((year%4==0 year%100!=0) || (year%4==0 year%400==0)); }
int week(int y,int m,int d)
{ if((m==1)||(m==2)) {
m+=12;
y--; }
return ((d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)+1)%7;
#include stdio.h
int IsLeapYear(int); /*定義子函數(shù)*/
main()
{int i,day,year,temp,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("We know that 2000.01.01 is saturday!\n");
printf("Please enter the year and month:"); /*提示信息*/
while(1)
{scanf("%d %d",year,temp);
if(getchar()=='q')
exit(0);
while(Year_Start year)
{ if(IsLeapYear(Year_Start)) /*調(diào)用IsLeapYear函數(shù)判斷是否為
閏年*/
Per_Year_Days=366; /*閏年一年366天*/
else
Per_Year_Days=365; /*平年一年365天*/
Year_days=Year_days + Per_Year_Days;
Year_Start++;
} /*輸出每個(gè)月的日歷*/
// for(temp=1;temp=12;temp++)
{switch(temp)
{ 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("Auguest (%d) \n",year); break;
case 9: printf("September (%d) \n",year);break;
case 10:printf("October (%d) \n",year);break;
case 11:printf("Novermber (%d) \n",year); break;
case 12:printf("December (%d) \n",year); break;
default:printf("error\n");
}
i=Year_days%7;
printf("Mon Tue Wed Thu Fri Sat Sun\n"); /*星期提示信息*/
if(i!=0)
for(temp_i=0;temp_ii;temp_i++)
printf(" ");
day=1;
if(IsLeapYear(year)temp==2)
while(day=month_day[12])
{if(day1)
if(Year_days%7==0)
printf("\n");
if(day=10)
printf("%d ",day);
else
printf("%d ",day);
Year_days++;
day++;}
else
while(day=month_day[temp-1])
{ if(day1)
if(Year_days%7==0)
printf("\n");
if(day=10)
printf("%d ",day);
else
printf("%d ",day);
Year_days++;
day++; } /*依次輸入日期*/
printf("\n") ;}}}
int IsLeapYear(int year) /*判斷是否是閏年*/
{ if((year%4==0)(year%100!=0)||(year%400==0))
return 1;
else
return 0;}}
#include stdio.h
int leap (int year)
{if(year%4==0year%100!=0||year%400==0) //判斷是否是閏年
return 1;
else return 0; }
int days_month (int month,int year) //判斷大月和小月
{ if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) //找出大月
return 31;
if(month==4||month==6||month==9||month==11) //找出小月
return 30;
if(month==2leap(year)==1) return 29; //判斷二月是29天還是29天
else return 28; }
int firstday(int month,int year)
{int w;
w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1; //判斷每個(gè)月開(kāi)始的第一天是星期幾
return w; }
main()
{int i,j=1,k=1,a,b,month,year;
printf("\n input month and year:\n");
scanf("%d%d",month,year); //輸入月和年
b=days_month(month,year);
a=firstday (month,year);
printf(" Sun Mon Tue Wed Thu Fri Sat \n"); //輸出對(duì)應(yīng)當(dāng)月的日歷
if(a==7)
{for(i=1;i=b;i++)
{printf("%4d",i);
if(i%7==0)
{printf("\n"); } } }
if(a!=7)
{while (j=4*a)
{printf(" ");
j++; }
for(i=1;i=b;i++)
{printf("%4d",i);
if(i==7*k-a)
{printf("\n");
k++; } } }
printf("\n"); }
PS:這份是山東交通學(xué)院信息工程系電氣類(lèi)專(zhuān)業(yè)2009年6月C語(yǔ)言課程設(shè)計(jì)的題目之一。以上程序核心是一學(xué)妹寫(xiě)的,因?yàn)樗龑?xiě)出后出現(xiàn)了一些bug,本人負(fù)責(zé)了調(diào)試及bug修補(bǔ)工作。
網(wǎng)頁(yè)標(biāo)題:c語(yǔ)言遞歸函數(shù)求萬(wàn)年歷,c語(yǔ)言遞歸求冪
URL分享:http://chinadenli.net/article23/dsedpcs.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)站策劃、企業(yè)建站、面包屑導(dǎo)航、網(wǎng)站營(yíng)銷(xiāo)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)