Ⅰ c语言中,如何比较两个时间相差几天
计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减。
要考虑闰年的情况,判断闰年的口诀:4年一闰,100年不闰,400年再闰。
((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
网上找了一个(偷懒= =!),修改下如下:
#include <stdio.h>
int sum(int y,int m,int d)
{
unsigned char x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,s=0;
for(i=1;i<y;i++)
if(i%4==0 && i%100!=0 || i%400==0)
s+=366;//闰年
else
s+=365;//平年
if(y%4==0 && y%100!=0 || y%400==0)
x[2]=29;
for(i=1;i<m;i++)
s+=x[i];//整月的天数
s+=d;//日的天数
return s;//返回总天数,相对公元1年
}
void main()
{
unsigned char y1,m1,d1,y2,m2,d2;
int s1,s2;
printf("输入第一个年 月 日:");
scanf("%d %d %d",&y1,&m1,&d1);
printf("输入第二个年 月 日:");
scanf("%d %d %d",&y2,&m2,&d2);
s1=sum(y1,m1,d1);
s2=sum(y2,m2,d2);
if (s1 > s2)
printf("相差天数:%ld ",s1-s2);
else
printf("相差天数:%ld ",s2-s1);
}
Ⅱ c语言题目 计算时间相减
很简单嘛
#include<stdio.h>
int main()
{
int s_min,s_sec,e_min,e_sec;
printf("Please input the time\n");
scanf("%d:%d %d:%d",&s_min,&s_sec,&e_min,&e_sec);
printf("%d\n",abs((s_min-e_min)*60+s_sec-e_sec));//用个绝对值就OK啦
}
Ⅲ 求C语言程序,我输入日期(年月日),然后输入前后加减多少天,得出那个日期是多少
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
main()
{
int year,month,day;
int leapyear=0;//闰年时使用
int daytime=0;
int sum;
static int month_date[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("请输入日期:(例如:2010 5 27)");
scanf("%d%d%d",&year,&month,&day);
if(year<=0||month>12||month<1)//判断输入是否正确
{
printf("Error!\n");
getch();
exit(0);
}
if(year%400==0||(year%4==0&&year%100!=0))//判断是否为闰年
leapyear=1;//是就加1
if(month==2)//判断日是否输入正确,2月是特殊的因为分闰年和平年
{ if((month_date[month-1]+leapyear)<day||day<=0)
{
printf("Error!\n");
getch();
exit(0);
}
}
if(month!=2)//当输入不是2月时,判断输入
{
if(month_date[month-1]<day||day<=0)
{
printf("Error!\n");
getch();
exit(0);
}
}
printf("\n请输入天数:");
scanf("%d",&daytime);//输入第N天后
if(daytime<0)
{
printf("Error!\n");
getch();
exit(0);
}
sum=daytime+day;//当前日期与N天相加
do
{
if(month==2)//判断当月是不是二月份
month_date[month-1]+=leapyear;
if(sum>month_date[month-1])
{
sum-=month_date[month-1];
month++;//超过当月天数,加一个月
if(month==13)//当月份超过12月时,重新返到1月
{
year++;//加一年
if(year%400==0||(year%4==0&&year%100!=0))//判断加一年后是不是闰年
leapyear=1;
else
leapyear=0;//不是闰年则为0
month=1;//因为12月的下一个月是1月
}
}
}while(sum>month_date[month-1]);//当加起来的天数少于当月的天数就停止循环
day=sum;
printf("\n第%d天后是%d %d %d",daytime,year,month,day);//输出
getch();
}
Ⅳ 时间加减 C语言
在VC中我是这样弄的:
SYSTEMTIME time;
::GetSystemTime(&time);\\取当前时间,time为一个临时的变量
CTime now=time;\\将当前时间存到CTime变量中
\\输入要进行对比的时间存入time中,比如下面(对比时间是2006年8月20日):
time.wYear=2006;
time.wMonth=8;
time.wDay=20;
CTime cmptime=time;\\将要对比的时间放到另一个CTime变量中
CTimeSpan overtime=now-cmptime;\\比较时,两时间直接作差,保存在CTimeSpan变量中,这个值有正负,overtime虽然是CTimeSpan类型的,但是用法和CTime一样
int overdays=overtime.GetDays();\\取天数差距,本例中就为9(今天是8月29日),如果刚才now-cmptime换成cmptime-now,现在的值就是-9
int overdays=overtime.GetMonths();同上,取月差距,其他方法一样,年,分,秒都能比较
自己回去试一试吧,应该有满意的效果!
我也是琢磨了很长时间才弄出来,个人觉得算是比较方便的方法了,正如你所说,时间的计算比较复杂,容易出错,不如让提供好的MFC类对时间进行处理,省去不必要的麻烦!
Ⅳ c语言中时间处理
稳定超频,要看是什么CPU了,主板,电源,散热器,都很重要,因为超频后功耗变高,对主板也是一种考验,看主板CPU供电相数,电源功率,功耗变高,温度也会变高了,好的散热器才能压的住,一般CPU超频都有一个最大电压值,一般来说,电压相对低的,能达到更高的倍频或者外频的CPU体质比较好,再一个是稳定性,超频后要经过各种测试,稳定的同时也要控制温度。一般CPU要注意的就是CPU电压,防掉电自动加压,倍频或者外频数值。
Ⅵ C语言计算两个时间之间的时间差,精确到秒。 现在我用的是time_t来计算的,但是我发现这个tim
第一个时间相对于1900-01-01 00:00:00是多少秒
第二个时间相对于1900-01-01 00:00:00是多少秒
再相减就OK
Ⅶ c语言时间函数的具体使用方法,时间的加减
#include<stdio.h>
#include<time.h>
intmain()
{
time_trawtime;
structtm*timeinfo;
time(&rawtime);
timeinfo=localtime(&rawtime);
printf("Thecurrentdate/timeis:%s",asctime(timeinfo));
return0;
}
说明:
time_t // 时间类型(time.h 定义)
struct tm { // 时间结构,time.h 定义如下:
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
}
time ( &rawtime ); // 获取时间,以秒计,从1970年1月一日起算,存于rawtime
localtime ( &rawtime ); //转为当地时间,tm 时间结构
asctime() // 转为标准ASCII时间格式:
//就是直接打印tm,tm_year 从1900年计算,所以要加1900,月tm_mon,从0计算,所以要加1