Bài giảng Tin học đại cương Phần 2: Bài 4 - Nguyễn Hữu Nam Dương

25 64 0
Bài giảng Tin học đại cương Phần 2: Bài 4 - Nguyễn Hữu Nam Dương

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đến với Bài giảng Tin học đại cương Phần 2: Bài 4 - Con trỏ và mảng các bạn sẽ được tìm hiểu các vấn đề tổng quan về con trỏ; mảng; sử dụng con trỏ làm việc với mảng.

VIỆN CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG SOICT TIN HỌC ĐẠI CƯƠNG PHẦN 2: LẬP TRÌNH BẰNG NGƠN NGỮ C BÀI 4: CON TRỎ VÀ MẢNG BÀI 4: CON TRỎ VÀ MẢNG 4.1 Con trỏ địa  4.1.1 Tổng quan trỏ 4.2 Mảng    4.2.1 Khái niệm mảng 4.2.2 Khai báo sử dụng mảng 4.2.3 Các thao tác làm việc mảng 4.3 Sử dụng trỏ làm việc với mảng 4.1.1 Tổng quan trỏ a Địa giá trị biến     Bộ nhớ dãy byte nhớ Các byte nhớ xác định cách qua địa chỉ Biến lưu nhớ Khi khai báo biến Chương trình dịch cấp phát cho biến số nhớ liên tiếp đủ để chứa nội dung biến Ví dụ biến số nguyên (int) cấp phát byte Địa biến địa byte số 4.1.1 Tổng quan trỏ a Địa giá trị biến (tiếp)  Một biến ln có hai đặc tính: Địa biến Giá trị biến  Ví dụ: int i, j; i = 3; j = i + 1; Biến Địa Giá trị i FFEC j FFEE 4 4.1.1 Tổng quan trỏ b Khái niệm khai báo trỏ   Con trỏ biến mà giá trị địa vùng nhớ Khai báo trỏ: Cú pháp khai báo trỏ sau: Kieu_du_lieu *ten_bien_con_tro;  Ví dụ Biến Địa Giá trị i FFEC p FFEE FFEC int i = 3; int *p; p = &i;  Một trỏ trỏ tới đối tượng kiểu BÀI 4: CON TRỎ VÀ MẢNG 4.1 Con trỏ địa  4.1.1 Tổng quan trỏ 4.2 Mảng    4.2.1 Khái niệm mảng 4.2.2 Khai báo sử dụng mảng 4.2.3 Các thao tác làm việc mảng 4.3 Sử dụng trỏ làm việc với mảng 4.2.1 Khái niệm mảng Mảng tập hợp hữu hạn phần tử có kiểu liệu lưu trữ liên tiếp nhớ nhớ Các phần tử mảng có tên (và tên mảng) phân biệt với số cho biết vị trí chúng mảng c[0] -45 c[1] c[2] c[3] 72 c[4] 1543 c[5] -89 c[6] c[7] 62 c[8] -3 c[9] c[10] 6453 c[11] 78 4.2.2 Khai báo sử dụng mảng a Khai báo: Cú pháp:  Kieu_du_lieu ten_mang[kich_thuoc_mang]; n phần tử mảng c: c[ ], c[ ], ,c[ n – ] Ví dụ: Câu lệnh: char c[12]; Khai báo mảng: Tên c, có 12 phần tử, Các phần tử thuộc kiểu char c[0] -45 c[1] c[2] c[3] 72 c[4] 1543 c[5] -89 c[6] c[7] 62 c[8] -3 c[9] c[10] 6453 c[11] 78 4.2.2 Khai báo sử dụng mảng a Khai báo (tiếp tiếp): ): Mảng Hai chiều chiều:: Mỗi phần tử mảng mảng khác  Cú pháp khai báo mảng chiều chiều:: Kiểu_dữ_liệu tên_mảng[[số_hàng tên_mảng số_hàng][ ][số_cột số_cột]; ];  Ví dụ dụ:: int a[6][5];  Mảng nhiều chiều chiều: :  Vd:: int b[3][4][5]; Vd 4.2.2 Khai báo sử dụng mảng b Sử dụng mảng:    Truy cập vào phần tử mảng thông qua tên mảng số phần tử Cú pháp: ten_mang[ ten_mang [chi_so_cua_phan_tu chi_so_cua_phan_tu] ] Ví dụ 1: int mang_nguyen[3]; mang_nguyen[0]: Phần tử thứ mang_nguyen[0]: mang_nguyen[1]: mang_nguyen[1] : Phần tử thứ mang_nguyen[2]: mang_nguyen[2] : Phần tử thứ 10 4.2.2 Khai báo sử dụng mảng b Sử dụng mảng (tiếp):  Ví dụ 2: int a[6][5]; a[0] phần tử mảng, mảng, mảng  Phần tử mảng a[0] a[0][0],… … a[2][3] phần tử thứ phần tử mảng chiều thứ a  a[i][j] phần tử thứ j+1 a[i] a[i],, mà phần tử a[i] lại mảng thứ i+1 a 11 Sử dụng mảng chiều: Ví dụ: int mang[n][m]; Muốn truy cập tới phẩn tử hàng thứ i+1, cột thứ j+1 ta dùng cú pháp sau: 22 55 56 212 23 34 mang[i][j]; 12 4.2.3 Các thao tác làm việc mảng a Nhập liệu cho mảng: Nhập liệu cho phần tử mảng Ví dụ: int b[10]; int i; for(i = 0; i < 10; i++) { printf(“\ printf(“ \n Nhap gia tri cho b[%d]”, i); scanf(“%d”,&b[i]); } 13 4.2.3 Các thao tác làm việc mảng a Nhập liệu cho mảng (tiếp): Trường hợp khơng biết mảng có phần tử mà biết số phần tử tối đa có mảng Ví dụ: int a[100];//Khai bao mang, so phan tu toi da la 100 int n; // Bien luu giu so phan tu thuc su cua mang int i; printf(“\ printf(“ \n Cho biet so phan tu cua mang: “); scanf(“%d”,&n); for(i = 0; i < n; i++) { printf("\ printf(" \n a[%d] = ", i); scanf("%d",&a[i]); } 14 4.2.3 Các thao tác làm việc mảng a Nhập liệu cho mảng (tiếp): Mảng khởi tạo giá trị khai báo int a[4] = {4, 9, 22, 16}; float b[3] = {40.5, 20.1, 100}; char c[5] = {‘h’, ‘e’, ‘l’, ‘l’, ‘o’};  Câu lệnh thứ có tác dụng tương đương với lệnh gán: a[0] = 4; a[1] = 9; a[2] = 22; a[3] = 16; 15 b Xuất liệu chứa mảng: #include #include #define KT void main() { int a[KT]; int i, k; //Nhap // Nhap gia tri cho cac phan tu mang a tu ban phim for(i for( i = 0; i < KT; i++) { printf(“ printf (“\ \n a[%d] = “, i); scanf(“%d”, scanf (“%d”, &a[i &a[i]); } printf(" printf ("\ \nBat dau hien thi gia tri cac phan tu tu\ \n"); printf(“ printf (“\ \n a[3] = %d”, a[3]); //Hien // Hien thi gia tri tat ca cac phan tu //Moi // Moi phan tu tren dong for(i = 0; i < KT; i++) printf(“\ printf(“ \n%d”, a[i]); 16 b Xuất liệu chứa mảng: printf(“\n”); // Xuong dong moi printf(“\ // Hien thi gia tri cua tat ca cac phan tu mang a // tren dong, cac phan tu cach dau tab for(i = 0; i < KT; i++) printf(“%d\ printf(“%d \t“, a[i]); // Hien thi k phan tu tren mot dong printf(“\ printf(“ \n Cho biet gia tri cua k = “); scanf(“%d”,&k); for(i = 0; i < KT; i++) { printf(“%d “, a[i]); if((i+1)%k == 0)//xuong dong da hien thi k ptu printf(“\ printf(“ \n”); } } 17 Kết quả: 18 c Tìm phần tử có giá trị lớn nhất, nhỏ #define KT 100 int a[KT]; max = a[0]; Dùng vòng lặp for so sánh max với phần tử có số từ 1, 2,…, nn-1 mảng a 19 c Tìm phần tử có giá trị lớn nhất, nhỏ int a[100]; int i, n; int max; printf("\ printf(" \n Cho biet so phan tu cua mang: "); scanf("%d",&n); for(i = 0; i < n; i++) { printf("\ printf(" \n a[%d] = ",i); scanf("%d",&a[i]); } 20 10 max = a[0]; //Lan luot so sanh voi cac phan //tu lai mang for(i = 1; i < n; i++) if(max < a[i]) max = a[i]; printf("\ printf(" \n Phan tu lon nhat mang la: %d", max); 21 4.2.3 Các thao tác làm việc mảng Tìm kiếm mảng Sắp xếp mảng 22 11 Tìm kiếm mảng Bài tốn: Viết chương trình yêu cầu người dùng nhập vào 10 số thực  Cho phép người dùng nhập vào giá trị k (để tìm kiếm)  23 Tìm kiếm mảng (tiếp) Yêu cầu: Hiển thị dãy số người dùng vừa nhập  Hiển thị lên hình: Số luợng phần tử (trong dãy vừa nhập) có giá trị k Vd: có phần tử có giá trị k lên: Trong dãy vừa nhập có số có giá trị k)  24 12 Tìm kiếm mảng (tiếp) Cấu trúc liệu:  Dùng mảng để lưu trữ dãy số người dùng nhập vào Giải thuật:  Duyệt phần tử mảng đếm xem có phần tử có giá trị k 25 Tìm kiếm mảng (tiếp) Các biến cần dùng:  Mảng để lưu trữ 10 phần tử: m  Biến để lưu số lượng phần tử k: dem 26 13 Tìm kiếm mảng (tiếp) #include #include float m[10]; float k; int i, dem; 27 void main () { clrscr(); //nhap du lieu for(i=0;i

Ngày đăng: 30/01/2020, 19:19

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan