Entries

[程式]日期相關

輸入日期D1(A1月B1日)及D2(A2月B2日)並做下列指令:

(1)判斷日期是否合理
(2)判斷D1,D2何者在前
(3)算出D1,D2之差距

(註:利用模組化概念撰寫)

-------------------------------------------------------------------------------------------
程式碼:

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int M[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int A1,B1;//節日D1
int A2,B2;//節日D2
int check;
printf("請輸入D1:");
scanf("%d %d",&A1 ,&B1);
printf("請輸入D2:");
scanf("%d %d",&A2 ,&B2);
if (!(CorrectDate(A1,B1)&&CorrectDate(A2,B2)))
{printf("輸入的日期或月份有錯\n");}
check = D1D2(A1,B1,A2,B2);
if (check == 0)
{
printf("日期相同\n");
printf("D1,D2兩者相距0天\n");
}
else if (check == 1)
{
printf("%d 月 %d 日\n",A2,B2);
printf("D1,D2兩者相距%d天\n",offset(A2,B2,A1,B1));
}
else
{
printf("%d 月 %d 日\n",A1,B1);
printf("D1,D2兩者相距%d天\n",offset(A1,B1,A2,B2));
}



system("pause");
return 0;
}
int CorrectDate(int A, int B)
{
int M[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if ((A >= 1 && A <= 12) && (B >= 1 && B <= M[A-1]))
return 1;
else
return 0;
}
/*
D1 < D2 -> 1
D1 == D2 -> 0
D1 > D2 -> -1
*/
int D1D2(int A1, int B1, int A2, int B2)
{
if (A1 > A2) return 1;
if (A1 < A2) return -1;
if (B1 > B2) return 1;
if (B1 == B2) return 0;
if (B1 < B2) return -1;
}
int offset(int A1, int B1, int A2, int B2)
{
int M[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int i,T;
if (A1 == A2)
{
return B2-B1;
}
else
{
T=(M[A1-1]-B1)+B2;
for(i = A1+1;i <= A2-1;i++)
{T = T + M[i-1];}
return T;
}
}



執行圖:
[3.31-EX]

-------------------------------------------------------------------------------------------------------------

多重概念應用,並利用模組化概念撰寫。

留言

發表留言

發表留言
只對管理員顯示

引用

引用 URL
http://tom4318679.blog124.fc2.com/tb.php/23-5cb6cde7
引用此文章(FC2部落格用戶)

Appendix

魔の紹介

魔王

Author:魔王

台湾人。
遊戯王のカードとアニソンが大好き。
本網站建議使用1024*768解析度
FireFox瀏覽,以免有文字錯位現象

魔の囁き

魔と話し

魔のplunk

魔の検索