问题
在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
题解
1.分析问题
- 已知:炸弹放置时间。
- 未知:爆炸的准确日期。
- 关系:定时为1000天。
2.定义变量
定义了一个包含每个月天数的数组monthDays,并初始化了一个变量days为1000。
// 定义一个包含12个月份天数的数组,假设非闰年int monthDays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};// 设置要计算的总天数为1000天int days = 1000;// 初始化日期为2014年11月9日int year = 2014, month = 11, day = 9;
3.输入数据
无。
4.数据计算
// 创建循环变量iint i;// 使用for循环遍历1000天for (i = 0; i < days; i++){// 每次循环将当前日期加一天day++;// 当天数超过当前月份的最大天数时if (day > monthDays[month - 1]){// 将日期重置为1,并将月份加1day = 1;month++;// 当月份超过12(即进入新的一年)if (month > 12){// 月份重置为1,年份加1month = 1;year++;// 根据闰年的规则调整二月天数if(year%400==0||(year%4==0&&year%100!=0)){// 闰年情况下,二月有29天monthDays[1]=29;}else{// 非闰年情况下,二月有28天monthDays[1]=28;}}}}
5.输出结果
#include <stdio.h>int main()
{// 定义一个包含12个月份天数的数组,假设非闰年int monthDays[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};// 设置要计算的总天数为1000天int days = 1000;// 初始化日期为2014年11月9日int year = 2014, month = 11, day = 9;// 创建循环变量iint i;// 使用for循环遍历1000天for (i = 0; i < days; i++){// 每次循环将当前日期加一天day++;// 当天数超过当前月份的最大天数时if (day > monthDays[month - 1]){// 将日期重置为1,并将月份加1day = 1;month++;// 当月份超过12(即进入新的一年)if (month > 12){// 月份重置为1,年份加1month = 1;year++;// 根据闰年的规则调整二月天数if(year%400==0||(year%4==0&&year%100!=0)){// 闰年情况下,二月有29天monthDays[1]=29;}else{// 非闰年情况下,二月有28天monthDays[1]=28;}}}}// 输出经过1000天后的日期printf("%d-%d-%d\n", year, month, day);// 程序暂停,等待用户按键后退出getchar();
}