我已经使用一些功能编写了代码。在函数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;
}
您看到需要修复的任何错误吗?
答案 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)
我看过其他对我来说不寻常的东西:
while ((c = getchar()) != '\n' && c != EOF)
在此语句上方,此变量c被声明为整数类型,并且将其与字符类型进行比较,这可能会给您带来麻烦。更改变量c
类型的字符。getType
变量被初始化为double,但未分配任何值。d
和h
变量分配任何值,并且您在vArea
函数中将它们作为参数发送。请注意这一点。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*/
}