史萊姆論壇

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

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

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

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

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2006-12-30, 01:03 PM   #1
飛鳥
協調管理員
 
飛鳥 的頭像
榮譽勳章
UID - 23073
在線等級: 級別:72 | 在線時長:5513小時 | 升級還需:108小時級別:72 | 在線時長:5513小時 | 升級還需:108小時
註冊日期: 2003-01-07
VIP期限: 無限期
住址: 史萊姆團隊
文章: 7199
精華: 11
現金: 837 金幣
資產: 260029 金幣
預設 討論 - 出題-寫萬年曆程式,不限語言

http://netgames123.googlepages.com/year.JPG

像上圖的形式,就是會出現這個用在中間,左邊是上個月,右邊是下個月

或許可以,只要給任何一個日期,就會出現前後上個月,本月,下個月的完整月曆

上圖是我使用php寫的,歡迎大家使用別的語言寫出^^
__________________
http://flybird017.googlepages.com/quok.gif http://flybird020.googlepages.com/new321.gif
寶貝你我的地球
, 請 少開電器,減少溫室氣體排放外,多種植植物,減少列印, 多用背面,丟棄時做垃圾分類。

http://netgames123.googlepages.com/tobikeways.jpg

飛鳥 目前離線  
送花文章: 11706, 收花文章: 3363 篇, 收花: 16453 次
回覆時引用此帖
舊 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)
感謝您發表一篇好文章
舊 2007-01-04, 04:58 PM   #3 (permalink)
協調管理員
 
飛鳥 的頭像
榮譽勳章
UID - 23073
在線等級: 級別:72 | 在線時長:5513小時 | 升級還需:108小時級別:72 | 在線時長:5513小時 | 升級還需:108小時
註冊日期: 2003-01-07
VIP期限: 無限期
住址: 史萊姆團隊
文章: 7199
精華: 11
現金: 837 金幣
資產: 260029 金幣
預設

以下是我的php寫法
PHP 語法:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>萬年曆</title>
<!--不要給proxy cache圖片-->
<meta http-equiv="expires" content="0"> 
<meta http-equiv="cache-control" content="no-cache"> 
<meta http-equiv="pragma" content="no-cache">
<!--不要給proxy cache圖片結束-->
<base target="_self">
</head>

<body topmargin="0" leftmargin="0">
<div align="left">

<table border="0" width="95%" id="table3" cellspacing="0" cellpadding="0" bgcolor="#78AEFF">
<tr>
<td width="100%" align="center">
<?
if(isset($_GET['year'])){$year=$_GET['year'];}else{$year=date("Y");}
if(isset($_GET['mon'])){$mon=$_GET['mon'];}else{$mon=date("m");}
$mon=$mon;
if ($mon == 1 ||$mon == 3 ||$mon == 5||$mon == 7||$mon == 8||$mon == 10||$mon == 12){ $stop=31;
        }elseif($mon == 4||$mon == 6||$mon == 9||$mon == 11){ $stop=30;
        }else{
            if ($year % 4 > 0){$stop=28;}else{$stop=29;}
        }
        
for ($i=1;$i<=$stop;$i++){
    //計算星期開始
        if ($mon == 1){$mm=0;}
        if ($mon == 2){$mm=31;}
        if ($mon == 3){$mm=59;}
        if ($mon == 4){$mm=90;}
        if ($mon == 5){$mm=120;}
        if ($mon == 6){$mm=151;}
        if ($mon == 7){$mm=181;}
        if ($mon == 8){$mm=212;}
        if ($mon == 9){$mm=243;}
        if ($mon == 10){$mm=273;}
        if ($mon == 11){$mm=304;}
        if ($mon == 12){$mm=334;}
        $mmod=($year - 1) / 4;
        $yyod=($year - 1) * 365;
        $eeee=($mm+$mmod+$yyod+$i);
        $PPP=$eeee % 7;
        //$textt是要顯示的顏色,六日都是顯示灰色
        
        if ($PPP == 1){$week[$i]=$PPP;}//星期日
        elseif($PPP == 2){$week[$i]=$PPP;}//星期一
        elseif($PPP == 3){$week[$i]=$PPP;}//星期二
        elseif($PPP == 4){$week[$i]=$PPP;}//星期三
        elseif($PPP == 5){$week[$i]=$PPP;}//星期四
        elseif($PPP == 6){$week[$i]=$PPP;}//星期五
        elseif($PPP == 0){$week[$i]=$PPP;}//星期六
        else{$week[$i]='';}
        }
while($i<=42){$week[$i]='';$i++;}
        $j=1;
        for ($i=1;$i<=42;$i++){
        
            if (($i)%7 == $week[$j]){
            if($j<=$stop){
                $where[$i]=$j;
                $j++;
            }else{
                $where[$i]='';
                }
            
            }else{
            $where[$i]='';
            
            }
            
        }
?>


<? print "<a href=\"xx.php?year=$year&mon=$mon";
    if (isset($_GET['edit'])){print "&edit=";}
    print "\"><b>$year 年$mon 月</b></a><br>";
    ?>
<table border="1"  id="table4" cellspacing="1" cellpadding="0">
    <tr>
        <td><b><font size="4">日 </font></b> </td>
        <td><b><font size="4">一 </font></b> </td>
        <td><b><font size="4">二 </font></b> </td>
        <td><b><font size="4">三 </font></b> </td>
        <td><b><font size="4">四 </font></b> </td>
        <td><b><font size="4">五  </font></b>  </td>
        <td><b><font size="4">六  </font></b>  </td>
    </tr>
<?
$wk=1;
for($k=0;$k<=5;$k++){
print "<tr>";
    for($m=1;$m<=7;$m++){
        print "<td>";
    if (isset($_GET['edit'])){print "&edit=";}
    print "$where[$wk]</td>\n\t";$wk++;}
print    "</tr>";
}
?>
    </table>
                    </td>
飛鳥 目前離線  
送花文章: 11706, 收花文章: 3363 篇, 收花: 16453 次
回覆時引用此帖
舊 2007-01-04, 06:39 PM   #4 (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 金幣
預設

換我出個題目

寫ㄧ支程式

可以讓機器一直吐錢 Orz
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
舊 2007-01-04, 08:09 PM   #5 (permalink)
管理版主
 
superxboy 的頭像
榮譽勳章
UID - 21259
在線等級: 級別:55 | 在線時長:3359小時 | 升級還需:1小時級別:55 | 在線時長:3359小時 | 升級還需:1小時級別:55 | 在線時長:3359小時 | 升級還需:1小時級別:55 | 在線時長:3359小時 | 升級還需:1小時級別:55 | 在線時長:3359小時 | 升級還需:1小時
註冊日期: 2003-01-02
住址: 北極
文章: 10335
現金: 130 金幣
資產: 844182589 金幣
預設

引用:
作者: snoopy
換我出個題目

寫ㄧ支程式

可以讓機器一直吐錢 Orz
跟高鐵拷貝一下...而且要丟50塊進去...吐500萬出來
__________________
http://images.gamebase.com.tw/mybase/32/05/281/happy_card_000002776.jpg
愛的時候,可以不公平;不愛了、分開了,總該公平了吧

重情重義重粉味 愛台愛鄉愛查某
superxboy 目前離線  
送花文章: 3254, 收花文章: 4835 篇, 收花: 21651 次
回覆時引用此帖
舊 2007-02-16, 12:31 AM   #6 (permalink)
註冊會員
榮譽勳章
UID - 257587
在線等級: 級別:9 | 在線時長:124小時 | 升級還需:16小時級別:9 | 在線時長:124小時 | 升級還需:16小時級別:9 | 在線時長:124小時 | 升級還需:16小時級別:9 | 在線時長:124小時 | 升級還需:16小時
註冊日期: 2006-11-20
文章: 26
精華: 0
現金: 16 金幣
資產: 16 金幣
預設

如果將 NowDate = Date 改為 NowDate = DateSerial(某年, 某月, 某日) 會得到某年某月某日的月曆
以下是用VB寫的在表單載入的時候會在即時運算視窗印出月曆

語法:
Private Sub Form_Load()
   Dim NowDate As Date, L_Date As Date, N_Date As Date
   Dim NowYear As Integer, NowMonth As Integer, NowDay As Integer
   NowDate = Date '取得目前的日期資訊
   NowYear = year(NowDate)   '取出年份
   NowMonth = Month(NowDate) '取出月份
   NowDay = Day(NowDate)     '取出日
 
   L_Date = getLFirstDate(NowYear, NowMonth) '傳入目前的年月取得上個月的第一天
   N_Date = getNFirstDate(NowYear, NowMonth) '傳入目前的年月取得下個月的第一天
   Debug.Print CalendarTable(L_Date)                           '印出上個月的月曆
    Debug.Print CalendarTable(DateSerial(NowYear, NowMonth, 1)) '印出這個月的月曆
    Debug.Print CalendarTable(N_Date)                           '印出下個月的月曆
 
End Sub
 
Private Function CalendarTable(MonthFirstDay As Date) As String '產生月曆的表單
   Dim DayAmount As Integer, DayOfWeek As VbDayOfWeek
   Dim C_Year As Integer, C_Month As Integer, C_Day As Integer
   Dim i As Integer
   Dim TableBuff As String
   C_Year = year(MonthFirstDay)   '取得月曆年份
   C_Month = Month(MonthFirstDay) '取得月曆月份
   C_Day = 1 '設定起始日期為 1 日
   Rem 月曆表頭
   TableBuff = " ---------------------------- " & vbCrLf
   TableBuff = TableBuff & "|     西元 " & C_Year & " 年 "
   If C_Month < 10 Then TableBuff = TableBuff & " "
   TableBuff = TableBuff & C_Month & " 月     |" & vbCrLf
   TableBuff = TableBuff & " ---------------------------- " & vbCrLf
   TableBuff = TableBuff & "| 日  一  二  三  四  五  六 |" & vbCrLf
   TableBuff = TableBuff & " ---------------------------- " & vbCrLf
   TableBuff = TableBuff & "|"
 
   DayOfWeek = Weekday(MonthFirstDay) '取得此月第一天為星期幾
   Rem 填充上一月份的空白日期
   i = vbSunday
   While i < DayOfWeek
       TableBuff = TableBuff & "    "
       i = i + 1
   Wend
   DayAmount = getDayAmount(C_Year, C_Month) '取得此月份的日期數
   Rem 將表單填入全部日期
   While (C_Day <= DayAmount)
       If DayOfWeek = vbSunday Then TableBuff = TableBuff & "|" '每星期行的最前面加上 | 當外框
       If C_Day < 10 Then TableBuff = TableBuff & " "           '當日期小於10時最前面填充一個空白
       TableBuff = TableBuff & " " & C_Day & " "                '填入日期
       C_Day = C_Day + 1
       DayOfWeek = DayOfWeek + 1
       Rem 每星期行的結尾加上 | 當外框
       If DayOfWeek > vbSaturday Then
           DayOfWeek = vbSunday
           TableBuff = TableBuff & "|" & vbCrLf
       End If
   Wend
   Rem 填充下一月份的空白日期
   If DayOfWeek > vbSunday Then '當最後一天不為星期六時填充至星期六
       For i = DayOfWeek To vbSaturday
           TableBuff = TableBuff & "    "
       Next
       TableBuff = TableBuff & "|" & vbCrLf '加上最後的外框
   End If
   TableBuff = TableBuff & " ---------------------------- " & vbCrLf '加上底框
   Rem 回傳產生的表單
   CalendarTable = TableBuff
End Function
Private Function getLFirstDate(NowYear As Integer, NowMonth As Integer) As Date '取得上個月第一天的日期
   Dim L_Year As Integer, L_Month As Integer
   L_Year = NowYear       '年份設為與這個月同年
   L_Month = NowMonth - 1 '月份設為這個月減一個月
   Rem 當月份為上一年的時候要調整月份為 12 月且年份要減 1
   If L_Month < 1 Then
       L_Month = 12
       L_Year = L_Year - 1
   End If
   getLFirstDate = DateSerial(L_Year, L_Month, 1)
End Function
Private Function getNFirstDate(NowYear As Integer, NowMonth As Integer) As Date '取得下個月第一天的日期
   Dim N_Year As Integer, N_Month As Integer
   N_Year = NowYear       '年份設為與這個月同年
   N_Month = NowMonth + 1 '月份設為這個月加一個月
   Rem 當月份為下一年的時候要調整月份為 1 月且年份要加 1
   If N_Month > 12 Then
       N_Month = 1
       N_Year = N_Year + 1
   End If
   getNFirstDate = DateSerial(N_Year, N_Month, 1)
End Function
Private Function getDayAmount(YearVal As Integer, MonthVal As Integer) As Integer '取得某年某月的天數
   If MonthVal = 2 Then
       getDayAmount = 28 + ((((YearVal Mod 4) = 0) And ((YearVal Mod 100) <> 0)) Or ((YearVal Mod 400) = 0) And &H1) '月份為 2 檢查是否為閏年並做調整
   Else
       getDayAmount = 30 + ((((MonthVal And &H1) = &H1) Xor (MonthVal > 7)) And &H1)                               '不為 2 月則天數在 7 月前奇數月為 31 天,在 7 月後偶數月為 31 天
   End If
End Function
輸出結果大概像下面那樣
語法:
---------------------------- 
|     西元 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 |
 ---------------------------- 
wenneng 目前離線  
送花文章: 2, 收花文章: 7 篇, 收花: 8 次
回覆時引用此帖
向 wenneng 送花的會員:
飛鳥 (2007-02-16)
感謝您發表一篇好文章
舊 2007-02-25, 01:13 PM   #7 (permalink)
註冊會員
榮譽勳章
UID - 401
在線等級: 級別:10 | 在線時長:148小時 | 升級還需:17小時級別:10 | 在線時長:148小時 | 升級還需:17小時級別:10 | 在線時長:148小時 | 升級還需:17小時級別:10 | 在線時長:148小時 | 升級還需:17小時級別:10 | 在線時長:148小時 | 升級還需:17小時
註冊日期: 2002-12-06
VIP期限: 2009-08
住址: 高雄市
文章: 359
精華: 0
現金: 5897 金幣
資產: 10897 金幣
預設

在此討論區中沒有列出LabVIEW這個程式語言,但是我也來分享一下相關程式碼,以下使用ActiveX控制項來達成相關功能
執行結果
http://img83.imageshack.us/img83/2531/calender1du4.th.jpg
程式碼
http://img83.imageshack.us/img83/7385/calender2ku4.jpg
ancle 目前離線  
送花文章: 4, 收花文章: 6 篇, 收花: 12 次
回覆時引用此帖
舊 2007-02-26, 09:20 AM   #8 (permalink)
協調管理員
 
飛鳥 的頭像
榮譽勳章
UID - 23073
在線等級: 級別:72 | 在線時長:5513小時 | 升級還需:108小時級別:72 | 在線時長:5513小時 | 升級還需:108小時
註冊日期: 2003-01-07
VIP期限: 無限期
住址: 史萊姆團隊
文章: 7199
精華: 11
現金: 837 金幣
資產: 260029 金幣
預設

引用:
作者: ancle
在此討論區中沒有列出LabVIEW這個程式語言,但是我也來分享一下相關程式碼,以下使用ActiveX控制項來達成相關功能
執行結果
http://img83.imageshack.us/img83/2531/calender1du4.th.jpg
程式碼
http://img83.imageshack.us/img83/7385/calender2ku4.jpg
這個喔,labview我也用過,覺得功能比較偏硬體的,是圖示化的寫程式介面

目前應該還是7.1的開發版本吧
飛鳥 目前離線  
送花文章: 11706, 收花文章: 3363 篇, 收花: 16453 次
回覆時引用此帖
舊 2007-03-04, 09:42 PM   #9 (permalink)
註冊會員
榮譽勳章
UID - 401
在線等級: 級別:10 | 在線時長:148小時 | 升級還需:17小時級別:10 | 在線時長:148小時 | 升級還需:17小時級別:10 | 在線時長:148小時 | 升級還需:17小時級別:10 | 在線時長:148小時 | 升級還需:17小時級別:10 | 在線時長:148小時 | 升級還需:17小時
註冊日期: 2002-12-06
VIP期限: 2009-08
住址: 高雄市
文章: 359
精華: 0
現金: 5897 金幣
資產: 10897 金幣
預設

引用:
作者: 飛鳥 查看文章
這個喔,labview我也用過,覺得功能比較偏硬體的,是圖示化的寫程式介面

目前應該還是7.1的開發版本吧
labview最早是被拿來做研發工具,其實它也是一種程式語言,與其他語言並沒有多大不同,
目前最新的版本是8.2版
ancle 目前離線  
送花文章: 4, 收花文章: 6 篇, 收花: 12 次
回覆時引用此帖
發文 回覆



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

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


所有時間均為台北時間。現在的時間是 04:41 PM


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


SEO by vBSEO 3.6.1