日付を入力したら前の日か次の日を表示するプログラム

#include <stdio.h>

void decrement_date(int *y, int *m, int *d) {
*d = *d - 1;
if (*d < 1) {
*m = *m - 1;
if (*m == 4 || *m == 6 || *m == 9 || *m == 11) {
*d = 30;
}
else if (*m == 2) {
*d = 28;
if (*y % 4 == 0) {
*d = 29;
}
}
else {
*d = 31;
}

if (*m < 1) {
*y = *y - 1;
*m = 12;
}
}

}

void increment_date(int *y, int *m, int *d) {
*d = *d + 1;
if (*d > 28 && *m == 2) {
*m = *m + 1;
*d = 1;
if (*y % 4 == 0) {
*m = 2;
*d = 29;
}
}

if (*d > 30 && *m == 4 || *m == 6 || *m == 9 || *m == 11) {
*m = *m + 1;
*d = 1;
}

if (*d > 31) {
*m = *m + 1;
*d = 1;

if (*m > 12) {
*y = *y + 1;
*m = 1;
}
}

}

int main(void) {

int n;

int year, month, day;

printf("今日の日付を入力してください。\n");
printf("年:"); scanf_s("%d", &year);
printf("月:"); scanf_s("%d", &month);
printf("日:"); scanf_s("%d", &day);

printf("今日は%d年%d月%d日です。",year,month,day);

printf("(n=0の場合、前の日, n=1の場合、次の日) n:"); scanf_s("%d", &n);

if (n == 0) {

decrement_date(&year, &month, &day);

printf("前の日は%d年%d月%d日です。", year, month, day);
}

if (n == 1) {
increment_date(&year, &month, &day);

printf("次の日は%d年%d月%d日です。", year, month, day);
}

return 0;

}

この記事が気に入ったらサポートをしてみませんか?