Tại sao giá trị trả về của phần tử đầu tiên trong mảng bị sai?

Tại sao giá trị trả về của e no lại cho a[0] bang 0 mà a[0] của e bằng 1 .e cảm ơn

#include<iostream>
#define MAX 100


using namespace std;
//====================================
void NhapMang(int a[] , int &n)
{
  do {
    cout<< "\nnhap vao so phan tu cua mang :";
    cin >>n;
    if (n < 0 || n>100){
      cout << "\nSo phan tu k hop le. Xin kiem tra lai !";
      
    }
    
  }while (n<0 || n>100); //bi lap lai
  
  for(int i=0 ;i < n ;i++){
    cout << "\nnhap vao a[" << i <<  "] = ";
    cin >>a[i];
      }

}
//=========================================

void XuatMang(int a[], int n)
{
  for(int i=0 ;i<n ; i++){
    cout <<a[i]<<"    ";
  }
}

//===========================================
void chanle(int a[], int n)
{
cout<<"\nCac so xuat theo thu tu chan le: ";
for (int i=1;i<=n;i++)
{
if (a[i]%2==1)
cout<<a[i]<<" ";
}
for (int j=1;j<=n;j++)
    {
    if (a[j]%2==0)
    cout<<a[j]<<" ";
    }
}

//========chuong trinh chinh==========
int main()
{
  int a[MAX];
  int n;
  
  NhapMang(a, n);
  XuatMang(a, n);
  chanle(a, n);
  return 0;
}

bạn sửa ở hàm chanle . vòng lặp for cho i và j chạy i=0;i<n đi. thử coi có dc ko? đọc lại phần lý thuyết về mảng đi nhé. à mà code chưa tối ưu. tìm cách viết lại cho ngắn hơn nữa

cảm ơn bác nha!!!

phần này bản chất là kiểm tra giá trị mảng từ phần tử a[1] chứ không phải từ số 1 :smile: code đúng phải bắt đầu từ phần tử đầu tiên của mảng là a[0].

cam on moi ng .minh da sua dc r

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?