- 论坛徽章:
- 1
|
计算闰年的代码
应用举例:
计算公元以来共有几个闰年,他们是(为了显示美观,不足四位的年份前面用“0”补足四位)?
awk版
- cat leap.awk
- #!/usr/bin/awk -f
- #ScriptName:leap.awk
- BEGIN{printf"公元0-2003年闰年是:\n"}
- {
- for(i=0;i<2004;i++)
- if((i%4==0 && i%100!=0 || i%400==0)) {
- j++
- if(j%15==0){
- printf"%04d\n",i}else{printf"%04d ",i
- }
- }
- printf"\n公元0--2003年共有闰年%d次\n",j
- }
复制代码- echo|awk -f leap.awk
- 公元0-2003年闰年是:
- 0000 0004 0008 0012 0016 0020 0024 0028 0032 0036 0040 0044 0048 0052 0056
- 0060 0064 0068 0072 0076 0080 0084 0088 0092 0096 0104 0108 0112 0116 0120
- 0124 0128 0132 0136 0140 0144 0148 0152 0156 0160 0164 0168 0172 0176 0180
- 0184 0188 0192 0196 0204 0208 0212 0216 0220 0224 0228 0232 0236 0240 0244
- 0248 0252 0256 0260 0264 0268 0272 0276 0280 0284 0288 0292 0296 0304 0308
- 0312 0316 0320 0324 0328 0332 0336 0340 0344 0348 0352 0356 0360 0364 0368
- 0372 0376 0380 0384 0388 0392 0396 0400 0404 0408 0412 0416 0420 0424 0428
- 0432 0436 0440 0444 0448 0452 0456 0460 0464 0468 0472 0476 0480 0484 0488
- 0492 0496 0504 0508 0512 0516 0520 0524 0528 0532 0536 0540 0544 0548 0552
- 0556 0560 0564 0568 0572 0576 0580 0584 0588 0592 0596 0604 0608 0612 0616
- 0620 0624 0628 0632 0636 0640 0644 0648 0652 0656 0660 0664 0668 0672 0676
- 0680 0684 0688 0692 0696 0704 0708 0712 0716 0720 0724 0728 0732 0736 0740
- 0744 0748 0752 0756 0760 0764 0768 0772 0776 0780 0784 0788 0792 0796 0800
- 0804 0808 0812 0816 0820 0824 0828 0832 0836 0840 0844 0848 0852 0856 0860
- 0864 0868 0872 0876 0880 0884 0888 0892 0896 0904 0908 0912 0916 0920 0924
- 0928 0932 0936 0940 0944 0948 0952 0956 0960 0964 0968 0972 0976 0980 0984
- 0988 0992 0996 1004 1008 1012 1016 1020 1024 1028 1032 1036 1040 1044 1048
- 1052 1056 1060 1064 1068 1072 1076 1080 1084 1088 1092 1096 1104 1108 1112
- 1116 1120 1124 1128 1132 1136 1140 1144 1148 1152 1156 1160 1164 1168 1172
- 1176 1180 1184 1188 1192 1196 1200 1204 1208 1212 1216 1220 1224 1228 1232
- 1236 1240 1244 1248 1252 1256 1260 1264 1268 1272 1276 1280 1284 1288 1292
- 1296 1304 1308 1312 1316 1320 1324 1328 1332 1336 1340 1344 1348 1352 1356
- 1360 1364 1368 1372 1376 1380 1384 1388 1392 1396 1404 1408 1412 1416 1420
- 1424 1428 1432 1436 1440 1444 1448 1452 1456 1460 1464 1468 1472 1476 1480
- 1484 1488 1492 1496 1504 1508 1512 1516 1520 1524 1528 1532 1536 1540 1544
- 1548 1552 1556 1560 1564 1568 1572 1576 1580 1584 1588 1592 1596 1600 1604
- 1608 1612 1616 1620 1624 1628 1632 1636 1640 1644 1648 1652 1656 1660 1664
- 1668 1672 1676 1680 1684 1688 1692 1696 1704 1708 1712 1716 1720 1724 1728
- 1732 1736 1740 1744 1748 1752 1756 1760 1764 1768 1772 1776 1780 1784 1788
- 1792 1796 1804 1808 1812 1816 1820 1824 1828 1832 1836 1840 1844 1848 1852
- 1856 1860 1864 1868 1872 1876 1880 1884 1888 1892 1896 1904 1908 1912 1916
- 1920 1924 1928 1932 1936 1940 1944 1948 1952 1956 1960 1964 1968 1972 1976
- 1980 1984 1988 1992 1996 2000
- 公元0--2003年共有闰年486次
复制代码
shell版(ksh)
- cat leap.ksh
- #!/bin/ksh
- #ScriptName:leap.ksh
- printf "公元0-2003年闰年是:\n"
- y=0;j=0
- while [ $y -lt 2004 ]
- do
- if ((y%4==0 && y%100!=0 || y%400==0))
- then
- ((j=j+1))
- if ((j%15==0))
- then printf "%04d\n" $y
- else printf "%04d " $y
- fi
- fi
- ((y=y+1))
- done
- printf "\n公元0--2003年共有闰年%d次\n" $j
复制代码- 测试(略)
- leap.ksh
- 公元0-2003年闰年是:
- 0000 0004 0008 0012 0016 0020 0024 0028 0032 0036 0040 0044 0048 0052 0056
- 0060 0064 0068 0072 0076 0080 0084 0088 0092 0096 0104 0108 0112 0116 0120
- .
- .
- .
- 1920 1924 1928 1932 1936 1940 1944 1948 1952 1956 1960 1964 1968 1972 1976
- 1980 1984 1988 1992 1996 2000
- 公元0--2003年共有闰年486次
复制代码 |
|