ahsong 发布留言 2008-8-2 22:53
求高手一个程序的编程思路!
小弟对C语言一窍不通,前两天下载了一个WIN Tc玩,从教程上拷了一段代码做成了一个算一年过了多少天的程序,今天突发奇想想做一个算自己在世上活了多少天的程序
要实现的结果:通过输入自己的出生年月,程序算出从出生起到当天(如果可以的话提取电脑当前系统时间)共过了多少天
哪位高手有兴趣把代码写出来我学习学习
jimmytom 发布留言 2008-8-2 23:20
我不是高手,但给你一个思路,计算出你出生到现在活了多少秒,time函数返回从1970年1月1日午夜到现在的秒数, 你先把出生日期输进去,再用setdate,settime函数修改时间,日期,再调用time函数,保存这个值,把时间修改成现在真正的时间,再调用time函数,两数相减即是你所活秒数,要算天数再用除法可得,所用函数在time.h头文件里面。我用的GCC有此头文件,不知道标准C里面有没有这个头文件。
Rand 发布留言 2008-8-2 23:29
[un]jimmytom[/un] 在 2008-8-2 23:20 的发言:[/bo]
我不是高手,但给你一个思路,计算出你出生到现在活了多少秒,time函数返回从1970年1月1日午夜到现在的秒数, 你先把出生日期输进去,再用setdate,settime函数修改时间,日期,再调用time函数,保存这个值,把时间修 ... |
这个思路不错,比用万年历来要简单多了
ahsong 发布留言 2008-8-2 23:31
如果有人把代码写出来就好了,小弟现在对你们说的东西似懂非懂
netstriker 发布留言 2008-8-3 00:55
我对C还是一个初学者,结果用了最笨的方法来求出来,我在VC6.0上测试没有问题。
#include
#include
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;
}elan1986 发布留言 2008-8-3 01:53
#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 {
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);
}
页: [1]