Theo em nghĩ nếu như không có dòng a[n] = x; thì khi nhập X không nằm trong mảng thì vòng lặp while sẽ lặp vô hạn nhưng sao em chạy thì vẫn ra kết quả đúng. Mong các cao nhân giúp đỡ đa tạ 
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
void NhapMang(int a[], int n);
void XuatMang(int a[], int n);
int LinearSearch(int a[], int n, int x);
//int LinearSearch1(int a[], int n, int x);
//int LinearSearch2(int a[], int n, int x);
int main()
{
int n, x;
printf("Nhap so phan tu cua mang: ");
scanf("%d", &n);
int a[n];
NhapMang(a,n);
XuatMang(a,n);
printf("\nNhap vao so X can tim kiem trong mang: ");
scanf("%d", &x);
int result1 = LinearSearch(a,n,x);
if(result1 == -1)
printf("khong thay X");
else
printf("Thay X o vi tri a[%d] khi duyet tu dau den cuoi mang", result1);
//LinearSearch1(a,n,x);
//LinearSearch2(a,n,x);
getch();
return 0;
}
void NhapMang(int a[], int n)
{
srand((int)time(NULL));
for(int i=0; i<n; i++)
a[i] = rand()%50;
}
void XuatMang(int a[], int n)
{
for(int i=0; i<n; i++)
{
if(i%10==0 && i!=0)
printf("\n");
printf("%d\t", a[i]);
}
}
int LinearSearch(int a[], int n, int x)
{
int i=0;
//a[n] = x; phương pháp lính canh
while (a[i] != x)
i++;
if(i<n) return i;
return -1;
}
.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?