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

欢迎大家参与!--------------------------------------------------------------------------------------------------------------------------
搜索更多相关主题的帖子: 输入 输出 年月日 
2009-10-23 19:05
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
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
所以我再定义一个是错误的吗?
我把day函数和month函数合并到一个函数还是不行
大家有什么好的解决方法吗

想象力征服世界
2009-10-24 12:41
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
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
不可以哦
没有输出

想象力征服世界
2009-10-24 19:06
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
以下是引用xiaowenhuman在2009-10-24 18:58:35的发言:

  if(p1.year>2||(p1.month==2&&p1.day==30)) 这个是他生那年如果是闰年的话的判断,但是有可能这人是2月29号生的,谢谢你,这里错了应该是 if(p1.year>2||(p1.month==2&&p1.day==29))
p1.year>2这个是怎么判断的,我还是不明白

想象力征服世界
2009-10-24 19:11
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
以下是引用StarWing83在2009-10-24 18:54:24的发言:

= =非得贴个好点的代码某些人才死心……
稍等,月数组有误…………已修正。

#include <stdio.h>

int is_leap_year(int y)
{
    return y % 400 == 0 || (y % 4 == 0 && y % 100 != 0);
}

int get_days(int y, in ...
还是没有输出?

想象力征服世界
2009-10-24 19:31
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 

输入有误

想象力征服世界
2009-10-24 19:33
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
可以跟上上楼讨教这是怎么练出来的吗

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



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

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