查看單個文章
舊 2006-12-30, 07:19 PM   #2 (permalink)
snoopy
註冊會員
 
snoopy 的頭像
榮譽勳章
UID - 33737
在線等級: 級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時
註冊日期: 2003-02-02
VIP期限: 2011-06
住址: 台南共和國
文章: 1831
精華: 0
現金: 12744 金幣
資產: 12834 金幣
預設

一年級剛學 C 時寫的
大概三年多了
現在看看以前寫的東西還真濫 orz
執行完之後案任一鍵結束

萬年曆會輸出到C槽
C:\萬年歷.txt

語法:
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>

int m_days(int,int);  // 回傳月份有幾天-28
int first_mon(int);  // 每年的一月一號是星期幾
int first_day(int,int);  // 回傳某個月份的一號是星期幾


main()
{
	FILE *fptr ;
	fptr = fopen ("C:\\萬年歷.txt","w");
	int y , m=1   ;  // y 年份, m 月份
	int i , j=1 ;  // 計數器
	int d , e   ;  // 一個月有days天 第一行個e格
	printf("執行完請至 C:\\萬年曆.txt\n") ;
	cout << "請輸入年份 " ;
    cin >> y ;
	do{

	i=1,j=1;

	fprintf(fptr,"\n\t\t\t\t\t%d年%d月\n",y,m) ;
	for(i=0;i<=48;i++)
		fprintf(fptr,"_");
	fprintf(fptr,"\n");

    e = first_day(y,m); // 每個月第一天
	d = m_days(y,m)+28; // 每個月有幾天

	fprintf(fptr,"\n日\t一\t二\t三\t四\t五\t六\n");

	// 第一行空白
	for(i=1;i<=e;i++)
		fprintf(fptr,"\t");

	// 第一行數字
	for(i=1;i<=7-e;i++)
		fprintf(fptr,"%d\t",i);
	fprintf(fptr,"\n");
	
	// 剩餘數字
	for(i;i<=d;i++)
	{
		if(j%7==0)
		{
			fprintf(fptr,"%d\t\n",i);
			j++ ;
		}
		else
		{
			fprintf(fptr,"%d\t",i);
			j++ ;
		}
	}
	fprintf(fptr,"\n");
	m++;
	}while(m<=12);
    cout << endl ;
	system("pause");
}

int first_mon(int y)  //每年的一月一號是星期幾
{
	int i , j=2 ;
	for(i=1;i<=(y-1980);i++)
	{
		if(i%4==1)
			j+=2;
		else
			j++ ;
	}
	return j%7;
}

int m_days(int y,int m)  //回傳月份有幾天-28
{
	switch(m)
	{
	case 1:
	case 3: 
	case 5: 
	case 7: 
	case 8: 
	case 10: 
	case 12:
		return 3;
	break;

	case 2 :
	
			if (y%4==0)
				return 1 ;
			else
				return 0 ;
		
	break ;

	default :
        return 2;
	break ;
	}
}

int first_day(int y,int m) // 每月的一號是星期幾
{
	int i ,sum=0;
	for(i=1;i<=m-1;i++)
		sum+=m_days(y,i);
    sum=(sum+first_mon(y))%7;
	return sum ;
}
語法:
					2007年1月
_________________________________________________

日	一	二	三	四	五	六
	1	2	3	4	5	6	
7	8	9	10	11	12	13	
14	15	16	17	18	19	20	
21	22	23	24	25	26	27	
28	29	30	31	

					2007年2月
_________________________________________________

日	一	二	三	四	五	六
				1	2	3	
4	5	6	7	8	9	10	
11	12	13	14	15	16	17	
18	19	20	21	22	23	24	
25	26	27	28	

					2007年3月
_________________________________________________

日	一	二	三	四	五	六
				1	2	3	
4	5	6	7	8	9	10	
11	12	13	14	15	16	17	
18	19	20	21	22	23	24	
25	26	27	28	29	30	31	
.
.
.
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
向 snoopy 送花的會員:
飛鳥 (2006-12-31)
感謝您發表一篇好文章