1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Tự học lập trình c cơ bản đến nâng cao

26 418 2

Đ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

Cấu trúc

  • Tự học lập trình C - Bài 1: Một số khái niệm cơ bản

  • Tự học lập trình C - Bài 2: Cấu trúc chương trình C 

  • Tự học lập trình C - Bài 4: Nhập/xuất dữ liệu

  • Tự học lập trình C - Bài 5: Câu lệnh điều kiện

  • Tự học lập trình C - Bài 8: Chương trình con - Hàm

  • Tự học lập trình C - Bài 9: Đệ qui

  • Tự học lập trình C - Bài 10: Mảng một chiều

  • Tự học lập trình C - Bài 11: Mảng nhiều chiều

Nội dung

Tự học Lập trình C cơ bản đến nâng cao sẽ giúp bạn có đầy đủ kiến thức để bắt đầu học lập trình. Ngôn ngữ C là nền tảng cơ bản sẽ giúp cho bạn có được những bước tiến vững trước khi tiếp cận các ngôn ngữ khác

Tự học lập trình C - Bài 1: Một số khái niệm 1.1 Bộ ký tự Mọi ngôn ngữ lập trình xây dựng từtự Ngơn ngữ C xây dựng ký tự sau: 26 chữ hoa : A B C Z 26 chữ thường : a b c z 10 chữ số : Các ký hiệu toán học : + - * / = ( ) Ký tự gạch nối : _ Các ký tự khác : , : ; [ ] {} ! \ & % # $ Dấu cách (space) dùng để tách từ @Lưu ý: Khi viết chương trình, ta khơng sử dụng ký tự khác ký tự 1.2 Từ khóa Từ khố từ sử dụng để khai báo kiểu liệu, để viết toán tử câu lệnh Bảng liệt kê từ khoá TURBO C: Asm break case cdecl Char const continue default Do double else enum extern far float for Goto huge if int interrupt long near pascal register return short signed sizeof static struct switch tipedef union unsigned void volatile while @Lưu ý: - Không dùng từ khoá để đặt tên cho hằng, biến, mảng, hàm, - Từ khoá phải viết chữ thường, ví dụ: viết từ khố khai báo kiểu nguyên int INT 1.3 Tên Khái niệm tên quan trọng trình lập trình, khơng thể rõ ý nghĩa chương trình mà dùng để xác định đại lượng khác thực chương trình Tên thường đặt cho hằng, biến, mảng, trỏ, nhãn,… Chiều dài tối đa tên 32 ký tự Tên biến hợp lệ chuỗi ký tự liên tục gồm: Ký tự chữ, số dấu gạch Ký tự đầu tên phải chữ dấu gạch Khi đặt tên không đặt trùng với từ khóa Ví dụ 1.1: Các tên đúng: delta, a_1, Num_ODD, Case Các tên sai: 3a_1 (ký tự đầu số) num-odd (sử dụng dấu gạch ngang) int (đặt tên trùng với từ khóa) del ta (có khoảng trắng) f(x) (có dấu ngoặc tròn) Ví dụ 1.2: number khác Number case khác Case (case từ khóa, bạn đặt tên Case đúng) @Lưu ý: Trong C, tên phân biệt chữ hoa, chữ thường 1.4 Kiểu liệu kiểu liệu C là: char, int, float, double TT 10 11 Kiểu liệu unsigned char char enum unsigned int short int int unsigned long long float double long double Kích thước Miền giá trị byte byte bytes bytes bytes bytes bytes bytes bytes bytes 10 bytes đến 255 – 128 đến 127 – 32,768 đến 32,767 đến 65,535 – 32,768 đến 32,767 – 32,768 đến 32,767 đến 4,294,967,295 – 2,147,483,648 đến 2,147,483,647 3.4 * 10–38 đến 3.4 * 1038 1.7 * 10–308 đến 1.7 * 10308 3.4 * 10–4932 đến 1.1 * 104932 1.5 Lời thích Trong lập trình cần phải ghi để giải thích biến, hằng, thao tác xử lý giúp cho chương trình rõ ràng dễ hiểu, dễ nhớ, dễ sửa chữa để người khác đọc vào dễ hiểu Trong C ghi sau: // /* nội dung ghi */ Tóm lại, ghi dạng // dùng để ghi hàng dạng /* … */ ghi hàng nhiều hàng Tự học lập trình C - Bài 2: Cấu trúc chương trình C Một chương trình bao gồm nhiều hàm, hàm người lập trình tổ chức để giải công việc tốn cần giải Một chương trình C để thực thi ln cần phải hàm main() Cấu trúc chương trình sau: • Các #include ( dùng để khai báo sử dụng hàm chuẩn) • Các #define ( dùng để định nghĩa ) • Khai báo đối tượng liệu ( biến, mảng, cấu trúc vv ) • Khai báo nguyên mẫu hàm • Hàm main() • Định nghĩa hàm ( hàm main đặt sau xen vào hàm khác) Ví dụ 1.3: #include //k.báo sử dụng thư viện xuất/nhập chuẩn C void main(void) { double x,y; //Khai báo biến x,y kiểu số thực printf("\n Nhap x va y"); //xuất liệu hình scanf("%lf%lf",&x,&y); //nhập liệu từ bàn phím lưu vào vùng địa cấp cho biến x,y } @Lưu ý: Một số qui tắc cần nhớ viết chương trình: - Mỗi câu lệnh viết hay nhiều dòng phải kết thúc dấu (;) - Trong chương trình, ta sử dụng hàm chuẩn, đầu chương trình ta phải khai báo sử dụng, ví dụ: #include "stdio.h" Tự học lập trình C - Bài 3: Hằng - Biến - Toán tử - B.thức 3.1 Khai báo Hằng đại lượng mà giá trị khơng thay đổi q trình tính toán Nguyên tắc đặt tên theo nguyên tắc đặt tên C + Khai báo Cú pháp: #define Diễn giải: #define: Từ khóa để định nghĩa biến : tên mà ta cần định nghĩa : Giá trị khởi gán cho Ví dụ: #define MAX 1000 Lúc này, tất tên MAX chương trình xuất sau thay 1000 Vì vậy, ta thường gọi MAX tên hằng, biểu diễn số 1000 3.2 Khai báo biến + Khai báo Cú pháp: ; Diễn giải: - : kiểu liệu muốn khai báo cho biến - : gồm tên biến kiểu liệu, tên biến cách dấu phẩy (,), cuối dấu chấm phẩy (;) Ví dụ int iTuoi; //khai báo biến iTuoi kiểu int float fTrongLuong; //khai báo biến fTrongLuong kiểu float char cKyTu1, cKyTu2; //khai báo biến cKyTu1, cKyTu2 kiểu char + Vừa khai báo vừa khởi gán giá trị cho biến thể kết hợp việc khai báo với toán tử gán để biến nhận giá trị lúc khai báo Ví dụ Khai báo trước, gán giá trị sau void main(void) { int a, b, c; a = 1; b = 2; c = 5; … } Vừa khai báo vừa gán giá trị: void main(void) { int a = 1, b = 2, c = 5; … } + Phạm vi biến Khi lập trình, phải nắm rõ phạm vi biến Nếu khai báo sử dụng không đúng, không rõ ràng dẫn đến sai sót khó kiểm sốt a Khai báo biến (biến toàn cục): Vị trí biến đặt bên ngồi tất hàm, cấu trúc Các biến tồn cục ảnh hưởng đến tồn chương trình Chu trình sống chạy chương trình đến lúc kết thúc chương trình b Khai báo biến (biến cục bộ): Vị trí biến đặt bên hàm, cấu trúc… Chỉ ảnh hưởng nội bên hàm, cấu trúc đó… Chu trình sống lúc hàm, cấu trúc gọi thực đến lúc thực xong 3.3 Biểu thức Biểu thức phối hợp tốn tử tốn hạng Ví dụ: a+b b = + * 2/i a = % (7 + 1) x++ * 2/4 + – power(i, 2) Toán hạng sử dụng biểu thức số, biến, hàm 3.4 Phép tốn Trong C nhóm tốn tử yếu sau đây: + Phép toán số học + : phép cộng – : phép trừ * : phép nhân / : phép chia % : phép chia lấy phần dư, áp dụng tốn hạng kiểu liệu char, int, long + Phép toán quan hệ > : lớn >= : lớn < : nhỏ > : dịch phải b)? a:b; kết max = Tự học lập trình C - Bài 4: Nhập/xuất liệu 4.1 Lệnh xuất Cú pháp: printf ("chuỗi định dạng"[, đối mục 1, đối mục 2,…]); Chức năng: Đưa kết hình - : dùng để định dạng cho liệu xuất hình - , …: mục kiện cần in hình Các biến, biểu thức phải định trị trước in - Chuỗi định dạng: đặt cặp nháy kép (" "), gồm loại: + Đối với chuỗi kí tự ghi in giống + Đối với kí tự chuyển đổi dạng thức cho phép kết xuất giá trị đối mục hình tạm gọi mã định dạng Sau dấu mô tả định dạng: %c : Ký tự đơn %s : Chuỗi %d : Số nguyên hệ thập phân %f : Số chấm động (ký hiệu thập phân) %e : Số chấm động (ký hiệu số mũ) %g : Dùng %e %f, tuỳ theo loại ngắn hơn, không in số vô nghĩa %x : Hệ 16 không dấu %u : Số thập phân không dấu %o : Số nguyên bát phân không dấu l : Tiền tố dùng kèm với %d, %u, %x, %o để số nguyên dài (ví dụ %ld) Ví dụ: #include //cần khai báo tiền xử lý stdio.h, hàm main() // dùng hàm printf void main (void) { printf(“Hello!”); } //Cho hình kết quả: Hello Ví dụ: #include //cần khai báo tiền xử lý stdio.h, hàm main() // dùng hàm printf void main (void) { int n=65; printf(“Gia tri cua n la: %d”,n); } //Cho hình kết quả: Gia tri cua n la:65 //%d dùng để định dạng cho giá trị n // thay %d thành %c kết cho hình là: Gia tri cua n la A, %c mã định dạng cho ký tự, tương ứng với mã 65 ký tự A + Các ký tự điều khiển ký tự đặc biệt \n : Nhảy xuống dòng canh cột \t : Canh cột tab ngang \r : Nhảy đầu hàng, không xuống hàng \a : Tiếng kêu bip \\ : In dấu \ \" : In dấu " \' : In dấu ' %%: In dấu % Vi dụ: 4.2 Lệnh nhập Cú pháp: scanf ("chuỗi định dạng"[, đối mục 1, đối mục 2,…]); Chức năng: Đọc liệu từ bàn phím - Đạnh dạng tương tự hàm printf Ví dụ #include void main(void) { float a,b,c printf("nhap vao he so a, b, c"); scanf("%f%f%f", &a,&b,&c); } -Nhập vào số a, b,c phải cách khoảng trắng enter - Các ký tự định dạng tương ứng cặp biến - Ký tự & ký tự lấy địa biến hàm scanf đọc liệu từ bàn phím lưu vào vùng địa xác định 4.3 Bài tập Viết chương trình đọc vào số nguyên in kết phép (+), phép trừ (-), phép nhân (*), phép chia (/) Viết chương trình đọc từ bàn phím số ngun biểu diễn ngày, tháng, năm xuất hình dạng "ngay/thang/nam" Tự học lập trình C - Bài 5: Câu lệnh điều kiện 5.1 Lệnh if Câu lệnh if cho phép lựa chọn hai nhánh tùy thuộc vào giá trị biểu thức logic (true) hay sai (false) - Dạng Cú pháp: if (bt_logic) ; Diễn giải: Nếu bt_logic giá trị thực khối lệnh khỏi if, ngược lại khơng làm khỏi if Ví dụ 1: Viết chương trình nhập vào số nguyên a, b Tìm in số lớn a Phác họa lời giải: Trước tiên ta cho giá trị a giá trị lớn cách gán a cho max (max biến khai báo kiểu liệu với a, b) Sau so sánh b với a, b lớn a ta gán b cho max cuối ta kết max giá trị lớn b Viết chương trình 10 11 12 13 14 15 16 17 18 19 20 21 22 #include void main(void){ int ia, ib, imax; printf("Nhap vao so a: "); scanf("%d", &ia); printf("Nhap vao so b: "); scanf("%d", &ib); imax = ia; if (ib > ia) imax = ib; printf("So lon nhat = %d.\n", imax); } - Dạng Cú pháp: if (bt_logic) ; else ; Diễn giải: Nếu bt_logic giá trị thực khối lệnh thoát khỏi if, ngược lại thực khối lệnh khỏi if Ví dụ 2: Viết chương trình nhập vào số nguyên a, b In thông báo "a b" a = b, ngược lại in thông báo "a khác b" a Phác họa lời giải: So sánh a với b, a b in câu thơng báo "a b", ngược lại in thông báo "a khác b" b Viết chương trình: #include 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 void main(void) { int ia, ib; printf("Nhap vao so a: "); scanf("%d", &ia); printf("Nhap vao so b: "); scanf("%d", &ib); if (ia == ib) printf("a bang b\n"); else printf("a khac b\n"); } Lưu ý: Nếu , bao gồm từ lệnh trở lên phải đặt cặp dấu {} 5.2 Cấu trúc if …else if Cú pháp: if (bt_logic1) khối lệnh 1; else if (bt_logic 2) khối lệnh 2; … else if (bt_logic n-1) khối lệnh n-1; else khối lệnh n; Diễn giải: Nếu bt_logic giá trị đúngthì thực khối lệnh khỏi cấu trúc if Ngược lại, bt_logic giá trị đúngthì thực khối lệnh khỏi cấu trúc if … Ngược lại, bt_logic n-1 đúngthì thực khối lệnh n-1 thoát khỏi cấu trúc if, ngược lại thực khối lệnh n Ví dụ 3: Viết chương trình nhập vào số nguyên a, b In thông báo "a lớn b" a>b, in thông báo "a nhỏ b" a b in thông báo "a lớn b", ngược lại a < b in thơng báo "a nhỏ b", ngược với trường hợp in thơng báo "a b" b Viết chương trình: #include void main(void) { int ia, ib; 10 11 12 13 14 15 16 17 printf("Nhap vao so a: ");scanf("%d", &ia); printf("Nhap vao so b: ");scanf("%d", &ib); if (ia>ib) printf("a lon hon b.\n"); else if } 5.3 Lệnh switch Cú pháp: switch (biểu thức) { case giá trị : khối lệnh 1; break; case giá trị : khối lệnh 2; break; … case giá trị n : khối lệnh n; break; default : khối lệnh; [break;] } Diễn giải: Khi giá trị biểu thức giá trị i lệnh i thực Nếu sau lệnh i khơng lệnh break tiếp tục thực lệnh sau Ngược lại khỏi cấu trúc switch Nếu giá trị biểu thức không trùng với giá trị i lệnh tương ứng với từ khóa default thực Lưu ý: - Không đặt dấu chấm phẩy sau câu lệnh switch - Biểu thức phải kết làgiá trị nguyên (char, int, long,…) - Lệnh 1, 2…n gồm nhiều lệnh, không cần đặt cặp dấu { } Ví dụ 4: Nhập vào tháng năm, cho biết tháng thuộc quý năm 10 11 12 13 14 15 16 17 18 19 #include #include void main(void) { int ithang; printf("Nhap vao thang: "); scanf("%d", &ithang); switch(ithang) { case 1: case 2: case : printf("Quy 1.\n");break; 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 case 4: case 5: case 6: printf("Quy 2.\n");break; case 7: case 8: case 9: printf("Quy 3.\n");break; case 10: case 11: case 12: printf("Quy 4.\n");break; default : printf("Phai nhap vao so khoang 12\n"); } getch(); //Dừng hình để xem kết quả, gõ phím để tiếp tục } 5.4 Bài thực hành Viết chương trình nhập vào số nguyên dương, in thông báo số vừa nhập số chẵn hay lẻ Hướng dẫn: Nhập vào số nguyên dương x Kiểm tra x chia hết cho hai (tức x chia dư 0) x số chẵn, ngược lại số lẻ Viết chương trình nhập vào số nguyên Tìm in số lớn Hướng dẫn: Ta số nguyên a, b, c, d Tìm số nguyên lớn x, y cặp (a, b) (c, d) Sau so sánh số nguyên x, y để tìm số nguyên lớn Viết chương trình giải phương trình bậc nhất: ax +b =0 Hướng dẫn: Nhập vào biến a, b Nếu a=0 Nếu b=0 Phương trình vơ số nghiệm Ngược lại Phương trình vơ nghiệm Hết Ngược lại x= -b/a Hết Viết chương trình giải phương trình bậc 2: ax2 + bx + c = 0, với a, b, c nhập vào từ bàn phím Hướng dẫn: Nhập vào biến a, b, c Nếu a=0 Giải phương trình bậc Ngược lại Tính Delta = b*b - 4*a*c Nếu Delta < Phương trình vơ nghiệm Ngược lại Nếu Delta = x1 = x2 = - b/(2*a) Ngược lại x1 = (- b - sqrt(Delta))/(2*a) x2 = (- b + sqrt(Delta))/(2*a) Hết Nếu Hết Nếu Hết Tự học lập trình C - Bài 6: Câu lệnh lặp (1) 6.1 Lệnh for: Cú pháp: for ([biểu thức 1]; [biểu thức 2]; [biểu thức 3]) ; Ý nghĩa: Là vòng lặp với số lần lặp xác định trước, tức thực n lần (n>=0), Quá trình lặp kết thúc [biểu thức 2]cho giá trị sai, thực gặp lệnh nhảy khỏi vòng lặp Diễn giải: - Biểu thức 1: khởi tạo giá trị ban đầu cho biến điều khiển - Biểu thức 2: quan hệ logic thể điều kiện tiếp tục vòng lặp - Biểu thức 3: phép gán dùng thay đổi giá trị biến điều khiển Nhận xét: - Biểu thức tính tốn lần gọi thực for @ Lưu ý: - Biểu thức 1, 2, 3phải phân cách dấu chấm phẩy (;) - Nếu biểu thức khơng có, vòng for xem ln ln Muốn khỏi vòng lặp for phải dùng lệnh break, goto return - Với biểu thức viết thành dãy biểu thức phân cách dấu phẩy Khi biểu thức xác định từ trái sang phải Tính sai dãy biểu thức biểu thức thứ xác định biểu thức cuối - Trong thân for () chứa nhiều cấu trúc điều khiển khác - Khi gặp lệnh break, cấu trúc lặp xâu thoát - Trong thân for dùng lệnh goto để khỏi vòng lặp đến vị trí mong muốn - Trong thân for sử dụng return để trở hàm - Trong thân for sử dụng lệnh continue để chuyển đến đầu vòng lặp (bỏ qua câu lệnh lại thân) Ví dụ 1: Viết chương trình in hình n số tự nhiên #include #include void main(void) { int i, n; printf("Nhap vao gia tri n:"); scanf("%d", &n); for(i = 1; i=1; i ) printf("%d :", i); Ví dụ 2: Viết chương trình nhập vào số ngun n Tính tổng giá trị lẻ nhỏ n #include #include void main(void) { int i, in, is = 0; printf("Nhap vao so n: "); scanf("%d", &in); is = 0; for(i = 0; i=b) return a; else return b; } @ Lưu ý: - Hàm giá trị trả không, giá trị trả phải kiểu với kiểu trả khai báo hàm Nếu hàm khơng giá trị trả đặt từ khóa void trước tên hàm để báo hiệu hàm không cần giá trị trả cho hàm - Khi hàm khai báo khơng kiểu trước mặc định kiểu int - Không thiết phải khai báo nguyên mẫu hàm Nhưng nói chung nên cho phép chương trình biên dịch phát lỗi gọi - Nguyên mẫu hàm thực chất dòng hàm thêm vào dấu; Tuy nhiên, nguyên mẫu bỏ tên tham số hình thức Ví dụ 2: Hàm in dãy số từ đến n void In_dayso(int n) { for(int i=1;i=b) return a; else return b; } 8.3 Tham số hình thức, tham số thực biến cục Các tham số dùng khai báo hàm gọi tham số hình thức Các tham số cung cấp cho hàm gọi hàm tham số thực Tham số thực biểu thức, tham số hình thức khơng thể biểu thức Dãy tham số thực phải tương ứng kiểu với tham số hình thức hàm khơng cần tham số Vì vậy, khai báo ta dùng từ khóa void để báo hàm khơng cần tham số Ví dụ 4: Hàm in bảng cửu chương void in_cuuchuong2(void) { for(int i=1;i0, n!=n x (n-1)! Vậy, 0! =>1! =>2!=>3! =>n! Giải thuật tính n! #include long int gthua(int n); void main(void) { int n; scanf(“%d”,&n); printf(“Giai thừa của%d là: %d”,n,gthua(n)); } int long gthua(int n) { if(n==0) return 1; elsse return(n*gthua(n-1)); } Khi thực lời gọi gthua(3) phát sinh lời gọi gthua(2), đồng thời phải lưu giữ thông tin trạng thái xử lý chưa hoàn thành (return(3 * gthua(2))) vào Stack Gặp lời gọi gthua(2), tiếp tục làm phát sinh lời gọi gthua(1), đồng thời vẩn phải lưu trử thông tin trạng thái xử lý dang dở (return( 2*gthua(1)))vào Stack Cứ gặp lời gọi trường hợp suy biến (return(1))) Khi gặp trường hợp suy biến, thông tin lưu tạm Stack lấy xử lý (thông tin lấy theo kiểu lưu trữ Stack, thông tin vào sau lấy trước) Và vậy, dùng kết gthua(0) để tính gthua(1), dùng kết gthua(1) để tính gthua(2), dùng kết gthua(2) để tính gthua(3) Cuối kết phép tính giai thừa Cụ thể thực lấy tính tốn Stack sau: Lấy return(1*gthua(0)) để thực gthua(1)=1*gthua(0)=1*1=1 Lấy return(2*gthua(1)) để thực gthua(2)=2*gthua(1)=2*1=3 Lấy return(3*gthua(2)) để thực gthua(3)=3*gthua(2)=3*2=6 Bài tập thực hành Sử dụng đệ qui để viết hàm tìm ước số chung lớn số Sử dụng đệ qui để viết hàm tính tổng S = 1+2+….+n Tự học lập trình C - Bài 10: Mảng chiều Mảng chiều tập hợp phần tử kiểu liệu Giả sử bạn muốn lưu n số nguyên để tính trung bình, bạn khơng thể khai báo n biến để lưu n giá trị sau tính trung bình Ví dụ : bạn muốn tính trung bình 10 số nguyên nhập vào từ bàn phím, bạn khai báo 10 biến: a, b, c, d, e, f, g, h, i, j kiểu int lập thao tác nhập cho 10 biến sau: printf("Nhap vao bien a: "); scanf("%d", &a); 10 biến bạn thực lệnh 10 lần, sau tính trung bình: (a + b + c + d + e + f + g + h + i + j)/10 Điều phù hợp với n nhỏ, n lớn khó thực Vì vậy, khái niệm mảng sử dụng 10.1 Khai báo Ví dụ : int ia[10]; với int kiểu mảng, ia tên mảng, 10 số phần tử mảng, tức mảng ia tối đa 10 phần tử Ý nghĩa: Khai báo mảng số nguyên gồm 10 phần tử, phần tử kiểu int Tên_kiểu tên_biến[spt]; Diến giải: - Tên_kiểu tên kiểu liệu mà bạn muốn khai báo cho mảng - Tên_biến tên mảng mà bạn muốn khai báo - Spt: số phần tử tối đa mảng mà bạn muốn khai báo hay gọi kích thức mảng 10.2 Tham chiếu đến phần tử mảng Sau mảng khai báo, phần tử mảng số để tham chiếu Chỉ số đến n-1 (với n kích thước mảng) Trong ví dụ 2, ta khai báo mảng 10 phần tử số đến Như vậy, để truy xuất đến phần tử thứ i mảng ia ta viết ia[i], i phép nhận giá trị từ đến mảng ia khia báo 10 phần tử 10.3 Nhập liệu cho mảng Mảng dãy phần tử kiểu liệu, việc nhập liệu cho phần tử mảng giống nhập liệu cho biến thơng thường Ví dụ for (i = 0; i < 10; i++) //vòng for giá trị i chạy từ đến { printf("Nhap vao phan tu thu %d: ", i + 1); scanf("%d", &ia[i]); } Ví dụ 4: Viết chương trình nhập vào n số nguyên Tính in trung bình cộng #include #include void main(void) { int ia[50], i, in, isum = 0; printf("Nhap vao gia tri n: "); scanf("%d", &in); //Nhap du lieu vao mang for(i = 0; i < in; i++) { printf("Nhap vao phan tu thu %d: ", i + 1); scanf("%d", &ia[i]); //Nhap gia tri cho phan tu thu i } //Tinh tong gia tri cac phan tu for(i = 0; i < in; i++) isum += ia[i]; //cong don tung phan tu vao isum printf("Trung binh cong: %.2f\n", (float) isum/in); getch(); } Ví dụ 5: loại tiền 1, 5, 10, 25 50 đồng Hãy viết chương trình nhập vào số tiền sau cho biết số số tiền gồm loại tiền, loại tờ #include #include #define MAX void main(void) { int itien[MAX] = {50, 25, 10, 5, 1}; //Khai bao va khoi tao mang voi phan tu int i , isotien, ito; printf("Nhap vao so tien: "); scanf("%d", &isotien); //Nhap vao so tien for (i = 0; i < MAX; i++) { ito = isotien/itien[i]; //Tim so to cua loai tien thu i printf("%4d to %2d dong\n", ito, itien[i]); isotien = isotien%itien[i]; //So tien lai sau da loai tru cac loai tien da co } getch(); } 10.4 Đọc liệu từ mảng Việc đọc liệu mảng cần rõ cần đọc liệu phần tử thứ mảng Ví dụ 5: for(i = 0; i < 10; i++) printf("%3d ", ia[i]); 10.5 Sử dụng biến mảng Ngồi kiểu int, bạn khai báo mảng kiểu char, float, double… Ví dụ 6: char cloai[20]; float ftemp[10]; Cách tham chiếu, nhập liệu, đọc liệu thực Bài tập thực hành Xây dựng hàm để thực công việc sau - Hàm Khoi_tao cho phép nhập vào mảng gồm n phần tử số nguyên - Hàm In_xuôi hàm In_nguoc cho phép in mảng hình theo thứ tự xuôi ngược - Hàm Tim_max hàm Tim_min để tìm giá trị nhỏ lớn mảng - Hàm Tinh_tong cho phép Tính tổng giá trị mảng - Hàm Tinh_tong_duong hàm Tinh_tong_am cho phép tính tổng phần tử giá trị dương âm mảng - Hàm Sap_xep_tang hàm Sap_xep_giam để xếp mảng theo thứ tự tăng dần giảm dần - Xây dựng chương trình gồm menu sau: -MENU CHUONG TRINH 1: Khoi tao mang 2: In mang man hinh 3: In mang dao nguoc man hinh 4: Tim gia tri max cua mang 5: Tim gia tri cua mang 6: Tinh tong 7: Tinh tong cac phan tu duong 8: Tinh tong cac phan tu am 9: Sap xep tang dan 10 Sap xep giam dan 11: Thoat Moi ban chon so tuong ung: Khi người sử dụng chọn số tương ứng mục tương ứng menu gọi đến hàm tương ứng để thực Gợi ý: - Xây dựng tất hàm tương ứng với yêu cầu đề - Xây dựng thêm hàm tên gọi inmenu để in menu yêu cầu - Viết hàm main, gọi hàm inmenu, tiếp đến dùng lệnh switch theo mẫu switch (ichon){ case 1: gọi hàm khoi tạo mảng break; case 2: gọi hàm in mảng hình break; … case 10: gọi hàm xếp giảm dần } Lưu ý, chương trình đóng lại người sử dụng chọn số 11 (dùng vòng lặp bao bên ngồi lệnh switch, điều kiện dừng người sử dụng nhấn số 11) Tự học lập trình C - Bài 11: Mảng nhiều chiều Khai báo mảng: Ví dụ 1: Khai báo mảng chiều int ia[5][10]; với int kiểu mảng, ia tên mảng, số phần tử mảng x 10 Ý nghĩa: Khai báo mảng chiều số nguyên gồm 50 phần tử, phần tử kiểu int Từ ví dụ 1, ta cú pháp khai báo mảng đa chiều sau: tên_kiểu tên_biến[spt1][spt2]…[sptn]; Diễn giải: tên_kiểu: kiểu liệu muốn khai báo cho mảng tên_biến: Tên biến mảng, tên đặt theo qui tắc đặt tên C - spt1, spt2,…, sptn: số phần tương ứng chiều mảng n chiều Tham chiếu đến phần tử mảng chiều Sau mảng khai báo, phần tử mảng chiều số để tham chiếu, số hàng số cột Chỉ số hàng đến số hàng – số cột đến số cột – Tham chiếu đến phần tử mảng chiều ia: ia[chỉ số hàng][chỉ số cột] Nhập liệu cho mảng chiều Mảng chiều giống ma trận hai chiều, kích thước số dòng nhân số cột, để nhập liệu cho phần tử ma trận bạn cần duyệt qua phần tử hàng ma trận đưa liệu vào cho phần tử tương ứng biến thơng thường Ví dụ 2: for (int i = 0; i < 5; i++) //vòng for giá trị i chạy từ đến cho dòng //tương ứng với dòng duyệt qua phần tử dòng tương ứng for (int j = 0; j < 10; j++) //vòng for giá trị j chạy từ đến cho cột { printf("Nhap vao phan tu ia[%d][%d]: ", i + 1, j + 1); scanf("%d", &ia[i][j]); } @Lưu ý:Phép lấy địa phần tử mảng hai chiều áp dụng phần tử mảng hai chiều kiểu nguyên, lại phép lấy địa cho phần tử mảng nhiều chiều không thực Chúng ta sửa lại ví dụ để nhập kiểu liệu khác cho mảng hai chiều cách dừng biến trung gian sau: float fa[5][10], tg; for (int i = 0; i < 5; i++) for (int j = 0; j < 10; j++) { printf("Nhap vao phan tu ia[%d][%d]: ", i + 1, j + 1); scanf("%f", &tg); fa[i][j]=tg; } Đọc liệu từ mảng chiều Để đọc liệu từ mảng hai chiều cần xác định đọc phần tử thứ mảng, tức cần biết số dòng số cột phần tử Ví dụ 3: in giá trị phần tử mảng chiều hình for (int i = 0; i < 5; i++) //vòng for giá trị i chạy từ đến cho dòng { for (int j = 0; j < 10; j++) //vòng for giá trị j chạy từ đến cho cột printf("%3d ", ia[i][j]); printf("\n"); //xuống dòng để in hàng } Ví dụ 4: Viết chương trình nhập vào ma trận số nguyên n x n In ma trận vừa nhập vào in theo chiều ngược lại dòng #include #include #define MAX 50; void main(void) { int ia[MAX][MAX], i, j, n; printf("Nhap vao cap ma tran: "); scanf("%d", &n); //Nhap du lieu vao ma tran for (i = 0; i < n; i++) for (j = 0; j < n; j++) { printf("Nhap vao phan tu ia[%d][%d]: ", i + 1, j + 1); scanf("%d", &ia[i][j]); } //In ma tran for (i = 0; i < n; i++) { for (j = 0; j < n; j++) printf("%3d ", ia[i][j]); printf("\n"); //xuống dòng để in hàng } printf("\n"); //Tao khoang cach giua ma tran //In ma tran theo thu tu nguoc for (i = 0; i< n; i++) { for (j = n-1; j >= j ) printf("%3d ", ia[i][j]); printf("\n"); //xuống dòng để in hàng } getch();} Bài tập thực hành Viết Viết Viết Viết Viết Viết Viết Viết hàm hàm hàm hàm hàm hàm hàm hàm cho phép nhập vào ma trận vng kích thước NxN tính tổng phần tử đường chéo tính tổng phần tử đường chéo phụ in tổng dòng ma trận in tổng cột ma trận kiểm tra ma trận phải ma trận đơn vị không kiểm tra ma trận phải ma trận chéo khơng kiểm tra ma trận phải ma trận tam giác khơng Xây dựng menu hàm main để gọi thực câu đến câu ... Tự h c lập trình C - Bài 2: C u tr c chương trình C Một chương trình bao gồm nhiều hàm, hàm người lập trình tổ ch c để giải c ng vi c tốn c n giải Một chương trình C để th c thi ln c n phải c ... tr c C c biến tồn c c có ảnh hưởng đến tồn chương trình Chu trình sống chạy chương trình đến l c kết th c chương trình b Khai báo biến (biến c c bộ): Vị trí biến đặt bên hàm, c u tr c Chỉ ảnh... th c: 1-2+3-4+…+(2n-1)-2n Tự h c lập trình C - Bài 8: Chương trình Hàm Một chương trình viết ngơn ngữ C dãy hàm, c hàm (hàm main()) Hàm chia tốn lớn thành c ng vi c nhỏ hơn, giúp th c cơng việc

Ngày đăng: 04/03/2019, 00:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w