0
int evens(int x,int y);
int pdiv(int x,int y,int z);

void main(void)
{
  clrscr();
  cout<<"Enter the number x an y";
  int x,y;
  cin>>x>>y;
  evens(x,y);
  getch();
}

int evens(int x,int y)
{
  cout<<"Even Numbers between x and y are"<<endl;
  for (int z=x;z<y;z++)
  {
  if(z%2==0) cout<<z<<"  "<<pdiv(z,x,y);
  }
  return 0;
}

int pdiv(int x,int y,int z)
{
  cout<<"Positive divisors of the given number are"<<endl;
  for(int a=y;a<=z;a++)
  {
    if(x%a==0)
    cout<<a<<"  ";
  }
}

在上面的程序中,每当我pdiv(z,x,y)evens(x,y)函数中使用xy的值时都会evens(x,y)开始改变。当我不打电话时,它不会pdiv()发生evens()。我被告知函数是独立的,它们不应该改变另一个函数的值,我在这个程序上花了几个小时,我不知道我做错了什么。

为什么我的函数不表现为独立函数?

4

1 回答 1

2

C++ 中的函数是“独立的”,它们不能更改另一个函数中变量的值,除非您通过引用传递参数或进行一些 hack(可能您不这样做)。但是,您可能需要改进几件事:

  1. pdiv应该返回一些int结果

  2. 您调用的方式pdiv(z,x,y)有点误导,因为在函数内部,您将拥有x值为zfrom的变量evens()。在 C++ 中,您不按名称传递参数,顺序很重要。如果您不更改变量的含义并调用它会更清楚pdiv(x,y,z)

  3. 在你应该为变量和main()分配一些初始值。xy

  4. 为什么你甚至认为变量在变化?

于 2012-12-22T09:42:56.143 回答