史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2006-12-30, 07:19 PM   #2 (permalink)
註冊會員
 
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)
感謝您發表一篇好文章
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 01:37 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1