C++ 我正在创建一个函数类型的程序,并且会不断地说:(.text+0xe0):未定义的对
我定义的每个函数都会弹出一个错误: C:\Users\ALVARO~1\AppData\Local\Temp\cc7yNnth.o Ejercicio.cpp:.text+0xe0:对'circfloat,float'的未定义引用 这是我的密码:C++ 我正在创建一个函数类型的程序,并且会不断地说:(.text+0xe0):未定义的对,c++,c,function,switch-statement,C++,C,Function,Switch Statement,我定义的每个函数都会弹出一个错误: C:\Users\ALVARO~1\AppData\Local\Temp\cc7yNnth.o Ejercicio.cpp:.text+0xe0:对'circfloat,float'的未定义引用 这是我的密码: float circ(float pi, float radio); float cuad(float lado); float rect(float l1, float l2); float triang(float b, float h); in
float circ(float pi, float radio);
float cuad(float lado);
float rect(float l1, float l2);
float triang(float b, float h);
int main () {
float pi=3.14;
char opc;
printf("Introuce 1 para ciculo");
printf("2 para cuadrado");
printf("3 para rectangulo");
printf("4 para triangulo");
scanf("%c", &opc);
while(opc != 4)
switch(opc) {
case 1:
float radio;
printf("Introduce el valor del radio: ");
scanf("&f", radio);
printf("El area del circulo es: %f", circ(pi, radio));
system("pause");
case 2:
float lado;
printf("Introduce el valor del radio: ");
scanf("&f", lado);
printf("El area del cuadrado es: %f", cuad(lado));
system("pause");
case 3:
float ancho, largo;
printf("Introduce el valor del ancho: ");
scanf("&f", ancho);
printf("Introduce el valor del largo: ");
scanf("&f", largo);
printf("El area del rectangulo es: %f", rect(ancho, largo));
system("pause");
case 4:
float base;
float altura;
printf("Introduce el valor de la base: ");
scanf("&f", base);
printf("Introduce el valor de la altura: ");
scanf("&f", altura);
printf("El area del triangulo es: %f", triang(base, altura));
system("pause");
}
}
出了什么问题?您已声明但未实现该函数
float circ(float pi, float radio);
e:
你想要的东西可以通过以下方法实现:我假设圆面积
float circ(float pi, float radius) {
return pi * (radius * radius);
}
顺便说一下,您在数学标题中定义了一个M_PI常量。您可以将函数定义为:
#include <math.h>
float circ(float radius) {
return M_PI * (radius * radius);
}
如果你能试着用英语编写代码,这样每个人都能更好地理解你的思维过程。我定义的每个函数,不!您声明但未定义的每个函数
声明是让编译器验证您是否正确使用的东西
定义是事物的构造;因为函数将函数的原型与它的代码相关联。定义也是一种声明
浮点数l1,浮点数l2;这是一份声明。然后,编译器知道您可以传递两个浮点值,并从调用中得到一个浮点值作为返回
float rectfloat l1,float l2{return l1*l2;}是一个定义。因此,编译器知道调用函数时要执行什么指令
还有其他一些错误。scanf必须像以下那样使用:
scanf("%f",&radio);
%f是格式说明符,表示表示浮点数的字符串必须可从输入中读取,并且值必须存储在radio中,因此前缀&表示在的地址处
在开关的每一个外壳上使用断路器,如:
您可以省略break,但这可能不是您想要做的…函数定义在哪里?可能重复:
switch(...) {
case ...:
...
break;
case ...:
...
break;
}