我在C中定义的函数错误吗?

问题描述 投票:-3回答:1

VSS代码中的代码运行器能够运行我的代码,并且可以正常运行,但是存在问题代码,vratiRez功能。我不明白这个问题,它说:应该是“;”。

#include <stdio.h>
#include <math.h>

static int vratiRez(float);

int main(void)
{
   float x_0, x_1, a_0, a_1;
   float n;


   float c1, c2;
   int rez1;
   c2 = (((a_0) * (x_0)) - a_1) / (x_0 - x_1);
   c1 = a_0 - c2;
   rez1 = (int)(c1 * (powf(x_0, n)) + c2 * (powf(x_1, n)));

   int vratiRez(float n)
   {
      if (n == 0)
         return a_0;
      if (n == 1)
         return a_1;
      return (((x_1 + x_0) * vratiRez(n - 1)) - ((x_0) * (x_1)*vratiRez(n - 2)));
   }


   printf("Vrijednost n-tog clana niza pomocu formule: %d\n", rez1);
   printf("Vrijednost n-tog clana niza iz rekurzije: %d", vratiRez(n));

   return 0;
}

有人看到这个问题了吗?

c visual-sourcesafe
1个回答
0
投票

问题是您试图在vratiRez的正文中定义main的正文-C不允许这样的嵌套函数定义。您需要将函数定义移到main的主体之外:

static int vratiRez(float n)
{
   if (n == 0)
      return a_0;
   if (n == 1)
      return a_1;
   return (((x_1 + x_0) * vratiRez(n - 1)) - ((x_0) * (x_1)*vratiRez(n - 2)));
}

int main(void) 
{    
  float x_0, x_1, a_0, a_1;    
  float n;
  float c1, c2;    
  int rez1;    

  c2 = (((a_0) * (x_0)) - a_1) / (x_0 - x_1);    
  c1 = a_0 - c2;    rez1 = (int)(c1 * (powf(x_0, n)) + c2 * (powf(x_1, n)));

  printf("Vrijednost n-tog clana niza pomocu formule: %d\n", rez1);   
  printf("Vrijednost n-tog clana niza iz rekurzije: %d", vratiRez(n));

  return 0; 
}
© www.soinside.com 2019 - 2024. All rights reserved.