|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 lwhnx 于 2017-12-7 17:05 编辑 #include <stdio.h>
int main()
{
int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int year1, month1, day1, year2, month2, day2;
long count = 0;
printf("请输入你的生日(如1988-05-20):");
scanf("%d-%d-%d", &year1, &month1, &day1);
printf("请输入今年日期(如2016-03-28):");
scanf("%d-%d-%d", &year2, &month2, &day2);
for (year1; year1 <= year2; year1++)
{
days[1] = (year1 % 400 == 0 || (year1 % 4 == 0 && year1 % 100 != 0)) ? 29 : 28;
for (month1; month1 <= 12; month1++)
{
for (day1; day1 <= days[month1 - 1]; day1++)
{
if (year1 == year2 && month1 == month2 && day1 == day2)
{
goto FINISH;
}
count++;
}
day1 = 0;
}
month1 = 0;
}
FINISH: printf("你在这个世界上总共生存了%d天\n", count);
getchar();
}
就那个INT那里不同 这样 结果就是错的。 如果分开INT 如下 就是正确的 不知道为什么!!!!!
#include <stdio.h>
int main()
{
long count = 0;
int year1, year2;
int month1, month2;
int day1, day2;
int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
printf("请输入你的生日(如1988-05-20):");
scanf("%d-%d-%d", &year1, &month1, &day1);
printf("请输入今年日期(如2016-03-28):");
scanf("%d-%d-%d", &year2, &month2, &day2);
for (year1; year1 <= year2; year1++)
{
days[1] = (year1 % 400 == 0 || (year1 % 4 == 0 && year1 % 100 != 0)) ? 29 : 28;
for (month1; month1 <= 12; month1++)
{
for (day1; day1 <= days[month1 - 1]; day1++)
{
if (year1 == year2 && month1 == month2 && day1 == day2)
{
goto FINISH;
}
count++;
}
day1 = 0;
}
month1 = 0;
}
FINISH: printf("你在这个世界上总共生存了%d天\n", count);
return 0;
}
估计是算法的问题,给你写了一个算法,输入方式还是你的那个输入方式
//年的循环
for (; year1 <= year2; year1++)
{
//判断是否是闰年
days[1] = (year1 % 400 == 0) || (year1 % 4 == 0 && year1 % 100 != 0) ? 29 : 28;
//到了目标年的操作
if (year1 == year2)
{ //从一月份循环到目标的月份
for (; month1 <= month2; month1++)
{
//判断是否在目标月份
if (year1 == year2 && month1 == month2)
{
//加上结束的天数 例如: 5月份10号结束,那么五月就只有10天
count += day2;
}
else //不在目标月份
{
//不在目标月表示,一个月都是满的
count += days[month1 - 1];
}
}
}
//没到目标年的操作
else
{
for (; month1 <= 12; month1++)
{
//计算当前月的天数
count += days[month1 - 1] - day1; //一开始不是一个完整的月所以要减去过去的天数:例如 5月2号,那么五月就剩下了 31-2=29天
day1 = 0; //清除过去的天数
}
}
month1 = 1; //设置回到1月
}
printf("你在这个世界上总共生存了%d天\n", count);
|
|