弗兰随风小欢
2015-11-10 08:25
采纳率: 83.3%
浏览 4.4k
已采纳

怎么用C语言编写这个程序,求指教

本题要求编写程序计算某年某月某日是该年中的第几天。

输入格式:

输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。

输出格式:

在一行输出日期是该年中的第几天。

输入样例1:
2009/03/02

输出样例1:
61

输入样例2:
2000/03/02

输出样例2:
62

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • Meditator_hkx 2015-11-10 11:16
    已采纳

    网上一搜有很多,c语言教材里也几乎都援引了这个经典的闰年题目~你还是百度一下吧~

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 东风玖哥 2015-11-10 09:57

    最近在研究NDK,我还是试着帮你写一个吧

    评论
    解决 无用
    打赏 举报
  • 东风玖哥 2015-11-10 09:57

    最近在研究NDK,我还是试着帮你写一个吧

    评论
    解决 无用
    打赏 举报
  • cxlovu 2015-11-10 15:19
     #include <stdio.h>
    
    static int pow(int m, int n) // m^n
    {
        int result=1;
    
        while(n--) result*=m;    
        return result;
    }
    
    int str2digital(const char *str)
    {
        int  i = 0,j;
        const char *ptr = str;
        char temp[5];
        int  digt = 0;
    
        while( *ptr != '\0') {
            temp[i++] = *ptr++ - '0';
        }
    
        for (j = 0; j < i; ++j)  {
            digt += temp[j] *pow(10 ,i-j-1);
        }
    
        return digt;
    }
    
    int main ()
    {
        char t[15] = {0};
        char y[5] = {0}, m[5] = {0}, d[5] = {0};
        int  yr,mon,dy;
        int  idx;
        int  order = 0;
    
        int IsRunTbl[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
        int UnRunTbl[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    
        while(true){
    
            scanf("%s",t);
    
            for (idx = 0; idx < 4; ++idx) {
              y[idx] = t[idx];
            }
            y[idx] = '\0';
    
            m[0] = t[5];
            m[1] = t[6];
            m[2] = '\0';
    
            d[0] = t[8];
            d[1] = t[9];
            d[2] = '\0';
    
            yr  = str2digital(y);
            mon = str2digital(m);
            dy  = str2digital(d);
    
             if ( yr%400 == 0 || ( yr%4 == 0 && yr%100 !=0 ) ) {   // 如果是闰年 
               for ( idx = 0; idx < mon; ++idx) {
                 order += IsRunTbl[idx];
                 }
             } else {   
                for ( idx = 0; idx < mon; ++idx) {
                order += UnRunTbl[idx];
                }
            }
            order += dy;
            printf("%d\n", order);
    
         }
    
         return 0;
    }
    
    评论
    解决 无用
    打赏 举报
  • EasonWEZ 2015-11-18 07:52

    #include
    #include

    void main()
    {
    int daynumber(int year,int month,int day);
    int date_y,date_m,date_d,day_num;
    printf("please input the date(yyyy/mm/dd):\n");
    scanf("%d/%d/%d",&date_y,&date_m,&date_d);
    day_num=daynumber(date_y,date_m,date_d);
    printf("%d/%d/%d is the %dth day of %d year.\n",date_y ,date_m ,date_d ,day_num ,date_y );
    system("pause");
    }

    int daynumber(int year,int month,int day)
    {
    int i,flag=0,d_num=0;
    ((year%400==0)||(year%100!=0&&year%4==0))?flag=1:flag=0;
    for(i=1;i<month;i++)
    {
    switch (i)
    {
    case 1:d_num +=31;break;
    case 2:(flag==1)?d_num +=29:d_num +=28;break;
    case 3:d_num +=31;break;
    case 4:d_num +=30;break;
    case 5:d_num +=31;break;
    case 6:d_num +=30;break;
    case 7:d_num +=31;break;
    case 8:d_num +=31;break;
    case 9:d_num +=30;break;
    case 10:d_num +=31;break;
    case 11:d_num +=30;break;
    case 12:d_num +=31;break;
    }
    }
    d_num+=day;
    return d_num ;
    }

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题