如何在函数内调用函数

时间:2019-04-05 03:53:29

标签: c function

我已经使用一些功能编写了代码。在函数getType中,要求用户输入,如果输入是v或V,则应运行函数getHeight,然后运行函数vArea。如果输入为h或H,则应运行函数hArea。如果还有其他输入,则代码应显示“无效输入”,然后返回到函数getType并要求用户再次输入。

我需要将hArea或vArea计算得出的值分配给函数getType,以便随后可以在主函数中使用该值来求解方程。我编写的代码无法正常工作,这就是getType函数的样子:

double getType()
{
    char type;
    double getType, d, h;

    printf("\nEnter wind turbine type (v or h):");
    scanf("%c", &type);

    if (type == 'v' || type == 'V')
    {
        getHeight();
        vArea(d, h);
    }
    else if (type == 'h' || type == 'H')
    {
        hArea(d);
    }
    else
    {
        printf("Invalid input!");
        int c;
        while ((c = getchar()) != '\n' && c != EOF)
            return getType;
    }
    return type;
}

您看到需要修复的任何错误吗?

3 个答案:

答案 0 :(得分:1)

您的代码看起来不正确,您声明的“ getType”是双精度型,并且调用它的方式(如果我的理解是正确的)也不正确,因为“ return getType”只会返回此双精度型,因此未初始化。 为了实现您的目的,我建议您重组函数,只需执行以下操作即可: function()

int function() {
    char type;
    printf("\nEnter wind turbine type (v or h):");
    scanf("%c", &type);
    while(type != 'v' || type |= 'h' .... )
    {
        printf("\n Invalid input, please Enter wind turbine type (v or h):");
        scanf("%c", &type);
    }

    // do the actual function here
}

答案 1 :(得分:1)

我看过其他对我来说不寻常的东西:

  1. while ((c = getchar()) != '\n' && c != EOF)在此语句上方,此变量c被声明为整数类型,并且将其与字符类型进行比较,这可能会给您带来麻烦。更改变量c类型的字符。
  2. 在其他情况下,您要返回的getType变量被初始化为double,但未分配任何值。
  3. 类似地,您的代码中没有为dh变量分配任何值,并且您在vArea函数中将它们作为参数发送。请注意这一点。
  4. 确保您的getchar()函数必须返回单个字符。

答案 2 :(得分:0)

简单的兄弟就这样做,将您的函数原型更改为此。

double getType(double d, double h);

您定义要在其中调用getType函数的地方。

getType(d,h);

最近在函数声明中

double getType(double d, double h)
{
double d1,h1;
d1=d;
h1=h1;

/*then rest of your code*/
}