29 求最晚和最早日期
作者: Fu 時間限制: 1S 章節: 循環
問題描述 :
輸入N個日期,每個以年、月、日的順序讀入,打印輸出最晚的日期、最早的日期。
輸入說明 :
你的程序需要從標准輸入設備(通常為鍵盤)中讀入多組測試數據。每組輸入數據由多行組成。每組測試數據的第一行輸入一個整數N(0<N<20),表示有N個日期。其后N行每行有三個整數Y(1≤Y≤2015),M(1≤M≤12),D(1≤D≤31)表示一個日期。
輸出說明 :
對每組測試數據,你的程序需要向標准輸出設備(通常為啟動該程序的文本終端)輸出兩行,每行包括3個整數,第一行為最晚日期,第二行為最早日期,整數之間以一個空格分隔,行首與行尾無空格,所有數據前后沒有多余的空行,兩組數據之間也沒有多余的空行。
輸入范例 :
3
2015 3 2
2011 4 15
1 1 1
輸出范例 :
2015 3 2
1 1 1
代碼:
#include <stdio.h>
int main()
{
int y, m, d;
int maxy, miny, maxm, minm, maxd, mind;
int n;
scanf("%d", &n);
scanf("%d%d%d", &y, &m, &d);
maxy = miny = y; maxm = minm = m; maxd = mind = d;
for (int i = 1; i < n; i++)
{
scanf("%d%d%d", &y, &m, &d);
if (maxy < y)
{
maxy = y; maxm = m; maxd = d;
}
else if (maxy == y)
{
if (maxm<m)
{
maxy = y; maxm = m; maxd = d;
}
else if (maxm==m)
{
if (maxd < d)
{
maxy = y; maxm = m; maxd = d;
}
}
}
if (miny > y)
{
miny = y; minm = m; mind = d;
}
else if (miny == y)
{
if (minm<m)
{
miny = y; minm = m; mind = d;
}
else if (minm == m)
{
if (mind < d)
{
miny = y; minm = m; mind = d;
}
}
}
}
printf("%d %d %d\n%d %d %d\n", maxy, maxm, maxd, miny, minm, mind);
return 0;
}