Logic in lịch 1 tháng
// In khoảng trống cho các ngày trước ngày 1
for(i = 1; i < first; i++)
printf(" ");
// In các ngày của tháng
for(i = 1; i <= noofdays; i++) {
printf("%3d", i);
if ((first + i - 1) % 7 == 0)
printf("\n");
}
Chương trình hoàn chỉnh
#include <stdio.h>
int main() {
int i, noofdays, first;
printf("Nhập số ngày trong tháng:\n");
scanf("%d", &noofdays);
printf("Nhập thứ của ngày 1 (1=CN, 2=T2,..., 7=T7):\n");
scanf("%d", &first);
// In header thứ (tùy chọn)
printf("CN T2 T3 T4 T5 T6 T7\n");
// In khoảng trống đầu tháng
for(i = 1; i < first; i++)
printf(" ");
// In các ngày
for(i = 1; i <= noofdays; i++) {
printf("%3d ", i);
if ((first + i - 1) % 7 == 0)
printf("\n");
}
printf("\n");
return 0;
}
Kết quả chạy
Nhập số ngày trong tháng: 30
Nhập thứ của ngày 1: 4 (Thứ 4)
CN T2 T3 T4 T5 T6 T7
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30