史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 軟體應用問題討論區
忘記密碼?
註冊帳號 論壇說明 標記討論區已讀

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

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

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

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2004-04-08, 07:20 PM   #1
lirere
註冊會員
榮譽勳章

勳章總數
UID - 126175
在線等級: 級別:0 | 在線時長:4小時 | 升級還需:1小時
註冊日期: 2004-04-03
VIP期限: 2006-07
文章: 92
精華: 0
現金: 124 金幣
資產: 124 金幣
Unhappy C++程式語法"結構"問題

請問如何用C++程式語法"結構"的寫法把今年2月份的月曆跑出來呢?(包括星期?的格式)如下表:

http://home.pchome.com.tw/cool/gogomama0225/BT/QOO.bmp




我使用的是這套c++軟體->Dev C++是免費軟體有興趣的朋友可從http://www.bloodshed.net/devcpp.html 下載
最新的版本與相關的資源
lirere 目前離線  
送花文章: 0, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖
舊 2004-04-08, 10:16 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 金幣
預設

http://www.hkln.net/

如果不用結構呢

其實應該這個程式也不太需要用到結構 因為資料型態都一樣

#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 ;
}
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
舊 2004-04-09, 01:45 AM   #3 (permalink)
註冊會員
榮譽勳章

勳章總數
UID - 126175
在線等級: 級別:0 | 在線時長:4小時 | 升級還需:1小時
註冊日期: 2004-04-03
VIP期限: 2006-07
文章: 92
精華: 0
現金: 124 金幣
資產: 124 金幣
預設

嘿呀~我也是覺得不一定要用到"結構"

可是我們老師就規定一定要用結構的形式我也被他打敗了!

可是版主~我們的問題是指要寫出2004年2月份的月曆就可以了!

不用寫出萬年曆~不過萬年曆我也寫了一個~可是好像有點不一樣~

#include <stdio.h>
#include <stdlib.h>

#define S 0 //基準年 : 西元 0 年
int N(int);
int Y(int); //年月空格的計算
int M0(int,int);
int M(int,int); //當月總天數

int main(int argc, char *argv[])
{ // 輸入月份
int e=1 ;
int y,m ;
do{
do{
printf("輸入年份(西元): "); scanf("%d",&y);
printf("輸入月份: ") ; scanf("%d",&m);
}while (y<0||m>12||m<1);

int n=0; if(y>0) n=N(y); //判斷是否潤年

int space=(Y(y)+M0(m,n))%7; //算空格數

printf("\n\tSun\tMon\tTue\tWed\tTue\tFri\tSat\n");

// 執行空格
int i,j,c=0 ;
for(i=0;i<space;i++){printf("\t "); c++;}
for(j=1;j<=M(m,n);j++){if(c==7) {printf("\n");c=0;}
printf("\t%d",j);c++;}

/*test*/
printf("\n\nspace=%d",space);
printf("\nY= %d",Y(y));
printf("\nM0= %d",M0(m,n)) ;
printf("\n\n");
printf("若不想再輸入一次按: 2\t");scanf("%d",&e); printf("\n\n");
}while(e==1);

system ("pause");
return 0;
}
// 當年閏年 ?
int N(int y)
{ int sum=0,a=1; if(y==0) a=0;

int q1=y%4, q2=y%100, q3=y%400 ;
if (q1==0) sum=1; if (q2==0) sum=0; if(q3==0) sum=1;
return sum ;
}
// 年 空格計算
int Y(int y)
{ int sum,a=0; if(y==0) a=1;

sum=(((y-1+a)/4-(y-1+a)/100+(y-1+a)/400)+ y*29)%7;
return sum;
}
// 月 空格計算
int M0(int m,int n)
{ int sum, k[12]={0-n,3,3,6,8,11,13,16,19,21,24,26};
return sum=n+k[m-1];
}
// 當月總天數
int M(int m,int n)
{ int F[12]={31,28+n,31,30,31,30,31,31,30,31,30,31};
return F[m-1];
}


我這個已經被打回票了!

因為一定得用"結構"的方式來寫2月份的月曆~

不過還謝謝版主嚕~
lirere 目前離線  
送花文章: 0, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖
舊 2004-04-09, 01:51 AM   #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 金幣
預設

喔喔

那等我一兩天可以嗎 我在幫你寫

因為最近事情很多

結構裡要包含什麼資料 ??
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
舊 2004-04-09, 02:21 AM   #5 (permalink)
註冊會員
榮譽勳章

勳章總數
UID - 126175
在線等級: 級別:0 | 在線時長:4小時 | 升級還需:1小時
註冊日期: 2004-04-03
VIP期限: 2006-07
文章: 92
精華: 0
現金: 124 金幣
資產: 124 金幣
預設

恩恩~謝謝啦!沒關係啦~不急啦!

而且這是我們老師規定的問題~還麻煩版主那就沒道理了~

只是我笨笨~寫不太出來而已=.="想看看別的大大的寫法~

恩~謝謝版主!

偶在研究一下嘿~
lirere 目前離線  
送花文章: 0, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖
發文 回覆


主題工具
顯示模式

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

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


所有時間均為台北時間。現在的時間是 10:47 AM


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


SEO by vBSEO 3.6.1