关于函数和错误检查的新手C ++问题

时间:2010-01-27 18:56:07

标签: c++

我正在解决一个小问题,并花了几个小时试图弄清楚我做错了什么。使用Dev ++编译器,有时会有一些神秘的错误消息。

我试图让Volume计算成为一个函数并使其工作,但我有2个小尼特。在解决此问题后,我将继续进行错误检查。

  1. 添加了该功能,由于某些原因,现在使用dev ++,程序不会暂停(按任意键继续)。

  2. 卷是空白而不是数字。

  3. 由于 PC

    // The purpose of this program is to determine the Volume of a
    // square-based pyramid after the user inputs the Area and
    // the Height.
    #include <iostream>
    #include <iomanip>
    using namespace std;
    double calcvolume(double a, double h) 
    { 
        double volume;
        volume = ( a * h ) / 3; 
        return (volume);
    
    } 
    
    int main()
    {                                 
       double area, height, volume;                    // declare variables
    
       cout << "Please enter the Area of the Square-based pyramid:";       // requests users input
       cin >> area;                                                        // assigns user input to area
    
       cout << "Please enter the Height of the Square-based pyramid:";     // requests user input
       cin >> height;    
                                                       // assigns user input to height
       cout << "Area= " << area << "\n";                                   // Prints user input for area
       cout << "Height= " << height << "\n";  
       calcvolume(area,height);     
    
       cout << "Volume= " << fixed << showpoint << setprecision(2) << volume << "\n";    // Prints resolution to the formula stored in volume
    
        system("pause"); // forces DOS window to pause to allow user to utilize program
        return 0;
    }
    

2 个答案:

答案 0 :(得分:1)

您更新的代码看起来是正确的,但您没有存储calcvolume返回值。您在calcvolume中声明的音量变量与您在main中声明的音量变量不同。这些变量中的每一个都只能在声明它的函数中引用。

为了节省音量,

calcvolume(area,height);

应该是

volume = calcvolume(area,height);

这会将calcvolume中返回的值存储在主函数的volume变量中。

答案 1 :(得分:0)

您必须将calcvolume(area,height)的结果分配给主volume,如下所示:

volume = calcvolume(area,height);

现在您可以安全地使用main的音量变量。

我猜你的程序甚至没有到达system("pause")行,并且正在崩溃上面的行。可能是因为volume从未设置为任何东西而且持有垃圾数据。这个垃圾数据导致cout << ...失败。

在修复calcvolume(area,height)行之前,请尝试修改变量声明,以便将变量初始化为零:

double area=0.0, height=0.0, volume=0.0;  // declare variables

现在再次运行它,看它是否输出Volume=0.00并暂停。

将变量初始化为零或有意义的东西总是好的。否则,它们将被初始化为随机数据(这些内存字节中已有的数据)并且将使故障排除更加困难。