鱼C论坛

 找回密码
 立即注册
查看: 3469|回复: 4

[课后作业] S1E17~18:数组 | 课后测试题

[复制链接]
发表于 2022-9-7 19:15:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h> //  算出生存天数比答案多一天,不知道哪里有问题;其次最后打印结果的时候,最后两行怎么左对齐;还是需要再添加两个printf函数打印;有没有办法再一个里面打印出来;

int main() {
        int year1, year2, mouth1, mouth2, day1, day2, D, D1 = 0, D2 = 0, i, D3, D4;
        int day[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //非闰年
        int x;
        double s;
        printf("请输入你的生日  (如1988-05-20) : ");
        scanf("%d-%d-%d", &year1, &mouth1, &day1);
//        getchar();
        printf("请输入今天的日期(如1988-05-20) : ");
        scanf("%d-%d-%d", &year2, &mouth2, &day2);
        for (i = mouth1 - 1; i < 12; i++) {
                D1 = D1 + day[i];
        }
        for (i = 0; i < mouth2 - 1; i++) {
                D2 = D2 + day[i];
        }
        D1 = D1 - day1;
        D2 = D2 + day2;
        D3 = (year2 - year1 - 1) * 365;
        D4 = (year2 - year1) / 4 + 1;//算多少个闰年
        D = D1 + D2 + D3 + D4;
        x = 80 * 365 + 80 / 4 + 1 - D;
        s = (double)D / (x + D);
        s = s * 100;
        printf("你在这个世界上总共生存了%d天\n\
        如果能活到80岁,你还剩下%d天\n\
        你已经使用了%.2f%%的生命,请好好珍惜剩下的时间!", D, x, s);
        return 0;
}

算出答案有一天的差距,不知道哪里有问题

算出答案有一天的差距,不知道哪里有问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-9-7 23:18:51 | 显示全部楼层
你这题逻辑思路就错了,不是多一天的问题 。

理解你的代码
以下的d1 为计算出生那一年的天数,d2 为计算你输入"今天的日期"这一年的天数。那么问题 来了 你怎么判断这2个就不是润年?
  1.         for (i = mouth1 - 1; i < 12; i++) {
  2.                 D1 = D1 + day[i];
  3.         }

  4.         for (i = 0; i < mouth2 - 1; i++) {
  5.                 D2 = D2 + day[i];
  6.         }

  7.         D1 = D1 - day1;
  8.         D2 = D2 + day2;
复制代码



这题 的解法应是 一年一年的推, 并且在推的过程中判断该年是否为润年,然后来确定每一年的天数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-7 23:36:10 | 显示全部楼层
ba21 发表于 2022-9-7 23:18
你这题逻辑思路就错了,不是多一天的问题 。

理解你的代码

我是全部每当闰年来计算的,然后再加上中间有几个闰年;突然发现确实存在一些漏洞;特别是查了一下闰年的计算方式,发现这样算存在误差;
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-8 13:04:49 | 显示全部楼层
阿亮不减肥 发表于 2022-9-7 23:36
我是全部每当闰年来计算的,然后再加上中间有几个闰年;突然发现确实存在一些漏洞;特别是查了一下闰年的 ...

所以说你怎么肯定你前后2年不是闰年。
这不就是告诉你了,你的闰年的计算方式不正确。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-8 15:33:06 | 显示全部楼层
明白了,已修正
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 11:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表