首页 > 解决方案 > 针对作业问题修复此 C++ void 函数中的错误的建议

问题描述

我是一名大学生,正在寻求帮助,以找出我在课堂上编写的这段代码中的混乱部分。我相信这段代码中有一个错误,CodeBlocks 很挑剔。

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
void func1();
void func2();
int main()
{
    int num1, num2;
    double num3;
    int choice;
    cout << fixed << showpoint << setprecision(2);
    do
    {
        func1();
        cin >> choice;
        cout << endl;
        if (choice == 1)
        {
           func2(num1, num2, num3);
           cout << num1 << ", " << num2 << ", " << num3 << endl;
        }
    }
    while (choice != 99);
    return 0;
 }
void func1()
{
    cout << "To run the program, enter 1." << endl;
    cout << "To exit the program, enter 99." << endl;
    cout << "Enter 1 or 99: ";
}
void func2(int num1, int num2, double num3)
{

    cout << "input 2 bumners a and b";
    cin >> num1;
    cin >> num2;

    if (num1 >= num2){
      num3 = pow(num1, num2);
    }
    else if (num1 < num2){
      num3 = pow(num2, num1);
    }
    else if (num1 != 0 && num2 == 0){
      num3 = sqrt(abs(num1));
    }
    else if (num2 != 0 && num1 == 0){
      num3 = sqrt(abs(num2));
    }
    else if (num1 == 0 && num2 == 0){
      num3 = 0;
    }
}

标签: c++debugging

解决方案


func2()按值接受参数;你对这些参数所做的任何事情在该函数之外都是不可见的(当它返回时)。你应该通过引用。

void func2(int& num1, int& num2, double& num3)

推荐阅读