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

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

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 <stdio.h>
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循环里面

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值