鱼C论坛

 找回密码
 立即注册
查看: 782|回复: 5

[已解决]生命计算器,不知道哪里出错,结果总是不对

[复制链接]
发表于 2020-7-25 17:38:15 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
int main()
{
int i[3];
int j[3];
int f=0;
int k;
int p;

printf("请输入你的生日 (如1988-05-20)");
scanf("%d%d%d",&i[0],&i[1],&i[2]);

printf("%d%d%d\n",i[0],i[1],i[2]);
printf("\n请输入今年日期 (如2016-03-28)");
scanf("%d%d%d",&j[0],&j[1],&j[2]);

printf("%d%d%d\n",j[0],j[1],j[2]);


for(k=i[0];k<j[0];k++)
{
if((k%4==0&&k%100!=0)||k%400==0)

f+=366;

else

f+=365;

}

int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        

      
        if (i[0] % 400 == 0 || (i[0] % 4 == 0 && i[0] % 100 != 0))
        {
                days[1] = 29;
               
        }
      

        for ( k = 0; k < i[1]; k++)
        {
                f-= days [k];
        }
        if (j[0] % 400 == 0 || (j[0] % 4 == 0 && j[0] % 100 != 0))
        {
                days[1] = 29;
        }
      

        for ( p= 0; p< j[1]; p++)
        {
                f+= days [p];
        }
        
        f-=i[2];
        f+=j[2];
      printf("%d\n",f)  ;
        
        
return 0;


}
最佳答案
2020-7-25 19:15:53
frankie2020 发表于 2020-7-25 19:05
我改过了,但是还是结果不对,我输入例子里面的数据,结果是10219.

我知道你错在哪儿了
你输入的是
1988-05-20
2016-03-28
这样的话,按照你的scanf,读取到的年是1988和2016 ,月是-5和-3,日是-20和-28这样肯定是不对的
若你想这样输入,那么scanf需要修改
scanf("%d-%d-%d",&i[0],&i[1],&i[2]);
下面那个一样修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-25 18:13:44 | 显示全部楼层
月份那些天数的加减循环中,for循环结束条件写错了
 for ( k = 0; k < i[1]; k++)
改为
 for ( k = 0; k < i[1]-1; k++)

 for ( p= 0; p< j[1]; p++)
改为
 for ( p= 0; p< j[1]-1; p++)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-7-25 19:05:04 | 显示全部楼层
sunrise085 发表于 2020-7-25 18:13
月份那些天数的加减循环中,for循环结束条件写错了

我改过了,但是还是结果不对,我输入例子里面的数据,结果是10219.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-25 19:12:32 | 显示全部楼层
frankie2020 发表于 2020-7-25 19:05
我改过了,但是还是结果不对,我输入例子里面的数据,结果是10219.

你输入错了?
我这里输入例子中的数据,
1988 05 20
2016 03 28
结果是10174
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-25 19:15:53 | 显示全部楼层    本楼为最佳答案   
frankie2020 发表于 2020-7-25 19:05
我改过了,但是还是结果不对,我输入例子里面的数据,结果是10219.

我知道你错在哪儿了
你输入的是
1988-05-20
2016-03-28
这样的话,按照你的scanf,读取到的年是1988和2016 ,月是-5和-3,日是-20和-28这样肯定是不对的
若你想这样输入,那么scanf需要修改
scanf("%d-%d-%d",&i[0],&i[1],&i[2]);
下面那个一样修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-25 19:42:20 | 显示全部楼层
谢谢你,我懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 10:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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