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++ の関数は「独立」しており、参照によってパラメーターを渡すか、何らかのハックを行わない限り、別の関数の変数の値を変更することはできません (これはおそらく行わないでしょう)。ただし、改善したい点がいくつかあります。

  1. pdivなんらかのint結果を返す必要があります

  2. 関数内にはfromの値を持つ変数があるため、呼び出す方法pdiv(z,x,y)は少し誤解を招きます。C++ では、パラメーターを名前で渡しません。順序が重要です。変数の意味を変更せずに を呼び出すと、より明確になります。xzevens()pdiv(x,y,z)

  3. では、変数およびmain()に初期値を割り当てる必要があります。xy

  4. なぜ変数が変化していると思いますか?

于 2012-12-22T09:42:56.143 に答える