为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
禾则 2018-09-19 19:28:40
#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; }但是运行之后,数据都变了。十分感谢。
查看完整描述

2 回答

?
AAnonymous

TA贡献62条经验 获得超31个赞

#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;
}


查看完整回答
反对 回复 2018-09-19
  • 2 回答
  • 0 关注
  • 1255 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信