C语言计算时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言计算时间相关的知识,希望对你有一定的参考价值。

已知手机开始通话的时间,比如: 24:51,表示某时的24分51秒,结束通话的时间,比如:25:02,表示某时25分02秒。假设手机的通话时间不会超过1小时。根据这两个数据就可以计算出,通话时间为:11秒。
程序的任务是:从键盘输入“开始通话时间”,“结束通话时间”,计算并输出通话的秒数(不考虑用户输入错误的情况)。用户输入的格式是:分秒间用冒号分开,开始、结束间用空格分开。例如:
用户输入:24:55 26:12
程序输出:77

在C语言中计算时间,可以使用标准库中的计时函数——clock()。

函数原型:

clock_t clock( void );

其中clock_t是用来保存时间的数据类型,在time.h文件中,可以找到对它的定义:

#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif


很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:

#define CLOCKS_PER_SEC ((clock_t)1000)

可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。下面举个例子,可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间:

void elapsed_time()

printf("Elapsed time:%u secs.\\n",clock()/CLOCKS_PER_SEC);

当然,也可以用clock函数来计算的机器运行一个循环或者处理其它事件到底花了多少时间:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main( void )

long    i = 10000000L;
clock_t start, finish;
double  duration;
printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i-- )      ;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\\n", duration );
system("pause");
参考技术A #include <stdio.h>
int main()

int a,b,c,d;
scanf("%d:%d %d:%d",&a,&b,&c,&d);
printf("%d\n",c*60+d-(a*60+b));

满意请采纳!
参考技术B #include <stdio.h>
int main(void)

int min_start,min_end,sec_start,sec_end,last;
scanf("%d%*c%d%d%*c%d",&min_start,&sec_start,&min_end,&sec_end);
last=60*(min_end-min_start)+(sec_end-sec_start);
printf("%d\n",last);
return 0;
参考技术C #include <stdio.h>
int main()

int a,b,c,d;
scanf("%d:%d",&a,&b);
scanf("%d:%d",&c,&d);
printf("%d\n",c*60+d-(a*60+b));
return 0;
本回答被提问者采纳
参考技术D //最短最精辟 不解释
24:55 26:12
77
Press any key to continue

#include <stdio.h>
main()

int begM,endM,begS,endS;
scanf("%d:%d %d:%d",&begM,&begS,&endM,&endS);
printf("%d\n",60*(endM-begM)+(endS-begS));

时间换算 c语言

本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。
输入格式:
输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n(<60)。
输出格式:
输出在一行中给出hh:mm:ss格式的结果时间。
输入样例:
11:59:40
30

输出样例:
12:00:10

#include<stdio.h>

int main()

int hh,mm,ss;
int add;
scanf("%d:%d:%d",&hh,&mm,&ss);
scanf("%d",&add);

ss=ss+add;
if(ss>=60)
ss=ss-60;
mm++;
if(mm>=60)
mm=mm-60;
hh++;
if(hh>=24)
hh=hh-24;



printf("%d:%d:%d\\n",hh,mm,ss);




追问

测试结果一分(满分15)

追答

你把测试截图发来看看

参考技术A 网上一位大神写的,感觉是目前见过写的最好的方法。
#include<stdio.h>
int main()

int hh, mm, ss;
scanf("%d:%d:%d",&hh,&mm,&ss);
int n;
scanf("%d",&n);
ss = ss + n;
mm += (ss - ss%60) > 0, ss %= 60;
hh += (mm - mm%60) > 0, mm %= 60;
hh %= 24;
printf("%02d:%02d:%02d",hh,mm,ss);
return 0;
参考技术B #include <stdio.h>
int main()

int hours, minutes, seconds;
int num;
scanf("%d:%d:%d", &hours, &minutes, &seconds);
scanf("%d", &num);
int quotient,remain;
quotient = (seconds + num) / 60;
seconds = (seconds + num) % 60;
remain = (quotient + minutes) / 60;
minutes = (quotient + minutes) % 60;
hours = (remain + hours) % 24;
printf("%d:%d:%d", hours, minutes, seconds);
return 0;
参考技术C int main(int argc, char *argv[]) 

int t,m,s,n;
scanf("%d:%d:%d",&t,&m,&s);
scanf("%d",&n);
int all;
all=t*60*60+m*60+s+n;
printf("\\n%d:%d:%d",all/3600,(all%3600)/60,(all%3600)%60);
return 0;

以上是关于C语言计算时间的主要内容,如果未能解决你的问题,请参考以下文章

c语言编程,怎么计算时间

C语言计算时间函数

C语言中怎么计算一个数的平方?

C语言中如何实现大数计算

c语言 输入某年某月某日(两次),计算两次输入日期的间隔

C语言计算机器运行时间