ID非公開

2022/6/16 20:22

22回答

c言語の問題です。

補足

for,while,do-whileを用いてください

C言語関連65閲覧

ベストアンサー

0

その他の回答(1件)

0

#include <stdio.h> #include <time.h> int main (void) { int times,sign,count = 0;; struct tm leap = {0}; printf ("関数カウントプログラム\nスタートする西暦年を入力してください\n"); scanf ("%d",&leap.tm_year); leap.tm_year -= 1900; leap.tm_mon = 2; leap.tm_mday = -1; printf ("何回目または何回前の閏年を計算しますか\nさかのぼる場合はマイナス値を入力してください\n"); scanf ("%d",&times); sign = times < 0 ? -1 : 1; do { times *= sign; leap.tm_year += sign; leap.tm_mon = 2; leap.tm_mday = -1; mktime (&leap); } while (leap.tm_mday != 28); sign *= 4; count = 1; do { leap.tm_year += sign; leap.tm_mon = 2; leap.tm_mday = -1; mktime (&leap); if (leap.tm_mday == 28) { count++; } } while (count != times); printf ("%d回目の閏年は%dです\n",times,leap.tm_year + 1900); return 0; }