刚学c语言出了小问题。。大神棒棒看 谢谢

一个计算日期距离的玩意

#include
int sr();
int main()
{
printf("请输入起始年月日(以回车间隔)\n");
int memories;
int year = sr();
int month = sr();
int day = sr();
printf("请输入当前年月日(以回车间隔)\n");
int thisyear = sr();
int thismonth = sr();
int thisday = sr();

//开始年日数
if((year%4==0&&year%100!=0)||(year%400==0))
{
switch(month)
{
case 1:memories = day;
case 2:memories += 31;
case 3:memories += 29;
case 4:memories += 31;
case 5:memories += 30;
case 6:memories += 31;
case 7:memories += 30;
case 8:memories += 31;
case 9:memories += 31;
case 10:memories += 30;
case 11:memories += 31;
case 12:memories += 30;break;
}
memories = 366-memories;
printf("%s\n",memories);
}
else
{
switch(month)
{
case 1:memories = day;
case 2:memories += 31;
case 3:memories += 28;
case 4:memories += 31;
case 5:memories += 30;
case 6:memories += 31;
case 7:memories += 30;
case 8:memories += 31;
case 9:memories += 31;
case 10:memories += 30;
case 11:memories += 31;
case 12:memories += 30;break;
}
memories = 365-memories;
}

//结束年日数
if((thisyear%4==0&&thisyear%100!=0)||(thisyear%400==0))
{
switch(thismonth)
{
case 1:memories = thisday;
case 2:memories += 31;
case 3:memories += 29;
case 4:memories += 31;
case 5:memories += 30;
case 6:memories += 31;
case 7:memories += 30;
case 8:memories += 31;
case 9:memories += 31;
case 10:memories += 30;
case 11:memories += 31;
case 12:memories += 30;break;
}
}
else
{
switch(thismonth)
{
case 1:memories = thisday;
case 2:memories += 31;
case 3:memories += 28;
case 4:memories += 31;
case 5:memories += 30;
case 6:memories += 31;
case 7:memories += 30;
case 8:memories += 31;
case 9:memories += 31;
case 10:memories += 30;
case 11:memories += 31;
case 12:memories += 30;break;
}
}
//中间年日数
for(int i=year+1; i+1<thisyear;i++)
{
if((i%4==0&&i%100!=0)||(i%400==0))
{
memories+=366;
}
else
{
memories+=366;
}
}

printf("%s\n",memories);
return 0;

}

int sr()
{
int num;
scanf("%d",&num);
return num;
}

 if((i%4==0&&i%100!=0)||(i%400==0))
{
memories+=366;
}
else
{
memories+=366;//这里应该是365,非润年
}

这代码,可以重做了。。。。。

花了几个小时做的,共同进步哈。。。。。。

 #include <stdio.h>

int YTEM[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

int LYTEM[12] = {31,29,31,30,31,30,31,31,30,31,30,31};

int Days(int year,int month,int day)
{
    int count = day;
    if((year%4 == 0&&year%100 != 0)||(year%400 == 0))
    {
        while(month-- >0)
        {
            if(month != 1) count += LYTEM[month-1];
        }
    }
    else
    {
        while(month-- >0)
        {
            if(month != 1) count += YTEM[month-1];
        }
    }
    return count;
}

int Gap(int c1,int c2,int y1,int y2)
{
    int count = 0;
    if(y1 == y2) return c2-c1;
    else
    {
        while(y1++ < y2)
        {
            if((y1%4 == 0&&y1%100 != 0)||(y1%400 == 0)) count += 366;
            else count += 365;
        }
        return count+c2-c1;
    }
}

int main()
{
    int Y1,M1,D1,Y2,M2,D2;
    int count1,count2;
    scanf("%d%d%d%d%d%d",&Y1,&M1,&D1,&Y2,&M2,&D2);
    count1 = Days(Y1,M1,D1);
    count2 = Days(Y2,M2,D2);
    printf("%d",Gap(count1,count2,Y1,Y2));
    return 0;
}

http://blog.csdn.net/ljafl9988/article/details/16847935
最简单的是把两个时间转换成时间戳,然后相减,得到的是两者间隔的秒数,/3600/24得到天数。

也就是计算时间的,哪用这么麻烦

有两处printf("%s\n",memories);改成printf("%d\n",memories);
因为你memories是int型的
for循环的里的int i试试看定义在外面,有些老的编译器不支持C99标准

memories 这个应该给赋初始值吧

哪里溢出了吧,检查下数据结构,或者换个环境再试试