| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 241 人关注过本帖
标题:求高手一个程序的编程思路!
收藏  订阅  推荐  打印 
ahsong
Rank: 1
等级:新手上路
帖子:3
积分:132
注册:2008-7-31
求高手一个程序的编程思路!

小弟对C语言一窍不通,前两天下载了一个WIN Tc玩,从教程上拷了一段代码做成了一个算一年过了多少天的程序,今天突发奇想想做一个算自己在世上活了多少天的程序
要实现的结果:通过输入自己的出生年月,程序算出从出生起到当天(如果可以的话提取电脑当前系统时间)共过了多少天

哪位高手有兴趣把代码写出来我学习学习
搜索更多相关主题的帖子: 思路  
2008-8-2 22:53
jimmytom
Rank: 1
等级:新手上路
帖子:22
积分:330
注册:2008-7-31

我不是高手,但给你一个思路,计算出你出生到现在活了多少秒,time函数返回从1970年1月1日午夜到现在的秒数, 你先把出生日期输进去,再用setdate,settime函数修改时间,日期,再调用time函数,保存这个值,把时间修改成现在真正的时间,再调用time函数,两数相减即是你所活秒数,要算天数再用除法可得,所用函数在time.h头文件里面。我用的GCC有此头文件,不知道标准C里面有没有这个头文件。
2008-8-2 23:20
Rand
Rank: 2
等级:注册会员
帖子:49
积分:664
注册:2008-7-2

jimmytom 在 2008-8-2 23:20 的发言:

我不是高手,但给你一个思路,计算出你出生到现在活了多少秒,time函数返回从1970年1月1日午夜到现在的秒数, 你先把出生日期输进去,再用setdate,settime函数修改时间,日期,再调用time函数,保存这个值,把时间修 ...
这个思路不错,比用万年历来要简单多了
2008-8-2 23:29
ahsong
Rank: 1
等级:新手上路
帖子:3
积分:132
注册:2008-7-31

如果有人把代码写出来就好了,小弟现在对你们说的东西似懂非懂
2008-8-2 23:31
netstriker
Rank: 3Rank: 3
等级:中级会员
威望:1
帖子:256
积分:2700
注册:2007-3-24

我对C还是一个初学者,结果用了最笨的方法来求出来,我在VC6.0上测试没有问题。

#include <stdio.h>
#include <time.h>

int main(int *argc,char argv[])
{
    int birth_year,birth_mon,birth_day;
    printf("输入出生日期,格式为 yyyy-MM-dd\n");
    scanf("%d-%d-%d",&birth_year,&birth_mon,&birth_day);    //输入出生的年月日

    birth_year = birth_year - 1900;            //计算机是以1900开始计算的

//    printf("birth is:%d %d %d",birth_year,birth_mon,birth_day);

    struct tm* now;
    time_t t;
    time(&t);
    
    now = localtime(&t);

    int day=0;
    while(!(now->tm_year == birth_year && now->tm_mon== birth_mon && now->tm_mday == birth_day))
    {
        (now->tm_mday)--;
        time_t temp_time =  mktime(now);
        now = localtime(&temp_time);
        ++day;
    }
    
    printf("我竟然可以活了%d天!!!\n",day);

    return 0;
}
2008-8-3 00:55
elan1986
Rank: 3Rank: 3
等级:中级会员
威望:2
帖子:194
积分:2210
注册:2007-12-17

#include "stdio.h"
#include "time.h"
#include "conio.h"

main()
{
struct tm *aa;
long  year,month,day,years,months,days,i,j,sum_day=0,sum,leap,sum_s;

time_t t;
printf("input the year: ");
scanf("%d",&year);
printf("input the month: ");
scanf("%d",&month);
printf("input the day: ");
scanf("%d",&day);


time(&t);
aa=gmtime(&t);
years=aa->tm_year+1900;
months=aa->tm_mon;  
days=aa->tm_mday;



    for(i=year+1;i<years;i++)
    {
        if(year%400==0||(year%4==0&&year%100!=0))
            {
                j=366;    
                sum_day=sum_day+j;
            
            }
        else
            {
                j=365;
                sum_day=sum_day+j;
            }
    }



  switch(month) /*先计算某月以前月份的总天数*/
  {
    case 1:sum=0;break;
    case 2:sum=31;break;
    case 3:sum=59;break;
    case 4:sum=90;break;
    case 5:sum=120;break;
    case 6:sum=151;break;
    case 7:sum=181;break;
    case 8:sum=212;break;
    case 9:sum=243;break;
    case 10:sum=273;break;
    case 11:sum=304;break;
    case 12:sum=334;break;
    default:break;
  }

  sum=sum+day; /*再加上某天的天数*/
  if(year%400==0||(year%4==0&&year%100!=0)) /*判断是不是闰年*/
    leap=1;
  else
    leap=0;
  if(leap==1&&month>2) /*如果是闰年且月份大于2,总天数应该加一天*/
    sum++;

if(year%400==0||(year%4==0&&year%100!=0))
    sum=366-sum;
else
    sum=365-sum;
sum_day=sum_day+sum;

sum_s=sum_day*24*3600;
printf("%ld",sum_s);

}
2008-8-3 01:53
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.073554 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved