奇偶分离问题:调整后的数据为什么会改变?

#include <iostream>
using namespace std;
int adjust(int a[],int n);
int main()
{
 int n;
 int a[n];
 int b[n];
 cout<<"请输入数组长度:"<<endl;
 cin>>n;
 cout<<"请输入各个元素:"<<endl;
 for(int i=0;i<n;i++)
   cin>>a[i];
 adjust;
 cout<<"调整后为:"<<endl;
 for(int i=0;i<n;i++)
   cout<<b[i]<<" ";  
 return 0;
}
int adjust(int a[],int n)
{
 int i=0;
 int b[n];
 for(i=0;i<n;i++)
 {
  if(a[i]%2!=0)
    b[i]=a[i];
  else
    b[n-1-i]=a[i];  
 }
 return 0;
}

但是运行之后,数据都变了。

https://img2.mukewang.com/5ba232040001d65702990148.jpg

https://img.mukewang.com/5ba232040001645503570151.jpg

十分感谢。

禾则
浏览 1313回答 2
2回答

AAnonymous

#include <iostream> using namespace std; int adjust(int *a, int *b, int n); int main() {     int n;     int *a = nullptr;     int *b = nullptr;     cout << "请输入数组长度:" << endl;     cin >> n;     a = new int[n];     b = new int[n];     cout << "请输入各个元素:" << endl;     for (int i = 0; i < n; i++)         cin >> a[i];     adjust(a, b, n);     cout << "调整后为:" << endl;     for (int i = 0; i < n; i++)         cout << b[i] << " ";     delete[] a;     delete[] b;     return 0; } int adjust(int *a, int *b, int n) {     int left = 0, right = n - 1;     for (int i = 0; i < n; i++) {         if (a[i] % 2 != 0) {             b[left] = a[i];             ++left;         } else {             b[right] = a[i];             --right;         }     }     return 0; }
打开App,查看更多内容
随时随地看视频慕课网APP