はじめに
どうも! みなため(@MinatameT)です。
この記事では、C言語で「うるう年」だけを表示するプログラムを紹介しています。
プログラムの説明は、あとで紹介するソースコードの中に記載してありますが、for文やif文の基礎の理解が前提です。
うるう年の考え方
うるう年は、次の条件を満たします。
うるう年の条件
- 4の倍数の年
- 4の倍数の年のうち、100の倍数であって、400で割り切れない(400で割った余りが0にならない)年は「うるう年にならない(平年)」。
これをC言語で考えていきます。必要な部分を箇条書します。
- まず、西暦1年から入力した西暦までを1年ずつ「うるう年判定」するために、ループ文(1ループごとに+1年)を作る。
- そのループ文の中に、4の倍数を判定させる文(条件文)を作る。
- その条件文の中に、100の倍数であって400で割り切れないことを判定させる文(条件文)を作る。この条件に該当しなければ、西暦を出力する。
倍数の判定についてですが、例えば、4で割った余りが0なら、その数は4の倍数です。100で割った余りが0なら、その数は100の倍数です。
C言語で割り算の余りを求める方法は、以下の記事で紹介していますので、不安のある方は確認してください。
このように考えていくと良いですね。それでは、ソースコードと実行結果を確認していきましょう。
うるう年を求めるプログラム例
ソースコード
#include<stdio.h>
int main(void)
{
int now;
int year;
printf("現在の西暦>");
scanf("%d",&now);
printf("うるう年は、以下のとおりです。\n");
for(year=1; year<=now; year=year+1) //yearを1からnowまで1ずつ増やしていく。
{
if((year%4)==0) //4の倍数なら
{
if((year%100)==0 && (year%400)!=0) //100の倍数であって、400で割った余りが0以外なら
{
//うるう年ではないので、yearを出力しない。
}
else //それ以外なら
{
printf("西暦%4d年\n",year); //%4dは、半角4文字のスペースで整数値(yearの値)を表示する。
}
}
}
return(0);
}
実行結果の例
現在の西暦>2019
うるう年は、以下のとおりです。
西暦 4年
西暦 8年
西暦 12年
西暦 16年
西暦 20年
西暦 24年
西暦 28年
西暦 32年
西暦 36年
西暦 40年
西暦 44年
西暦 48年
西暦 52年
西暦 56年
西暦 60年
西暦 64年
西暦 68年
西暦 72年
西暦 76年
西暦 80年
西暦 84年
西暦 88年
西暦 92年
西暦 96年
西暦 104年
西暦 108年
西暦 112年
西暦 116年
西暦 120年
西暦 124年
西暦 128年
西暦 132年
西暦 136年
西暦 140年
西暦 144年
西暦 148年
西暦 152年
西暦 156年
西暦 160年
西暦 164年
西暦 168年
西暦 172年
西暦 176年
西暦 180年
西暦 184年
西暦 188年
西暦 192年
西暦 196年
西暦 204年
西暦 208年
西暦 212年
西暦 216年
西暦 220年
西暦 224年
西暦 228年
西暦 232年
西暦 236年
西暦 240年
西暦 244年
西暦 248年
西暦 252年
西暦 256年
西暦 260年
西暦 264年
西暦 268年
西暦 272年
西暦 276年
西暦 280年
西暦 284年
西暦 288年
西暦 292年
西暦 296年
西暦 304年
西暦 308年
西暦 312年
西暦 316年
西暦 320年
西暦 324年
西暦 328年
西暦 332年
西暦 336年
西暦 340年
西暦 344年
西暦 348年
西暦 352年
西暦 356年
西暦 360年
西暦 364年
西暦 368年
西暦 372年
西暦 376年
西暦 380年
西暦 384年
西暦 388年
西暦 392年
西暦 396年
西暦 400年
西暦 404年
西暦 408年
西暦 412年
西暦 416年
西暦 420年
西暦 424年
西暦 428年
西暦 432年
西暦 436年
西暦 440年
西暦 444年
西暦 448年
西暦 452年
西暦 456年
西暦 460年
西暦 464年
西暦 468年
西暦 472年
西暦 476年
西暦 480年
西暦 484年
西暦 488年
西暦 492年
西暦 496年
西暦 504年
西暦 508年
西暦 512年
西暦 516年
西暦 520年
西暦 524年
西暦 528年
西暦 532年
西暦 536年
西暦 540年
西暦 544年
西暦 548年
西暦 552年
西暦 556年
西暦 560年
西暦 564年
西暦 568年
西暦 572年
西暦 576年
西暦 580年
西暦 584年
西暦 588年
西暦 592年
西暦 596年
西暦 604年
西暦 608年
西暦 612年
西暦 616年
西暦 620年
西暦 624年
西暦 628年
西暦 632年
西暦 636年
西暦 640年
西暦 644年
西暦 648年
西暦 652年
西暦 656年
西暦 660年
西暦 664年
西暦 668年
西暦 672年
西暦 676年
西暦 680年
西暦 684年
西暦 688年
西暦 692年
西暦 696年
西暦 704年
西暦 708年
西暦 712年
西暦 716年
西暦 720年
西暦 724年
西暦 728年
西暦 732年
西暦 736年
西暦 740年
西暦 744年
西暦 748年
西暦 752年
西暦 756年
西暦 760年
西暦 764年
西暦 768年
西暦 772年
西暦 776年
西暦 780年
西暦 784年
西暦 788年
西暦 792年
西暦 796年
西暦 800年
西暦 804年
西暦 808年
西暦 812年
西暦 816年
西暦 820年
西暦 824年
西暦 828年
西暦 832年
西暦 836年
西暦 840年
西暦 844年
西暦 848年
西暦 852年
西暦 856年
西暦 860年
西暦 864年
西暦 868年
西暦 872年
西暦 876年
西暦 880年
西暦 884年
西暦 888年
西暦 892年
西暦 896年
西暦 904年
西暦 908年
西暦 912年
西暦 916年
西暦 920年
西暦 924年
西暦 928年
西暦 932年
西暦 936年
西暦 940年
西暦 944年
西暦 948年
西暦 952年
西暦 956年
西暦 960年
西暦 964年
西暦 968年
西暦 972年
西暦 976年
西暦 980年
西暦 984年
西暦 988年
西暦 992年
西暦 996年
西暦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年
西暦2004年
西暦2008年
西暦2012年
西暦2016年
実行結果が(改行によって)かなり縦長になってしまっていますが、うるう年が正しく表示されていることがわかります。
今回はここまでです。皆さん、お疲れ様でした。