#7
by かずま » 8年前
kimi さんが書きました:たくさんの返信ありがとうございました!
解決したのなら、完成したコードを提示しましょう。
月の最終日を表で持つと簡単になりますよ。
コード:
#include <stdio.h>
void increment_date(int *y, int *m, int *d)
{
static int t[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (++*d > t[*m-1]) { // 1日進めて、それが月の最終日を超えていたら
*d = 1;
if (++*m > 12) {
*m = 1;
++*y;
}
}
}
int main(void)
{
int y, m, d, ok;
puts("年、月、日の順番で入力してください");
if (scanf("%d%d%d", &y, &m, &d) != 3 || m < 1 || m > 12) return 0;
while (1) {
puts("一日進めます、いいですね?よかったら1だめなら0");
if (scanf("%d", &ok) != 1 || !ok) break;
increment_date(&y, &m, &d);
printf("今日は%d年%d月%d日です。\n", y, m, d);
}
return 0;
}
[quote="kimi" id=3,19005,144383]たくさんの返信ありがとうございました![/quote]
解決したのなら、完成したコードを提示しましょう。
月の最終日を表で持つと簡単になりますよ。
[code=c]
#include <stdio.h>
void increment_date(int *y, int *m, int *d)
{
static int t[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (++*d > t[*m-1]) { // 1日進めて、それが月の最終日を超えていたら
*d = 1;
if (++*m > 12) {
*m = 1;
++*y;
}
}
}
int main(void)
{
int y, m, d, ok;
puts("年、月、日の順番で入力してください");
if (scanf("%d%d%d", &y, &m, &d) != 3 || m < 1 || m > 12) return 0;
while (1) {
puts("一日進めます、いいですね?よかったら1だめなら0");
if (scanf("%d", &ok) != 1 || !ok) break;
increment_date(&y, &m, &d);
printf("今日は%d年%d月%d日です。\n", y, m, d);
}
return 0;
}
[/code]