繁体   English   中英

在C ++中调用函数时我的程序崩溃

[英]My program crashes when calling a function in c++

因此我必须执行三个功能:一个询问公司里有多少员工,另一个询问他们错过了多少天,第三个询问平均员工人数除以缺少的天数。我所要做的就是使用cout提示并调用函数。我不确定我是否做对了,但是在计算平均值时会崩溃。

#include <iostream>
#include <iomanip>
using namespace std;

int employee(int employeeNum);
int missingDays(int daysMissing);
double getAvg(int employeeNum,int daysMissing,double average);

int employee(int employeeNum)
{
  cout<<"Enter the number of employee in the company.";
  cin>>employeeNum;
  return employeeNum;
}

int missingDays(int daysMissing)
{
  cout<<"Enter the amount of days employees missed during the past year.";
  cin>>daysMissing;
  return daysMissing;
}

double getAvg(int employeeNum,int daysMissing,double average)
{
  average=employeeNum/daysMissing;
  return average;
}

int main()
{
  int employeeNum,people,missing,daysMissing;
  double avg,average;

  people=employee(employeeNum);
  cout<<"The number of employees in the company is "<<people<<"."<<endl;

  missing=missingDays(daysMissing);
  cout<<"The number of days employees missed during the past year is "<<missing<<".";

  avg=getAvg(employeeNum,daysMissing,average);
  cout<<average;
}

让我知道我该怎么做,并感谢您的帮助。

这看起来像是家庭作业,因此您只需要轻推即可。 因此,请注意以下几点:为什么您的函数employee()missingDays()接受参数? 为什么getAvg()需要3? 您的输入值最终包含哪些变量? 接下来将在哪里使用它们(如果有的话)?

你的问题是这条线

missing=missingDays(daysMissing);

由于某些原因,您有两个变量“ daysMissing”(我不确定为什么首先将其传递给missingDays函数)

在该行之后, missing将包含值输入,而不是daysMissing (因为它没有通过引用传递)

您的getAvg函数可能因零除错误而崩溃。

因此,取决于编译器, daysMissing的值是未定义的或使用0初始化的。

在函数getAvg您将employeeNum/daysMissing;划分employeeNum/daysMissing;

但是您不可以被零除,就这样:)

#include <iostream>
#include <iomanip>
using namespace std;

int employee(int employeeNum);
int missingDays(int daysMissing);
double getAvg(int employeeNum,int daysMissing,double average);

int employee(int employeeNum)
{
  cout<<"Enter the number of employee in the company: ";
  cin>>employeeNum;
  return employeeNum;
}

int missingDays(int daysMissing)
{
  cout<<"Enter the amount of days employees missed during the past year: ";
  cin>>daysMissing;
  return daysMissing;
}

double getAvg(int employeeNum,int daysMissing)
{
    if(daysMissing == 0)
    {
        return 0;
    }
  return (double)employeeNum/daysMissing;;
}

int main()
{
  int employeeNum,people,missing,daysMissing;
  double avg,average;

  people=employee(employeeNum);
  cout<<"The number of employees in the company is: "<<people<<"\n";

  missing=missingDays(daysMissing);
  cout<<"The number of days employees missed during the past year is: "<<missing<<"\n";

  avg=getAvg(people,missing);
  cout<<avg;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM