欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

程序运行时间

程序员文章站 2022-05-26 22:31:03
...

题目描述

要获得一个C语言程序的运行时间,常用的方法是调用头文件time.h,其中提供了clock()函数,可以捕捉从程序开始运行到clock()被调用时所

耗费的时间。这个时间单位是clock tick,即“时钟打点”。同时还有一个常数CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获

得一个函数f的运行时间,我们只要在调用f之前先调用clock(),获得一个时钟打点数C1;在f执行完成后再调用clock(),获得另一个时钟打点

数C2;两次获得的时钟打点数之差(C2-C1)就是f运行所消耗的时钟打点数,再除以常数CLK_TCK,就得到了以秒为单位的运行时间。



这里不妨简单假设常数CLK_TCK为100。现给定被测函数前后两次获得的时钟打点数,请你给出被测函数运行的时间。

 

输入描述:

 

输入在一行中顺序给出2个整数C1和C1。注意两次获得的时钟打点数肯定不相同,即C1 < C2,并且取值在[0, 107]

 

 

输出描述:

 

 

在一行中输出被测函数运行的时间。运行时间必须按照“hh:mm:ss”(即2位的“时:分:秒”)格式输出;不足1秒的时间四舍五入到秒。

 

输入例子:

 

123 4577973

 

输出例子:

 

12:42:59

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

import java.util.Scanner;

public class Main {

    private static int CLK_TCK=100;//将两者差化为秒数的整数

    private static int HOUR=3600;

    private static int MINUTE=60;

    public static void main(String[] args) {

        Scanner in= new Scanner(System.in);

        float c1=in.nextInt();

        float c2=in.nextInt();

        float dec=c2-c1;

        double div=dec/CLK_TCK;

        int run_time=(int) Math.round(div);

        //System.out.println(div+" "+run_time);//测试向上取整是否正确。

        int hour=0;

        int minute=0;

        int second=0;

        String str1=null;

        String str2=null;

        String str3=null;

        //小时数计算

        if(run_time>HOUR){

            hour=run_time/HOUR;

            if(hour/10!=0)

                str1=String.valueOf(hour);

            else

                str1="0"+String.valueOf(hour);

            minute=run_time%HOUR;

        }

        else{

            str1="00";

            minute=run_time;

        }

        //分钟数计算

        if(minute>60){

            int temp=minute;//若不定义一个先替换掉minute值的变量,则后面的second变量则不对

            minute/=MINUTE;        

            if(minute/10!=0)

                str2=String.valueOf(minute);

            else

                str2="0"+String.valueOf(minute);

            second=temp%MINUTE;

        }

        else{

            str2="00";

            second=minute;

        }

        //计算秒数

        if(second==0)

            str3="00";

        else{

            if(second/10!=0)

                str3=String.valueOf(second);

            else

                str3="0"+String.valueOf(second);

        }

        System.out.println(str1+":"+str2+":"+str3);

        in.close();

    }

}

后来发现自己的解法过于冗长,故对比了一下其他人的代码,发现可以使用输出格式来对输出进行简化。

程序运行时间

相关标签: 撸代码