题目描述
输入一个日期,求该日期距离当年最后一天的天数。例如2016年12月10日,距离2016年底还有21天.
要求用switch语句实现。
输入
输入某年某月某日
输出
输出距离最后一天还有多少天
输入样例
2016 12 10
输出样例
21
源代码
#include <stdio.h>
int main() {
int year, month, day;
printf("请输入日期(年 月 日):");
scanf("%d %d %d", &year, &month, &day);
int daysLeft = 0;
switch (month) {
case 12:
daysLeft += 30; // 12月份已经过去了30天
case 11:
daysLeft += 31; // 11月份已经过去了31天
case 10:
daysLeft += 30; // 10月份已经过去了30天
case 9:
daysLeft += 31; // 9月份已经过去了31天
case 8:
daysLeft += 31; // 8月份已经过去了31天
case 7:
daysLeft += 30; // 7月份已经过去了30天
case 6:
daysLeft += 31; // 6月份已经过去了31天
case 5:
daysLeft += 30; // 5月份已经过去了30天
case 4:
daysLeft += 31; // 4月份已经过去了31天
case 3:
daysLeft += 28; // 3月份已经过去了28天
case 2:
daysLeft += 31; // 2月份已经过去了31天
case 1:
break;
default:
printf("输入的月份有误。\n");
return 1;
}
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
daysLeft++; // 闰年的2月有29天,需要加1天
}
daysLeft = 365 - daysLeft - day; // 计算剩余天数,不需要再加上当前日期
printf("距离最后一天还有 %d 天。\n", daysLeft);
return 0;
}
这个程序使用了一个 switch 语句来根据输入的月份计算距离最后一天的天数。根据每个月的天数进行累加,并考虑闰年的情况。在 switch 语句中,每个 case 表示一个月份,根据月份的大小依次累加对应的天数。最后,从累加的总天数中减去输入日期的天数,得到距离最后一天的天数。
需要注意的是,这个程序没有对输入日期的合法性进行检查,例如没有判断月份是否在有效范围内,也没有判断日期是否超出了该月的天数。在实际应用中,可以根据需要进行相应的输入验证。
运行截图
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END