2013-02-25 70 views
0

下面的代碼應該找到for循環的運行時間(以秒爲單位)。看看其他資源,這應該可以做到,在for循環運行後,從clock()開始clock()。任何想法爲什麼代碼不能按照書面形式工作?在C中找到一段代碼的運行時間

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

//prototypes 
int rfact(int n); 
int temp = 0; 

main() 
{ 
    int n = 0; 
    int i = 0; 
    double result = 0.0; 
    clock_t t; 
    printf("Enter a value for n: "); 
    scanf("%i", &n); 

    printf("n=%i\n", n); 

    //get current time 
    t = clock(); 

    //process factorial 2 million times 
    for(i=0; i<2000000; i++) 
    { 
     rfact(n); 
    } 

    printf("n=%i\n", n); 

    //get total time spent in the loop 
    result = (double)((clock() - t)/CLOCKS_PER_SEC); 

    //print result 
    printf("runtime=%d\n", result); 
} 

//factorial calculation 
int rfact(int n) 
{ 

    if (n<=0) 
    { 
     return 1; 
    } 
    return n * rfact(n-1); 
} 
+1

你忘了問一個問題。 – 2013-02-25 00:57:07

+0

那真是令人尷尬。 – zakparks31191 2013-02-25 01:03:08

回答

2
result = (double)((clock() - t)/CLOCKS_PER_SEC); 

這應該是:

result = ((double)(clock() - t))/CLOCKS_PER_SEC; 

否則,你正在做的整數除法,並將結果轉換爲雙,這是不是你想要的。

另外:

printf("runtime=%d\n", result); 

應該是:

printf("runtime=%f\n", result); 
+0

當我運行它時,它會在毫秒內完成後得到一個很長的數字。輸出在-343597384和1202590843之間切換,每隔一次運行 – zakparks31191 2013-02-25 01:09:33

+0

您有:'printf(「runtime =%d \ n」,result);'。 '%d'用於'int's,但'result'是一個浮點數。 – 2013-02-25 01:20:53

相關問題