查看單個文章
舊 2004-04-09, 01:45 AM   #3 (permalink)
lirere
註冊會員
榮譽勳章

勳章總數0
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 次
回覆時引用此帖