Chinaunix首页 | 论坛 | 博客
  • 博客访问: 240919
  • 博文数量: 35
  • 博客积分: 791
  • 博客等级: 军士长
  • 技术积分: 510
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-05 16:56
文章分类
文章存档

2013年(7)

2012年(28)

我的朋友

分类: C/C++

2012-09-29 17:31:54

程序要求:
把某年某月某天这种日期形式转换为某年中第几天的表示形式,反之亦然。下列两个例子实现日期转换,前一个中函数day_of_year将某年某月某日转化为某年中的第几天。而第二个例子则相反。
eg1:

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. static char daydtab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
  4.      {0,31,29,31,30,31,30,31,31,30,31,30,31}
  5. };

  6. int main()
  7. {
  8.     int year, month,day;
  9.     int days;

  10.     printf("please input year:mouth:day\n");
  11.     scanf("%d:%d:%d",&year,&month,&day);
  12.     days=day_of_year(year,month,day);
  13.     printf("%d\n",days);
  14.     return 0;

  15. }
  16. int day_of_year(int year,int month,int day)
  17. {
  18.     int leap;
  19.     int i;

  20.     if(year%4==0 && year %100!=0 || year %400==0)
  21.         leap=1;
  22.     if(month<1||month>12)
  23.     {
  24.         printf("your input month error");
  25.         return -1;
  26.     
  27.     }
  28.     if(day<1 || day>daydtab[leap][month])
  29.     {
  30.         printf("your input day error");
  31.         return -1;
  32.     
  33.     }
  34.        for(i = 1; i < month; i++)
  35.      day = day + daydtab[leap][i];
  36.     
  37.      return day;
  38. }

eg2:


点击(此处)折叠或打开

  1. #include <stdio.h>
  2. static char daytab[2][13]={
  3.     {0,31,28,31,30,31,30,31,31,30,31,30,31},
  4.     {0,31,29,31,30,31,30,31,31,30,31,30,31}
  5. };

  6. int main()
  7. {
  8.     
  9.     //int *day="0";
  10.     int yearday;
  11.     int year;

  12.     printf("please input year:day:\n");
  13.     scanf("%d:%d",&year,&yearday);
  14.     month_day(year,yearday,0,0);
  15.     return 0;
  16. }

  17. void month_day(int year,int yearday,int *pmonth,int *pday)
  18. {
  19.     int i;
  20.     int leap;


  21.    leap = year%4==0 && year%100 !=0 || year%400==0;
  22.    for(i=1;i<12 && yearday>daytab[leap][i];i++)
  23.      yearday-=daytab[leap][i];

  24.    if(i>12 && yearday>daytab[leap][12])
  25.    {
  26.      *pmonth=-1;
  27.      *pday=-1;
  28.     
  29.    
  30.    }
  31.    else
  32.    {
  33.      *pmonth=i;
  34.      *pday=yearday;
  35.      return ;
  36.    }


  37. }

其中第二个例子出现段错误,求高手赐教指点。

阅读(1500) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~