2012-06-13 89 views
-1
#include<math.h> 
    #include<stdio.h> 
    int main() 
    { 
     long i,j[100000],k,l,T,a,n[100000],c,sum=0,m; 
     scanf("%ld\n", &T); 
     for(c=1; c<=T; c++) 
     { 
      n[c] = 0; 
     } 
     for(i=1; i<=T; i++) 
     { 
      scanf("%ld", &j[i]); 
      printf(" \n"); 
     } 
     for(k=1; k<=T ; k++) 
     { 
      for(l=1; j[k]>pow(5,l); l=l+15); 
      a=l++; 
      n[k] = j[k]; 
      while(a>0) 
      { 
       n[k] = n[k]/pow(5,l); 
       sum = sum + n[k]; 
      } 
      n[k] = sum; 
     } 
     for(m=1; m<=T; m++) 
     { 
      printf("%ld \n", &n[m]); 
     } 
     return 0; 
    } 
    long pow(long x,long y) 
    { 
     if(y==0) 
      return 1; 
     else 
     return(x*pow(x,y-1)); 
    } 

錯誤:衝突的類型POW階乘零,錯誤?

而且是程序正確的,否則? 這裏是程序語句 輸入

在輸入的第一行有一個正整數T(約等於100000)。它代表要遵循的數字的數量。然後有T個行,每行包含正好一個正整數N,1 < = N < = 1000000000.

輸出

對於每個數N,輸出含有單一非負整數Z上一行( N)。 例

樣品輸入:

6 
3 
60 
100 
1024 
23456 
8735373 

樣本輸出:

0 
14 
24 
253 
5861 
2183837 

回答

2

powmath.h定義,你也可以定義在你的代碼。 math.h中的pow有簽名:double pow(double x, double y)這是造成衝突。

使用math.hpow並刪除您的版本。或者使用你執行的那個並刪除math.h

如果你正在使用你的pow版本gcc使用-fno-builtin-pow停止檢測pow作爲內置,以便使用您的pow版本。

+0

查看我對MAK的評論.. –

+0

可能將答案刪除。你可以請重新發布嗎? – phoxis

+1

[定義你自己的外部函數'pow']仍然調用UB。您必須重命名該函數或將其設爲靜態以避免UB。即使使用'-fno-builtin-pow'編譯gcc,也可以使用 –