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

My program crashes when calling a function in c++

本文关键字:函数 崩溃 调用 程序 c++ 我的      更新时间:2023-10-16

所以我必须做三个函数。有人问公司有多少员工。另一个问他们错过了多少天。第三个通过将员工数量除以缺勤天数来计算平均值。总的来说,我所要做的就是有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;

但是你不允许除以零,仅此

而已:)
#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;
}