我需要帮助修复程序。它没有运行。我一直得到警告控制到达无效功能的结束。我不知道如何解决它。请帮我。该程序假设找到球体的体积或表面积。我收到最后2}的警告
#include <iostream>
#include <iomanip>
#include <cmath>
#include <math.h>
using namespace std;
char s = '\0';
const char SENTINEL = 's';
float radius, answer;
void get_radius (float&);
float surface_area (float);
float volume (float);
float cross_section (float);
const float PI = 3.14;
int main()
{
cout << "This program will let you input the radius of a sphere to find its volume or surface area." << endl << endl;
cout << "Enter 'v' for volume or 'a' for surface area of a sphere" << endl;
cout << "'s' to stop" << endl;
cin >> s;
while (s != SENTINEL)
{
get_radius (radius);
if(s == 'V')
{
volume (radius);
}
else if(s == 'A')
{
surface_area (radius);
}
cout << "Enter 'v' for volume or 'a' for surface area of a sphere" << endl;
cout << "'s' to stop" << endl;
cin >> s;
}
system("PAUSE");
return 0;
}
void get_radius (float& radius)
{
cout << "Please enter the radius of the sphere: " << endl;
cin >> radius;
}
float volume (float radius){
float answer;
answer = 4.0/3.0 * PI * pow (radius, 3);
cout << "The volume is: " << answer << endl;
}
float surface_area (float radius){
float answer;
answer = 4.0 * PI * pow(radius, 2);
cout << "The surface area is: " << answer << endl;
}
答案 0 :(得分:0)
您的函数声明必须与您返回的内容相匹配。您必须确保从声明返回某些内容的函数返回值。
volume()和surface_area()正在用cout打印东西,但没有返回任何东西。
float volume (float radius){
float answer;
answer = 4.0/3.0 * PI * pow (radius, 3);
cout << "The volume is: " << answer << endl;
return answer;
}
float surface_area (float radius){
float answer;
answer = 4.0 * PI * pow(radius, 2);
cout << "The surface area is: " << answer << endl;
return answer;
}
答案 1 :(得分:0)
声明函数的类型时,需要返回该类型的值。例如,您的函数:
float volume (float radius) {}
需要return语句返回float类型的值。
如果你不需要函数来实际返回某些东西,那么将它声明为void以让编译器知道。在这种情况下:
void volume (float radius)
请注意,因为void函数不能返回值(但它们可以使用裸返回语句)。
另请注意,跳过return语句的潜在路径可能会触发此错误。例如,我可以使用此功能:
int veryBadFunction(int flag)
{
if (flag == 1) {
return 1;
}
}
在这种情况下,即使函数中有一个return语句,只要flag的值不是'1',它就会被跳过。这就是为什么错误消息的措辞是控制到达...