| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4781 人关注过本帖, 1 人收藏
标题:【新手问题】功能:输入出生年月日与现在年月日,输出此人人生已过去多少天
只看楼主 加入收藏
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
结帖率:100%
收藏(1)
 问题点数:0 回复次数:36 
【新手问题】功能:输入出生年月日与现在年月日,输出此人人生已过去多少天
自己想的,哪位高手可以编写一个吗?欢迎大家一起讨论,本人觉得这个问题有些趣味:我们人生已经奔跑过多少时光,其中我们是抓住了还是浪费掉了?
让我们来直观的看下数据!另一方面,因为是新手,也可以挑战一下,其中实现它用到了很多基本的东西(自己觉得)。
我的思路:一,构建结构体。
          二,利用三个子函数,即year、Month、day三个函数分别计算年数、月数、日数。
         /*其中年需要考虑是否闰年、即同时能被4和100整除或能被400整除的年数*/
         /*其中月需要考虑大小月和闰月(二月)一三五七八十十二为大,其他除二月均为小*/

欢迎大家参与!--------------------------------------------------------------------------------------------------------------------------
搜索更多相关主题的帖子: 输入 输出 年月日 
2009-10-23 19:05
谁是王者
Rank: 2
等 级:论坛游民
帖 子:211
专家分:92
注 册:2009-3-3
收藏
得分:0 
可以这样写:
比如先输入1990 2 26
先算它到下一年也就是1991还有多少天
然后输入现在的2009 10 23
然后算1991到2009中间一共有多少个整年。。
然后在加上后面的10月23一共有多少天。。
结果相加就好
2009-10-23 19:13
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
原来我已经活了7667天了啊……

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-10-23 19:36
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
我编的出了点问题主要是month和day函数的函数功能的实现
#include<stdio.h>
struct date
{   int year;
    int mouth;
    int day;};
int year(struct date *p,struct date *q)
    {int flag,sum=0;
      while(p->year<=q->year)
      {if((p->year%4==0)&&(p->year%100==0))
              flag=1;
          if(p->year%400==0)
              flag=1;
          else flag=0;
          if(flag==1)
              sum+=366;
          else sum+=365;}
          return(sum);
          }
int day(int flag,struct date *p,struct date *q)
    {int sum=0;
        switch(flag)
        {case 1:for(;p->day<=31;p->day++)
        {sum+=1;return(sum);break;}
        case 0:for(;p->day<=30;p->day++)
        {sum+=1;return(sum);break;}
        case -1:for(;p->day<=30;p->day++)
        {sum+=1;return(sum);break;}}
        }
int mouth(struct date *p,struct date *q)
    {int flag,sum=0;
        if(p->mouth<q->mouth)
            while(p->mouth++<=q->mouth)
                if((p->mouth%2==1)&&p->mouth<=7&&(p->mouth%2==0)&&p->mouth<=12)
                {flag=1;sum+=day(flag,p->day,q);p->day=1;}
                else if(p->mouth/2==1)
                    {flag=-1;sum+=day(flag,p->day,q);p->day=1;}
                else {flag=0;sum+=day(flag,p->day,q);p->day=1;}
                    return(sum);
                    }
 
void main()
    {struct date *p,*q;
        int sum=0;
        printf("please print:\n");
        scanf("%d%d%d%d%d%d",p->year,p->mouth,p->day,q-year,q->mouth,q->day);
        sum=year(p,q)+mouth(p,q);
        printf("your life is running in %d day!",sum);
        }
 
大家帮我看一下啊,多谢啦

想象力征服世界
2009-10-24 07:19
蓝色药剂
Rank: 4
等 级:业余侠客
帖 子:43
专家分:204
注 册:2007-11-24
收藏
得分:0 
8822数字挺吉利,哈哈。。。
2009-10-24 09:36
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
系统函数getdate(struct date *buf)
date结构型由dos.h已经给出定义,成员da_year da_mon da_day

我可好玩啦...不信你玩玩^_^
2009-10-24 10:09
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
所以我再定义一个是错误的吗?
我把day函数和month函数合并到一个函数还是不行
大家有什么好的解决方法吗

想象力征服世界
2009-10-24 12:41
xiaowenhuman
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:101
专家分:104
注 册:2009-5-10
收藏
得分:0 
#include "stdio.h"
struct student
{
    int year;
    int month;
    int day;
};
year(int year)
{
    if((year%4==0&&year%100==0)||(year%400==0))
    return 1;
    else
    return 0;
}
month(int n)
{
    switch(n)
    {
case 1:return 31;
case 2:return 28;
case 3:return 31;
case 4:return 30;
case 5:return 31;
case 6:return 30;
case 7:return 31;
case 8:return 31;
case 9:return 30;
case 10:return 31;
case 11:return 30;
case 12:return 31;
}
}
void main()
{
    struct student p1,p2;
   int sum=0,i,sumbe=0;
   printf("请输入你的出生年、月、日:");
   scanf("%d%d%d",&p1.year,&p1.month,&p1.day);
   printf("请输入今天的年、月、日:");
   scanf("%d%d%d",&p2.year,&p2.month,&p2.day);
   for(i=1;i<p1.month;i++)
   sumbe=sumbe+month(i);
   if(p1.year>2||(p1.month==2&&p1.day==30))
   sumbe=sumbe+year(p1.year);
   sumbe+=p1.day;
   for(i=1;i<p2.month;i++)
   sum=sum+month(i);
   if(p2.year>2||(p2.month==2&&p2.day==30));
   sum=sum+year(p2.year);
   sum=sum+365*(p2.year-p1.year);
   for(i=p1.year;i<p2.year;i++)
   sum=sum+year(i);
   sum=sum+year(p2.year);
   sum=sum+p2.day;
   sum=sum-sumbe;
   printf("%d",sum);
   getch();
 
}
先用sumbe存放第一个年,月,日到这年第一天有多少天。
用sum存放第二个年,月,日到第一次输入的那个年的第一天有多少天。
再用sum-sumbe
如输入2000 4 4 ,先算到2000 1 1 有多少天(这里不能说成到2000 0 0)sumbe
再输入2009 10 24 ,这到2000 1 1 有多少天。sum
sum=sum-sumbe
2009-10-24 16:33
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
多谢上楼,受教了
还有一个电脑故障问题:电脑一待机就蓝屏,显示0x000000008e错误,其他时候没问题
有知道的朋友麻烦说下
一帖多用哈

想象力征服世界
2009-10-24 18:08
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
#include "stdio.h"  
struct student  
{  
    int year;  
    int month;  
    int day;  
};  
year(int year)  
{  
    if((year%4==0&&year%100==0)||(year%400==0))  
    return 1;  
    else  
    return 0;  
}  
month(int n)  
{  
    switch(n)  
    {  
case 1:return 31;  
case 2:return 28;  
case 3:return 31;  
case 4:return 30;  
case 5:return 31;  
case 6:return 30;  
case 7:return 31;  
case 8:return 31;  
case 9:return 30;  
case 10:return 31;  
case 11:return 30;  
case 12:return 31;  
}  
}  
void main()  
{  
    struct student p1,p2;  
   int sum=0,i,sumbe=0;  
   printf("请输入你的出生年、月、日:");  
   scanf("%d%d%d",&p1.year,&p1.month,&p1.day);  
   printf("请输入今天的年、月、日:");  
   scanf("%d%d%d",&p2.year,&p2.month,&p2.day);  
   for(i=1;i<p1.month;i++)  
   sumbe=sumbe+month(i);  
   if(p1.year>2||(p1.month==2&&p1.day==30)) /*这个判断条件是怎么来的*/
   sumbe=sumbe+year(p1.year);  
   sumbe+=p1.day;  
   for(i=1;i<p2.month;i++)  
   sum=sum+month(i);  
   if(p2.year>2||(p2.month==2&&p2.day==30));  /*这个也是*/
   sum=sum+year(p2.year);  
   sum=sum+365*(p2.year-p1.year);  
   for(i=p1.year;i<p2.year;i++)  
   sum=sum+year(i);  
   sum=sum+year(p2.year);  
   sum=sum+p2.day;  
   sum=sum-sumbe;  
   printf("%d",sum);  
   getch();  
 
}有些看不明白,高手能给我详细标下注释吗?
非常感谢!

想象力征服世界
2009-10-24 18:39
快速回复:【新手问题】功能:输入出生年月日与现在年月日,输出此人人生已过去多 ...
数据加载中...
 
   



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

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