Khởi tạo một mảng gồm n (n ≤ 99) số tự nhiên. Nhập một số tự nhiên x từ bàn phím sau đó xóa tất cả các phần tử có giá trị x trong mảng. Chú ý:thông báo ra màn hình số phần tử bị xóa.
Mảng được khởi tạo là: 4 8 2 7 8 5 Nhập vào giá trị phần tử cần xóa: 8 Mảng sau khi xóa các phần tử có giá trị 8: 4 2 7 5 Có 2 phần tử bị xóa khỏi mảng.
Duyệt từng phần tử từ cuối (n-1) trở về đầu (0). Tại mỗi phần tử a[i], nếu có giá trị bằng x thì xóa phần tử này khỏi mảng (cách xóa như ở câu trên).
Code:
Nguồn: Agreenet#include <stdio.h>
#include <conio.h>
int
main()
{
int
a[99] = { 4, 8, 2, 7, 8, 5 };
int
n = 6, i, j, x, dem;
printf
(
"Mang duoc khoi tao la: "
);
for
(i = 0; i < n; i++)
printf
(
"%d "
, a[i]);
printf
(
"\nNhap gia tri phan tu can xoa: "
);
scanf
(
"%d"
, &x);
i = n-1; dem = 0;
while
(i >= 0)
//khi chưa hết mảng
{
if
(a[i] == x)
//nếu tìm được phần tử =x
{
for
(j = i; j < n - 1; j++)
//xóa phần tử vị trí i
a[j] = a[j + 1];
n--;
dem++;
}
else
i--;
//nếu a[i]<>x thì cứ cho i chạy tiếp
}
printf
(
"Mang sau khi xoa cac phan tu co gia tri %d la: "
, x);
for
(i = 0; i < n; i++)
printf
(
"%d "
, a[i]);
printf
(
"\nCo %d phan tu bi xoa khoi mang."
, dem);
getch();
}