编写程序显示单月的日历。用户指定这个月的天数和该月起始日是星期几: 31 3 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 31 输入 1、输入这个月的天数。 2、输入该月起始日是星期几(1=Sun,7=Stat)。 输出 输出单月的日历,日与日之间间隔一个空格,上下行日期右对齐。
时间: 2023-12-10 12:40:17 浏览: 61
以下是Python的代码实现:
```python
# 获取用户输入
days = int(input("请输入这个月的天数:"))
start_day = int(input("请输入该月起始日是星期几(1=Sun,7=Sat):"))
# 打印日历头部
print(" 日 一 二 三 四 五 六")
# 打印空格以对齐第一天的位置
for i in range(1, start_day):
print(" ", end="")
# 打印日期
for day in range(1, days+1):
# 格式化输出日期,右对齐
print("{:>3}".format(day), end="")
# 如果是周六,换行
if (day + start_day - 1) % 7 == 0:
print()
else:
# 在日期之间添加空格
print(" ", end="")
```
运行程序后,用户需要输入这个月的天数和该月起始日是星期几。程序将会输出该月的日历。例如,输入31和3,输出如下:
```
日 一 二 三 四 五 六
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 31
```
相关问题
编写程序显示单月的日历。用户指定这个月的天数和该月起始日是星期几: 31 3 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 31 输入 1、输入这个月的天数。 2、输入该月起始日是星期几(1=Sun,7=Stat)。 输出 输出单月的日历,日与日之间间隔一个空格,上下行日期右对齐。
好的,这是一个简单的单月日历程序,您可以在命令行中输入月份的天数和起始日来运行它:
```python
days_in_month = int(input("请输入这个月的天数:"))
start_day = int(input("请输入该月起始日是星期几(1=Sun,7=Sat):"))
print(" Mo Tu We Th Fr Sa Su")
# 计算第一行前面需要有多少空格
for i in range(1, start_day):
print(" ", end="")
# 打印日历
day = 1
while day <= days_in_month:
# 每行打印七天
for i in range(start_day, 8):
if day <= days_in_month:
print("{:2d}".format(day), end=" ")
day += 1
else:
break
print()
start_day = 1
```
这个程序会输出一个类似于这样的日历:
```
Mo Tu We Th Fr Sa Su
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 31
```
请注意,程序中使用了 `{:2d}` 这个格式化字符串来保证输出的数字都是两位数,这样才能保证上下行日期右对齐。
已知2014年1月1日是周三,用C语言编写程序在屏幕上输出2015年的年历
好的,以下是一个简单的C语言程序,可以在屏幕上输出2015年的年历:
```c
#include <stdio.h>
int main() {
int year = 2015;
int startDay = 4; // 2015年1月1日是星期四
int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 每个月的天数
char *monthNames[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; // 每个月的名称
// 输出年份
printf("%d\n\n", year);
// 循环输出每个月的日历
for (int i = 0; i < 12; i++) {
// 输出月份名称
printf("%s\n", monthNames[i]);
// 输出星期几的表头
printf("Su Mo Tu We Th Fr Sa\n");
// 计算这个月的天数
int days = daysInMonth[i];
if (i == 1 && (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)) {
days++; // 闰年的二月有29天
}
// 输出日期
for (int j = 0; j < startDay; j++) {
printf(" "); // 输出空格占位符
}
for (int j = 1; j <= days; j++) {
printf("%2d ", j); // 输出日期
if ((j + startDay) % 7 == 0) {
printf("\n"); // 每周结束后换行
}
}
// 更新下个月的起始日
startDay = (startDay + days) % 7;
// 输出一个空行
printf("\n");
}
return 0;
}
```
运行这个程序,你将在屏幕上看到2015年的年历。注意,由于每个月的起始日可能不同,因此需要在程序中计算每个月的起始日。