输入某年某月某日,计算并输出它是这一年的第几天。

按如下函数原型用函数编程解决如下的日期转换问题(要求考虑闰年的问题):
输入某年某月某日,计算并输出它是这一年的第几天。
/* 函数功能:  对给定的某年某月某日,计算它是这一年的第几天
函数参数:  整型变量year、month、day,分别代表年、月、日          
函数返回值:这一年的第几天 */
int  DayofYear(int year, int month, int day);
下面程序中存在比较隐蔽的错误,请通过分析和调试程序,发现并改正程序中的错误。
#include 

int DayofYear(int year, int month, int day);

int dayTab[2][13] =

{

    {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},

    {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}

};



main()//这里很明显,少个int

{

    int year, month, day;

    printf("Please enter year, month, day:");

    scanf("%d,%d,%d", year, month, day);//少了取址符号&

    printf("yearDay = %d\n" DayofYear(year, month, day));
                   //引号后少了逗号
}

int DayofYear(int year, int month, int day);

{

    int i, leap;

    leap = year / 4 = 0 & year / 100 != 0 | year / 400 = 0;
         //闰年应该是1,而不是0,加个if语句判断
    for (i = 0, i < month, i++);

    {

        day = day - dayTab[leap][i];
           //统计的是天数之和,减号改成加号
      //注意这个函数要有返回值,返回天数day
    }

}
注意:
(1)请将修改正确后的完整源程序拷贝粘贴到答题区内。
(2)对于没有错误的语句,请不要修改,修改原本正确的语句也要扣分。
(3)当且仅当错误全部改正,且程序运行结果调试正确,才给加5分。
(4)改错时不能改变程序原有的意图,也不要改变代码的输入输出格式。
#include 
int DayofYear(int year, int month, int day);
int dayTab[2][13] =
{
    {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
    {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
int main()
{
    int year, month, day;
    printf("Please enter year, month, day:");
    scanf("%d,%d,%d", &year, &month, &day);
    printf("yearDay = %d\n", DayofYear(year, month, day));
}
int DayofYear(int year, int month, int day)
{
    int i, leap;
    if ( (year / 4==0 && year / 100 != 0) ||year / 400==0)
    {
    leap = 0;
    }
    else
    {
        leap = 1;
    }
    for (i = 0; i < month; i++)
    {
        day=dayTab[leap][i]+day;
    }
    return day;
}

 注意函数一旦返回一个值便结束,所以不要把return day放在for循环里面

你可能感兴趣的:(C/C++练习,算法,c++,开发语言)