Bài 1 5 Mảng một chiều

Một phần của tài liệu Bài giảng ngôn ngữ lập trình C (Trang 38 - 40)

Tóm tắt nội dung:

Mảng ở trong C được khai báo với số phần tử của mảng là một hằng số. Các phần tử trong mảng luôn luôn được đánh chỉ số tăng dần từ 0 cho đến hết.

Thời lượng: 1 tiết

Mảng là một cấu trúc dữ liệu trong bộ nhớ có khả năng lưu trữ một tập các phần tử có cùng kiểu dữ liệu. Các phần tử này được bố trí nằm liên tiếp với nhau và được đánh chỉ số. Để truy cập một phần tử ta truy cập theo chỉ số của nó. Mảng có một hạn chế là số phần tử trong mảng luôn phải được xác định từ trước như là môt hằng số. Vì vậy khi khai báo mảng ta ln khai báo với số phẩn tử lớn nhất cần có để dùng trong thực tế.

Một mảng trong ngôn ngữ C được khai báo với số phần tử của nó. Các phần tử được đánh chỉ số từ 0 và tăng dần lên. Chỉ có một cách đánh chỉ số này ở trong C. Điều đó làm nên sự khác biệt cho mảng của C với mảng của những ngôn ngữ khác như PASCAL.

Khai báo mảng:

Truy cập một phần tử theo chỉ số (bắt đầu từ 0): <tên mảng>[<chỉ số>] a[0] a[1] ..... a[n] a[n-1] Hình 3: Bộ nhớ của mảng một chiều n phần tử Ví dụ:

int a[5]; /* mảng 5 số int */ int i;

/* gán các phần tử của mảng về 0 */ for (i=0; i<5; i++) a[i] = 0;

Một mảng có thể được khai báo với giá trị khởi tạo cho các phần tử. Danh sách giá trị khởi tạo được đặt trong dấu ngoặc kép {}.

Ví dụ:

int a[5] = {0, 0, 0, 0, 0};

Với khai báo mảng mà có khởi gán giá trị thì ta có thể lược bỏ số phần tử trong khai báo mảng vì số phần tử này có thể được tính tự động từ phần giá trị khởi gán.

Ví dụ:

int a[] = {0, 0, 0, 0, 0}; /* mảng a sẽ có 5 phần tử */

Chương trình mẫu (mangso.c): Nhập một dãy số nguyên n phần tử (1>=n>=20) sau đó tìm tổng

của dãy số. In ra màn hình dãy số sau khi đã sắp xếp. #include <stdio.h>

void main() {

int a[20], n, i, j, sum, tg;

/* nhập số phần tử có kiểm tra để nhập lại */ do { printf("Nhap n (1-20) = "); scanf("%d", &n); }while(n<1||n>20); /* nhập dãy số, chỉ số chạy từ 0 */ for(i=0; i<n; i++)

{

printf("a[%d]=", i); scanf("%d", &a[i]); }

/* tính sum */ sum = 0;

for(i=1; i<n; i++) sum += a[i]; printf("Sum = %d\n", sum); /* sắp xếp dãy số */

for (i=0; i<n-1; i++) for(j=i+1; j<n; j++) if(a[i] > a[j]) { /* đổi chỗ 2 phần tử */ tg = a[i]; a[i] = a[j]; a[j] = tg; }

/* in dãy số sau khi sắp xếp */ for(i=0; i<n; i++)

printf("%5d", a[i]); }

BÀI TẬP

Câu 1: Viết chương trình tính tổng bình phương của các số âm trong một mảng các số nguyên

được nhập vào.

Câu 2: Lập chương trình làm các cơng việc sau

a. Nhập vào N số nguyên từ bàn phím (N>5).

b. Xếp các số có giá trị tuyệt đối lớn hơn 10 lên đầu dãy.

c. Trong dãy kết quả nhận được từ câu trên hãy xóa bớt số thứ 3 của dãy và số thứ N của dãy. Đưa các dãy kết quả ra màn hình.

Câu 3: Viết chương trình đê nhập một mảng số nguyên rồi thực hiện sắp xếp chúng theo thứ tự

tăng dần. Đọc một số nguyên mới vào từ bàn phím để chèn nó vào dãy số đã sắp xếp mà vẫn đảm bảo thứ tự.

Câu 4: Nhập dữ liệu cho 2 mảng số A, B rồi sắp xếp theo thứ tự tăng dần. Hãy trộn hai mảng đó

lại để có mảng thứ 3 là mảng C với điều kiện mảng C cũng được sắp xếp theo thứ tự tăng dần ngay sau khi trộn.

Một phần của tài liệu Bài giảng ngôn ngữ lập trình C (Trang 38 - 40)