Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 此代码用于确定“n”天后的日期,其主要错误是什么?_C++_Loops - Fatal编程技术网

C++ 此代码用于确定“n”天后的日期,其主要错误是什么?

C++ 此代码用于确定“n”天后的日期,其主要错误是什么?,c++,loops,C++,Loops,我是一个编程新手。很多天前,我编写了这个简单的代码来查找某个日期的下一个日期。此代码正常工作: #include <stdio.h> // Find the next date of a date. void NextDate(int day1, int month1, int year1, int &day2, int &month2, int &year2) { if ((day1 == 31) && (month1

我是一个编程新手。很多天前,我编写了这个简单的代码来查找某个日期的下一个日期。此代码正常工作:

#include <stdio.h>

// Find the next date of a date.
void NextDate(int day1, int month1, int year1, int &day2, int &month2, int &year2)
{


        if ((day1 == 31) && (month1 == 12))
        {
            day2 = 1;
            month2 = 1;
            year2 = year1 + 1;
        }
        else if (((((day1 == 28) && (month1 == 2))) || ((day1 == 29) && (month1 == 2)) || (((day1 == 31) && ((month1 == 1) || (month1 == 3) || (month1 == 5) || (month1 == 7) || (month1 == 8) || (month1 == 10))))) || ((day1 == 30) && ((month1 == 4) || (month1 == 6) || (month1 == 9) || (month1 == 11))))
        {
            day2 = 1;
            month2 = month1 + 1;
            year2 = year1;
        }
        else
        {
            day2 = day1 + 1;
            month2 = month1;
            year2 = year1;
        }

}

void main()
{
    int d1, m1, y1,
        d2, m2, y2;

    // I have written a function for checking if the input is valid.
    // So, do not care about the input data.

    NextDate(d1, m1, y1, d2, m2, y2);

    printf("The next date of %d/%d/%d is: %d/%d/%d.", d1, m1, y1, d2, m2, t2);
    printf("\n\n---\n\n");

}
#包括
//查找日期的下一个日期。
无效下一个日期(整数日1、整数月1、整数年1、整数日2、整数月2、整数年2)
{
如果((第1天==31)和&(第1个月==12))
{
第2天=1天;
month2=1;
第2年=第1年+1年;
}
(day1=29)和(month1=29)以及(month1=29)以及(month1=29)和(month1=2)以及(month1=2)的(((day1=31)和(((day1=31)和(((蒙月1=1=31)和(((蒙月1=31)和(((((蒙月1=31)1)和((((蒙月1=1=31)1)以及((((蒙月1)1)1))))124(((((蒙月1))))))))124(((((month1=1)1))))))124(((((((((month1)1=1))))))))(((((((((((((((((((month1=1=1=1)))))))))))))))9)| |(month1==11)))
{
第2天=1天;
month2=month1+1;
第2年=第1年;
}
其他的
{
第2天=第1天+1天;
month2=month1;
第2年=第1年;
}
}
void main()
{
int d1,m1,y1,
d2,m2,y2;
//我编写了一个函数来检查输入是否有效。
//因此,不要关心输入数据。
下一日期(d1、m1、y1、d2、m2、y2);
printf(“下一个日期%d/%d/%d是:%d/%d/%d.”,d1、m1、y1、d2、m2、t2);
printf(“\n\n--\n\n”);
}

今天,我有一个小任务,就是在n天后查找日期。因此,我决定对我的旧代码进行一些更改:

#include <stdio.h>

// Find the next date of a date.
void DateAfter(int day1, int month1, int year1, int &day2, int &month2, int &year2, int n)
{

    for (int i = n; i > 0; i--)
    {

        if ((day1 == 31) && (month1 == 12))
        {
            day2 = 1;
            month2 = 1;
            year2 = year1 + 1;
        }
        else if (((((day1 == 28) && (month1 == 2))) || ((day1 == 29) && (month1 == 2)) || (((day1 == 31) && ((month1 == 1) || (month1 == 3) || (month1 == 5) || (month1 == 7) || (month1 == 8) || (month1 == 10))))) || ((day1 == 30) && ((month1 == 4) || (month1 == 6) || (month1 == 9) || (month1 == 11))))
        {
            day2 = 1;
            month2 = month1 + 1;
            year2 = year1;
        }
        else
        {
            day2 = day1 + 1;
            month2 = month1;
            year2 = year1;
        }
    }

}

void main()
{
    int d1, m1, y1,
        d2, m2, y2,
        n;

    DateAfter(d1, m1, y1, d2, m2, y2, n);

    printf("%d/%d/%d is %d days after of %d/%d/%d is.", d2, m2, y2, n, d1, m1, y1);
    printf("\n\n---\n\n");

}
#包括
//查找日期的下一个日期。
无效日期(整数日1、整数月1、整数年1、整数日2、整数月2、整数年2、整数年n)
{
对于(int i=n;i>0;i--)
{
如果((第1天==31)和&(第1个月==12))
{
第2天=1天;
month2=1;
第2年=第1年+1年;
}
(day1=29)和(month1=29)以及(month1=29)以及(month1=29)和(month1=2)以及(month1=2)的(((day1=31)和(((day1=31)和(((蒙月1=1=31)和(((蒙月1=31)和(((((蒙月1=31)1)和((((蒙月1=1=31)1)以及((((蒙月1)1)1))))124(((((蒙月1))))))))124(((((month1=1)1))))))124(((((((((month1)1=1))))))))(((((((((((((((((((month1=1=1=1)))))))))))))))9)| |(month1==11)))
{
第2天=1天;
month2=month1+1;
第2年=第1年;
}
其他的
{
第2天=第1天+1天;
month2=month1;
第2年=第1年;
}
}
}
void main()
{
int d1,m1,y1,
d2、m2、y2、,
N
日期(d1、m1、y1、d2、m2、y2、n);
printf(“%d/%d/%d是在%d/%d/%d是“、d2、m2、y2、n、d1、m1、y1之后的第%d天);
printf(“\n\n--\n\n”);
}
第二个代码只是查找下一个日期


你能告诉我:

  • 我的推论有什么问题
  • 为什么这个代码不能循环

我知道:C库中有许多现有函数可以帮助我完成这项任务。但是,我想写一本;因为,我是新手。

第1天、第1个月和第1年用于检查循环,但没有更改,而只分配了第2天、第2个月和第2年


您应该在循环中更改day1、month1和year1,并在循环结束时(在循环结束后)将它们分配给day2、month2和year2。

因此不是调试服务。使用符号编译,在调试器中运行代码,逐行跟踪程序,检查相关变量的值,了解实际情况。如果出现了一个特定的问题,请随意回到这里。这看起来像C++而不是C@4386427,因为我的编程技巧;所以,我学习的不是纯C.@alk,我自己写的。既然你使用了一个循环,为什么不在这个循环中调用原始的NextDate函数呢?哦,这是我的错误。。。非常感谢你!