|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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);
复制代码
|
|