Mảng xâu ký tự

16 2 0
Mảng xâu ký tự

Đ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ội dung TRƯỜNG ĐẠ) (ỌC B\C( K(OA ([ NỘ) V)ỆN CÔNG NG(Ệ T(ÔNG T)N V[ TRUYỀN T(ÔNG Mảng X}u kí tự Con trỏ v{ địa optional TIN HỌC ĐẠI CƯƠNG Phần Lập trình C Bài Mảng xâu ký tự Nội dung Kh|i niệm mảng • Tập hợp hữu hạn c|c phần tử c‘ng kiểu, lưu trữ nhớ • C|c phần tử mảng có c‘ng tên l{ tên mảng ph}n biệt với số cho biết vị trí mảng • Ví dụ: Mảng Kh|i niệm mảng Khai b|o v{ sử dụng mảng C|c thao t|c mảng Tìm kiếm mảng Sắp xếp mảng X}u kí tự – Bảng điểm sinh viên – Vector – Ma trận Khai b|o v{ sử dụng mảng Khai b|o v{ sử dụng mảng • Khai b|o mảng chiều • Cấp ph|t nhớ kiểu_dữ_liệu tên_mảng[kích_thước_mảng]; – C|c phần tử mảng cấp ph|t c|c ô nhớ nhớ – Biến mảng lưu trữ địa ô nhớ v‘ng nhớ cấp ph|t • Trong – kiểu_dữ_liệu: kiểu liệu c|c phần tử mảng – tên_mảng: tên mảng – kích_thước_mảng: số phần tử mảng • Ngôn ngữ C đ|nh số c|c phần tử mảng – Phần tử thứ i mang_nguyen x|c định mang_nguyen[i-1] • Ví dụ int mang_nguyen[10]; // khai b|o mảng phần tử có kiểu liệu int mang_nguyen[0] 9.1.2 Khai b|o v{ sử dụng mảng c[0], c[1], ,c[11] Các phần tử thuộc kiểu char -45 c[1] c[2] 72 c[3] c[5] 15 -89 c[6] c[7] 62 c[8] -3 c[9] c[10] c[11] mang_nguyen[9] • Mảng chiều v{ mảng nhiều chiều c[0] c[4] ……… Khai b|o v{ sử dụng mảng • Ví dụ khai báo mảng: char c[12]; Khai báo mảng: Tên c, có 12 phần tử, mang_nguyen[1] mang_nguyen 64 78 – Mỗi phần tử mảng l{ mảng => mảng nhiều chiều • Ví dụ – int a[6][5] ; mảng a gồm phần tử phần tử l{ mảng gồm số nguyên int – int b[ ][ ][ ]; // mảng b gồm phần tử, phần tử l{ mảng hai chiều gồm phần tử Mỗi phần tử mảng hai chiều l{ mảng gồm số nguyên int b l{ mảng chiều Khai b|o v{ sử dụng mảng Khai b|o v{ sử dụng mảng • Khai b|o mảng nhiều chiều • Sử dụng mảng kiểu_dữ_liệu tên_mảng[size1][size2]…[sizek]; Trong – Truy cập v{o phần tử thơng qua tên mảng v{ số phần tử mảng tên_mảng[chỉ_số_phần_tử] – Ch’ ý: số • sizei l{ kích thước chiều thứ i mảng • Ví dụ Khai b|o v{ sử dụng mảng – int a[4]; – phần tử thứ mảng: a[ ] – phần tử cuối c‘ng thứ tư mảng: a[ ] – a[i]: l{ phần tử thứ i+ a 10 C|c thao t|c mảng a Nhập liệu cho mảng • Khởi tạo gi| trị cho mảng khai b|o • Ví dụ tiếp – int b[3][4]; – phần tử mảng: b[ ] l{ mảng chiều – phần tử mảng b[ ]: b[ ][ ] – b[i][j]: l{ phần tử thứ j+ b[i], b[i] l{ phần tử thứ i+ b 11 – Ví dụ: • int a[4] = {1,4,6,2}; • float b[ ] = {40.5, 20.1, 100}; • char c[5] = { h , e , l , l , o }; • int b[2][3]={ {1,2,3}, {4,5,6} }; – Số lượng gi| trị khởi tạo không lớn số lượng phần tử mảng – Nếu số lượng n{y nhỏ hơn, c|c phần tử lại khởi tạo gi| trị – Nếu để trống kích thước mảng số phần tử khởi tạo 12 C|c thao t|c mảng C|c thao t|c mảng #include #define MONTHS 12 int main(){ int rainfall[MONTHS], i; for ( i=0; i < MONTHS; i++ ){ printf(“Nhap vao phan tu thu %d: “, i+1); scanf("%d", &rainfall[i] ); } return 0; } a Nhập liệu cho mảng • Nhập liệu từ b{n phím h{m scanf – int a[10]; – Nhập liệu cho a[ ]: scanf %d , & a[ ] ; – Nhập liệu cho to{n phần tử mảng a => Sử dụng vịng lặp for • Lưu ý – Tên mảng l{ hằng trỏ thực phép to|n với tên mảng phép g|n sau đ~ khai b|o 14 13 C|c thao t|c mảng C|c thao t|c mảng a Nhập liệu cho mảng • Lưu ý #include #include void main(){ int a[100]; int n, i; do{ printf(“\n Cho biet so phan tu cua mang: “); scanf(“%d”,&n); }while (n>100||n khai b|o mảng với kích thước tối đa v{ sử dụng biến lưu số phần tử thực mảng – Ví dụ: Khai b|o mảng số nguyên a có tối đa phần tử Nhập từ b{n phím số phần tử mảng v{ gi| trị c|c phần tử đó… 15 16 C|c thao t|c mảng C|c thao t|c mảng b Xuất liệu mảng for(i = 0; i < n; i++){ printf(“a[%d] = ", i); scanf("%d",&a[i]); } getch(); – Dùng hàm printf() – Để hiển thị tất c|c phần tử: d‘ng vịng for • Ví dụ } 17 C|c thao t|c mảng #include #define MONTHS 12 int main(){ int rainfall[MONTHS], i; for ( i=0; i < MONTHS; i++ ){ printf(“Nhap vao phan tu thu %d: “, i+1); scanf("%d", &rainfall[i] ); } for ( i=0; i < MONTHS; i++ ) printf( "%5d ” , rainfall[i]); printf("\n"); return 0; } – (iển thị phần tử – (iển thị tất c|c phần tử, phần tử dòng – (iển thị tất c|c phần tử dòng, c|ch vị trí – (iển thị k phần tử dòng 18 C|c thao t|c mảng c Tìm gi| trị lớn nhất, nhỏ • Tìm gi| trị lớn – Giả sử phần tử l{ phần tử – Lần lượt so s|nh với c|c phần tử lại – Nếu lớn => so s|nh tiếp – Nếu nhỏ => coi phần tử n{y l{ phần tử lớn v{ tiếp tục so s|nh – Cách làm? 19 • Tìm gi| trị nhỏ nhất: tương tự 20 C|c thao t|c mảng Tìm kiếm mảng • Bài toán max = rainfall[0]; – Cho mảng liệu a v{ gi| trị k – Tìm c|c phần tử mảng a có gi| trị giống với k Nếu có in vị trí số c|c phần tử n{y Ngược lại thơng b|o khơng tìm thấy for(i = 1; i < n; i++) if(max < a[i]) max = a[i]; • Cách làm printf("\n Luong mua nhieu nhat la: %d", max); 21 Tìm kiếm mảng 22 Tìm kiếm mảng • Phân tích – Duyệt to{n c|c phần tử • Vòng lặp for while, while – Lưu lại i a[i] giống k • Sử dụng mảng lưu số – Biến x|c định tìm thấy hay khơng tìm thấy • Biến nhận gi| trị • Biến nhận gi| trị >= – Duyệt to{n c|c phần tử mảng – Nếu a[i] giống k lưu lại số i – Sử dụng biến để x|c định tìm thấy hay khơng tìm thấy tìm thấy tăng gi| trị 23 #include #include void main(){ int a[100], chi_so[100]; int n;//n la số phần tử mảng int i, k, kiem_tra; printf(“ Nhap vao so phan tu cua mang: “); scanf(“%d”,&n); printf(“Nhap vao giá trị tim kiem“); scanf(“%d”,&k); 24 Tìm kiếm mảng Tìm kiếm mảng //Nhap cac phan tu cho mang a //Phan xu ly tim kiem kiem_tra = 0; // Duyệt qua tất phần tử for(i = 0;i 0){ printf(“Trong mang co %d phan tu co gia tri bang %d”,kiem_tra,k); printf(“\nChi so cua cac phan tula:“); for(i = 0;i < kiem_tra;i++) printf(“%3d”,chi_so[i]); } else printf(“\n Trong mang khong co phan tu nao co gia tri bang %d”,k); getch();} 25 Sắp xếp mảng 26 Sắp xếp mảng • Bài tốn • Giải thuật xếp – Cho mảng a gồm n phần tử Sắp xếp c|c phần tử mảng a theo thứ tự tăng dần/giảm dần – Sắp xếp thêm dần insertion sort – Sắp xếp lựa chọn selection sort – Sắp xếp bọt bubble sort – Sắp xếp vun đống heap sort – Sắp xếp nhanh quick sort – Sắp xếp trộn merge sort – … 27 28 Sắp xếp mảng Sắp xếp mảng • Giải thuật xếp lựa chọn • tưởng – Tìm phần tử nhỏ chưa xếp mảng – Đổi chỗ với phần tử phần chưa – Lần xếp thứ • So s|nh a[ ] với c|c a[i], i = n-1 a[ ] > a[i] => đổi chỗ a[ ] v{ a[i] • Thu a[ ] l{ phần tử nhỏ – Lần xếp thứ • So s|nh a[ ] với c|c a[i], i = n-1 a[ ] > a[i] => đổi chỗ a[ ] v{ a[i] • Thu a[ ] l{ phần tử nhỏ thứ 29 Sắp xếp mảng Sắp xếp mảng • tưởng • A = { 12, 5, 3, }; – Lần xếp thứ k • So sánh a[k- ] với c|c a[i], i = k n-1 a[k- ] > a[i] => đổi chỗ a[k-1] a[i] • Thu a[k- ] l{ phần tử nhỏ thứ k 12 – … – Lần xếp thứ n-1 • So sánh a[n-2] a[n-1] a[n-2] > a[n- ] => đổi chỗ a[n-2] a[n-1] • Thu a[n- ] l{ phần tử nhó thứ n- => cịn lại a[n- ] l{ phần tử nhỏ thứ n lớn 30 31 Lượt 12 Lượt 12 Lượt 12 32 Sắp xếp mảng Sắp xếp mảng • Ví dụ Trang //Khai bao cac bien int a[100]; int i, j, tmp; //Sap xep for (i = 0; i < n-1; i++) for (j = i+1; j a[j]){ tmp= a[i]; a[i]= a[j]; a[j] = tmp; } – Nhập v{o từ b{n phím mảng số ngun m số phần tử nhập từ b{n phím – (iển thị c|c phần tử vừa nhập v{o – Sắp xếp mảng m theo thứ tự tăng dần có hiển thị c|c phần tử lượt xếp 33 Sắp xếp mảng 34 Sắp xếp mảng // nhập giá trị cho phần tử for(i = 0;i

Ngày đăng: 22/12/2022, 10:09

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

Tài liệu liên quan