| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3111 人关注过本帖, 1 人收藏
标题:计算出生日到计算日的总天数
只看楼主 加入收藏
smokingcnc
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-8-4
收藏(1)
 问题点数:0 回复次数:5 
计算出生日到计算日的总天数
请高手帮忙看看,有错误不知哪里错了,谢谢。
#include <stdio.h>
int is_leap_year(int year)
{
  int leap;
  if(year%4==0&&year%100!=0||year%400==0)leap=1;
  else leap=0;
  return leap;
}
int len_of_month(int year,int month)
{
  int month_days;
  if(month==2)
    if(is_leap_year(year))month_days=29;
    else month_days=28;
  else if(month==4||month==6||month==9||month==11)month_days=30;
       else month_days=31;
  return month_days;
}
int len_of_days(int year,int month,int date)
{
  int total_days,n;
  for(n=1,total_days=0;n<month;n++)
     total_days+=len_of_month(year,n);
  total_days+=date;
  return total_days;
}
void main()
{
  int year1,month1,date1,days1,year2,month2,date2,days2,days3,days,n;
  printf("Please input year1,month1,date1:");
  scanf("%d,%d,%d",&year1,&month1,&date1);
  printf("Please input year2,month2,date2:");
  scanf("%d,%d,%d",&year2,&month2,&date2);
  days1=len_of_days(year1,month1,date1);
  days2=len_of_days(year2,month2,date2);
  for(n=year1,days3=0;n<year2;n++)
  {
    days3+=(is_leap_year(year1)?366:365);
  }
  days=days3+days2-days1;
  printf("%d/%d/%d~%d/%d/%d is the %d Day\n",year1,month1,date1,year2,month2,date2,days);
  getch();
  return 0;
}
搜索更多相关主题的帖子: 生日 include return 
2011-08-04 16:03
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
程序就不看了  你可以试试把定义两个数组一个是平年的每个月有几天  一个是闰年的每个月有几天

                                         
===========深入<----------------->浅出============
2011-08-04 16:14
风生钧起
Rank: 4
来 自:江西
等 级:业余侠客
帖 子:383
专家分:246
注 册:2011-7-26
收藏
得分:0 
同上 !void改int  getch()看着有问题

墨一世红颜倾醉己    霁天谁与话风流

修仙``````````````````````````````````````````````
2011-08-04 16:22
q7408695
Rank: 2
等 级:论坛游民
帖 子:22
专家分:50
注 册:2011-8-2
收藏
得分:0 
void main()
{
 ***********************************
 return 0;
}
话说有这样的?
/***楼主你的英语好拽啊。。。我一般写个i,j,k,l,m,n往后加。。。佩服你。***/
2011-08-04 16:27
小七猪猪
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-7-21
收藏
得分:0 
//我把我的代码贴给你,你自己看看吧,这种算天数的,多半都是闰年闰月弄错了
//我这个先输入的日期不必比后输的小
#include  <stdio.h>
#include  <conio.h>

#define  YEAR  365

int   delta_T( int  year[], int month[], int day[] )
{
    int   i, t, k, s,
          m[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
   
    if( year[0] > year[1] )
    {
        t=year[0];  year[0]=year[1];   year[1]=t;
        t=month[0]; month[0]=month[1]; month[1]=t;
        t=day[0];   day[0] = day[1];   day[1]=t;
    }
    else
        if( year[0]==year[1] && month[0]>month[1] )
        {
            t=year[0];  year[0]=year[1];   year[1]=t;
            t=month[0]; month[0]=month[1]; month[1]=t;
            t=day[0];   day[0] = day[1];   day[1]=t;
        }
        else
            if( year[0]==year[1] && month[0]==month[1] )
                return  day[0]>day[1] ? day[0]-day[1] : day[1]-day[0];        //当年月都相同时,函数直接返回天数差
   
    if( year[0]%400==0 || ( year[0]%4==0 && year[0]%100!=0 ) )
        if( year[1]%400==0 || ( year[1]%4==0 && year[1]%100!=0 ) )
            t = 2;                    //year[0]与year[1]都是闰年
        else
            t = 3;                    //year[0]是闰年,而year[1]不是
    else
        if( year[1]%400==0 || ( year[1]%4==0 && year[1]%100!=0 ) )
            t = 4;                    //year[0]不是闰年,而year[1]是
        else
            t = 0;                    //year[0]和year[1]都不是闰年
   
    s = day[1];
   
    if( year[0] == year[1] )                                    //当两年份相同时,则直接求
    {
        if( t == 2 )
            for( i=month[0]; i<month[1]; i++ )
                s += m[1][i-1];
        else
            for( i=month[0]; i<month[1]; i++ )
                s += m[0][i-1];
        s -= day[0];
    }
    else
    {
        if( t==2 || t==3 )
            for( i=month[0]; i<13; i++ )
                s += m[1][i-1];
        else
            for( i=month[0]; i<13; i++ )
                s += m[0][i-1];
        s -= day[0];
        
        k = 0;                            //year[1]距year[0]有几年
        for( i=year[0]+1; i<year[1]; i++ )
        {
            k++;
            if( i%400==0 || ( i%4==0 && i%100!=0 ) )            //计算闰年
                s++;
        }
        s += k*YEAR;
   
        for( i=1; i<month[1]; i++ )
            s += m[0][i-1];
        
        if( month[1] == 2  &&  day[1] == 29 )
            s += 1;
        
        if( month[1] > 2 )
            if( t==2 || t==4 )
                s += 1;
    }
   
    return  s;
}

int   main()
{
    int   i, year[2], month[2], day[2], s;
   
    for( i=0; i<2; i++ )
    {
        printf("\n请输入如年月日(如:2011-1-1):");
        scanf("%d-%d-%d", &year[i], &month[i], &day[i] );
    }
   
    s = delta_T( year, month, day );
   
    printf("\n%d-%d-%d 与 %d-%d-%d 相隔%d天", year[0], month[0], day[0], year[1], month[1], day[1], s );
   
    getch();
   
    return  0;
}

没有做不到
2011-08-05 08:28
gao22620
Rank: 2
等 级:论坛游民
帖 子:22
专家分:28
注 册:2011-4-11
收藏
得分:0 
用的 好像是WIN-TC编译器吧?
2011-08-05 10:02
快速回复:计算出生日到计算日的总天数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032797 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved