即使在包含头之后也隐含声明函数

时间:2014-02-17 17:26:58

标签: c

由于两个函数的隐式声明错误,我在c程序main中使用下面列出的两个函数时遇到了问题。请有人请指教。 谢谢!

#include <stdio.h>
#include <stdlib.h>
float twoxaverage(int n, float t__scores[]);

float getaverage(int n, float t_scores[])
{    int sum=0; float average=0; int i;
     for (i=0; i<n; i++)
     {
          sum=sum + t_scores[i];
     }


     average=(float)sum/(float)n;
     return(average);
 }

 float twoxaverage(int n, float t__scores[])
 {   float mult;
     mult=2*(getaverage( n, t__scores));
     return (mult);
 }

 int main()
 {
     int t_score[]={1,2,3,4}; 
     float twox;
     twox=twoaverage4,t_score);
     float twoxaverage(int n, float t__scores[]);

     return 0;
 }

2 个答案:

答案 0 :(得分:1)

你的主要应该离开:

int main(){

    int t_score[] = { 1, 2, 3, 4 }; float twox;
    twox = twoaverage4, t_score); float twoxaverage(int n, float t__scores[]);

    return 0;
}

TO:

int main(){

    int t_score[] = { 1, 2, 3, 4 }; 
    float twox;
    twox = twoxaverage(4, t_score);

    return 0;
}

作为开始。

我也可以简化你的:

float getaverage(int n, float t_scores[]){    
    int sum=0; float average=0; int i;
     for (i=0; i<n; i++){
      sum=sum + t_scores[i];
     }

     average=(float)sum/(float)n;
     return(average);
 }

TO:

float getaverage(int n, float t_scores[]){    
    float average=0; int i;

    for (i=0; i<n; i++){
        average = average + t_scores[i];
    }

     return(average / (float)n);
 }

这使用少一个变量并执行相同的数学运算。

答案 1 :(得分:0)

在此行中,您在一个标识符中至少有两个拼写错误

twox=twoaverage4,t_score);float twoxaverage(int n, float t__scores[]);

而不是

twox=twoaverage4,t_score);

应该有

twox = twoxaverage(4,t_score);

此外,不需要声明后面的函数。而不是

twox=twoaverage4,t_score);float twoxaverage(int n, float t__scores[]);

你可以写简单

twox = twoxaverage(4,t_score);

我认为你不仅要获得平均值,还要输出它。所以你至少可以添加声明

std::cout << twox << std::endl;

或者如果它是C程序,那么您可以使用printf代替C ++ operator <<来输出2x

还要考虑到您的功能getaverage是错误的。将float数字添加到sum

时,将浮点数转换为int
           float getaverage(int n, float t_scores[])
           {    int sum=0; float average=0; int i;
                for (i=0; i<n; i++)
           {
                sum=sum + t_scores[i];
           }


           average=(float)sum/(float)n;
           return(average);
           }

有效功能可以采用以下方式

           float getaverage( int n, const float t_scores[] )
           {    
                float sum = 0.0f;

                for ( int i = 0; i < n; i++ )
                {
                     sum += t_scores[i];
                }

                return ( n == 0 ? 0.0f : sum / n );
           }

或者,如果您使用旧的C编译器,则该函数可以写为

           float getaverage( int n, const float t_scores[] )
           {    
                float sum = 0.0f;
                int i = 0;

                for ( ; i < n; i++ )
                {
                     sum += t_scores[i];
                }

                return ( n == 0 ? 0.0f : sum / n );
           }

函数twoxaverage可以通过以下方式简化

inline float twoxaverage( int n, const float t__scores[] )
{   
     return ( 2 * getaverage( n, t__scores ) );
}