今天的上机课 老师让我们做一道题题目是输入年月日  然后输出这一天是这一年的第几天比如2000 3 2 
是这一年的62天 这样应该怎么写  有没有什么简单的写法 我写了N长的switch 郁闷 了   
后来试了试用循环和数组  总是出错听老师说有个同学只用的5行代码就写出来了 靠  我想知道他是怎么写的 当时忘了问他了  不知道大家有没有什么办法呃 顺便说一下 我是刚学C的 所以代码不要太难了 谢谢啦~~

解决方案 »

  1.   

    用COleDateTime::GetDayOfYear来得到
      

  2.   

    int GetDayOfYear(int year, int month, int day)
    {
    static int offset[12]={0,31,59,90,121, 151,181, 212, 243, 273, 304, 334};
    day+=offset[month-1];
    if(year%4==0 && (year%100)!=0 &&month>2) day++;//闰年
    return day;
    }
      

  3.   

    int year,month,day,loc,flag=0,count1=0,count2=0;
    int m[12]={31,30,31,30,31,30,31,31,30,31,30,31};
    printf("请输入年月日\n");
    scanf("%d %d %d",&year,&month,&day);
    if((year%4==0&&year%100!=0)||year%400==0) flag=1;//判断是否是闰年 是使flag置1for(int i=1;i<month;i++)
    count1+=m[i-1]*i;
    count2=count1+day;
    if(flag)
    count2=count2-2;
    printf("%d",count2);
    }
      

  4.   

    int year,month,day,loc,flag=0,count1=0,count2=0;
    int m[12]={31,30,31,30,31,30,31,31,30,31,30,31};
    printf("请输入年月日\n");
    scanf("%d %d %d",&year,&month,&day);
    if((year%4==0&&year%100!=0)||year%400==0) flag=1;//判断是否是闰年 是使flag置1for(int i=1;i<month;i++)
    count1+=m[i-1]*i;
    count2=count1+day;
    if(flag&&month>2)//要加上month>2 超过2月才考虑闰年的影响
    count2=count2-2;
    printf("%d",count2);
    }