2012-06-13 86 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,也可以使用 –