Giáo trình Lập trình C# căn bản cung cấp cho người học những kiến thức như: Giới thiệu về ngôn ngữ C; Các thành phần trong ngôn ngữ C; Cấu trúc rẽ nhánh có điều kiện; Cấu trúc vòng lặp; Hàm; Mảng và chuỗi. Mời các bạn cùng tham khảo!
Vị trí, tính chất, ý nghĩa và vai trò môn học
- Vị trí: Môn học được bố trí sau khi sinh viên học xong các môn học chung, các môn học cơ sở chuyên ngành đào tạo chuyên môn nghề
- Tính chất: Lập trình C là môn học lý thuyết cơ sở nghề
Môn học ngôn ngữ C đóng vai trò quan trọng trong chương trình đào tạo, là nền tảng cho việc tiếp thu hầu hết các môn học khác Việc nắm vững ngôn ngữ C không chỉ giúp học viên hiểu sâu hơn về lập trình mà còn là cơ sở thiết yếu để phát triển các ứng dụng hiệu quả.
Mục tiêu của môn học
- Trình bày được công dụng của ngôn ngữ lập trình C;
- Trình bày được cú pháp, công dụng của các câu lệnh trong ngôn ngữ C;
- Phân tích được chương trình: xác định nhiệm vụ chương trình (phải làm gì?)
- Viết chương trình và thực hiện chương trình đơn giản trong máy tính bằng ngôn ngữ C
- Bố trí làm việc khoa học đảm bảo an toàn cho người và phương tiện học tập.
Nội dung môn học
I Giới thiệu về ngôn ngữ C 1 1
II Các thành phần trong ngôn ngữ C 7 6 1
III Cấu trúc rẽ nhánh có điều kiện 12 5 6 1
IV Cấu trúc vòng lặp 12 6 6
Kiểm tra* (LT hoặcTH) Lệnh while
So sánh sự khác nhau của các vòng lặp
Các ví dụ về hàm
Tham số dạng tham biến và tham trị
Sử dụng biến toàn cục
GIỚI THIỆU VỀ NGÔN NGỮ C
TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C
- Trình bày được lịch sử phát triển của ngôn ngữ C;
- Mô tả được những ứng dụng thực tế của ngôn ngữ C
- Mô tả những đặc điểm cơ bản của ngôn ngữ C
C là ngôn ngữ lập trình cấp cao, được sử dụng rất phổ biến để lập trình hệ thống cùng với Assembler và phát triển các ứng dụng
Vào cuối thập kỷ 60 và đầu thập kỷ 70 của thế kỷ XX, Dennish Ritchie tại phòng thí nghiệm Bell đã phát triển ngôn ngữ lập trình C, dựa trên ngôn ngữ BCPL của Martin Richards và ngôn ngữ B do Ken Thompson phát triển Ngôn ngữ C được cài đặt lần đầu trên hệ điều hành UNIX của máy DEC PDP-11 Năm 1978, Ritchie cùng B.W Kernighan đã xuất bản cuốn sách “Ngôn ngữ lập trình C”, góp phần phổ biến ngôn ngữ này rộng rãi đến ngày nay.
Ngôn ngữ lập trình C ban đầu được thiết kế để hoạt động trong môi trường hệ điều hành Unix, nhằm hỗ trợ cho các công việc lập trình phức tạp Tuy nhiên, với nhu cầu phát triển ngày càng cao trong lĩnh vực lập trình, C đã vượt ra ngoài giới hạn của phòng thí nghiệm Bell và nhanh chóng trở thành một phần quan trọng trong ngành công nghiệp phần mềm Các công ty sản xuất phần mềm đã phát triển nhiều phiên bản hỗ trợ lập trình bằng ngôn ngữ C, dẫn đến sự ra đời của chuẩn ANSI C.
Ngôn ngữ lập trình C là một ngôn ngữ lập trình hệ thống rất mạnh và rất
Ngôn ngữ lập trình C nổi bật với tính "mềm dẻo" nhờ vào thư viện phong phú chứa nhiều hàm đã được xây dựng sẵn, giúp lập trình viên giải quyết các bài toán mà không cần phải viết lại từ đầu C còn hỗ trợ nhiều phép toán, làm cho nó trở thành lựa chọn lý tưởng cho các bài toán kỹ thuật phức tạp Hơn nữa, C cho phép người lập trình tự định nghĩa các kiểu dữ liệu trừu tượng, mở rộng khả năng sáng tạo trong lập trình.
C là một ngôn ngữ lập trình phổ biến, mặc dù đôi khi gây khó hiểu do tính linh hoạt của nó Tuy nhiên, C đã trở thành một công cụ lập trình mạnh mẽ, thường được sử dụng trong việc phát triển phần mềm hiện đại.
Ngôn ngữ C có những đặc điểm nổi bật như tính cô đọng với chỉ 32 từ khóa và 40 toán tử, giúp mã nguồn trở nên ngắn gọn Đặc điểm cấu trúc của C cho phép tổ chức chương trình rõ ràng thông qua các chỉ thị lập trình như cấu trúc lựa chọn và lặp Cũng nhờ tính tương thích, chương trình viết bằng C có thể chuyển đổi dễ dàng giữa các hệ thống máy tính nhờ vào bộ tiền xử lý và thư viện chuẩn phong phú Tính linh động của C cho phép cú pháp đa dạng, giúp tối ưu hóa kích thước mã lệnh và tăng tốc độ thực thi Cuối cùng, C hỗ trợ biên dịch nhiều tập tin chương trình thành các tập tin đối tượng, cho phép liên kết chúng thành một chương trình thực thi thống nhất.
KHỞI ĐỘNG VÀ THOÁT KHỎI CHƯƠNG TRÌNH C
- Một số thao tác cơ bản của trình soạn thảo C
- Tiếp cận một số lệnh đơn giản thông qua các ví dụ
- Thực hiện các thao tác an toàn với máy tính
Để sử dụng lệnh BC tại dấu nhắc DOS, bạn cần gõ "BC" và nhấn Enter, điều này chỉ hoạt động nếu đường dẫn đến thư mục chứa tập tin BC.EXE đã được cài đặt trong lệnh path Nếu đường dẫn chưa được cài đặt, hãy xác định thư mục BORLAND C hoặc TURBO C nằm trong ổ đĩa nào và sau đó nhập lệnh phù hợp.
:\BORLAND C\BIN\BC (Enter)
Khi khởi động BC và soạn thảo chương trình với một tập tin mà bạn đã đặt tên, hãy gõ lệnh: BC [đường dẫn] Nếu tập tin đã tồn tại, nó sẽ được nạp lên; nếu chưa có, một tập tin mới sẽ được tạo ra.
Để khởi động tại Windows, bạn có thể vào menu Start, chọn Run và nhập một trong các dòng lệnh tương tự như trong DOS Ngoài ra, bạn cũng có thể mở Window Explorer, tìm ổ đĩa chứa thư mục BORLANDC, sau đó vào thư mục BORLANDC và tiếp tục vào thư mục BIN để khởi động tập tin BC.EXE.
Câu lệnh gõ D:\BORLANDC\BIN\BIN\BC E:\BAITAP_BC\VIDU1.CPP khởi động trình biên dịch BC và nạp tập tin VIDU1.CPP từ thư mục BAITAP_BC trên ổ đĩa E Nếu tập tin này không tồn tại, hệ thống sẽ tự động tạo mới nó.
Màn hình sau khi khởi động thành công:
Hình 1.1 Màn hình sau khi khởi động C thành công
1.2.2 THOÁT KHỎI CHƯƠNG TRÌNH C Ấn phím F10 (kích hoạt Menu), chọn menu File, chọn Quit;
Hoặc ấn tổ hợp phím Alt – X
1.2.3 CÁC VÍ DỤ ĐƠN GIẢN
1 /* Chuong trinh in ra cau bai hoc C dau tien
6 printf(“Bai hoc C dau tien”);
Kết quả in ra màn hình:
Dòng đầu tiên trong mã nguồn bắt đầu bằng /* và kết thúc bằng */ để chỉ ra rằng đây là một dòng chú thích Những chú thích này không được dịch hay thực thi khi chạy chương trình, nhưng chúng giúp làm rõ mục đích của mã, giúp người đọc hiểu rõ hơn về chức năng của chương trình khi xem lại sau này.
Dòng thứ hai của chương trình chứa lệnh tiền xử lý #include , cần thiết để sử dụng hàm printf từ thư viện C Việc khai báo này giúp trình biên dịch nhận diện và sử dụng hàm, nếu không có, chương trình sẽ gặp lỗi.
Dòng thứ 3: Hằng trắng viết ra với ý đồ làm cho bảng chương trình thoáng, dễ đọc
Hàm void main(void) là thành phần chính của mọi chương trình C, và bạn có thể viết dưới dạng main() hoặc void main() nhưng nên sử dụng void main(void) để làm cho chương trình rõ ràng hơn Tất cả các chương trình C đều bắt đầu thực thi từ hàm main Cặp dấu ngoặc () chỉ ra đây là một khối hàm Từ khóa void đầu tiên cho biết hàm này không trả về giá trị, trong khi từ khóa void trong ngoặc đơn cho biết hàm này không nhận vào đối số.
Dòng thứ 5 và 7: cặp dấu ngoặc móc {} giói hạn thân của hàm Thân hàm bắt đầu bằng dấu { và kết thúc bằng dấu }
Dòng thứ 6: printf(“Bai hoc C dau tien.”);, thực hiện việc in ra chuỗi ký tự trong dấu nháy kép (“”) Đây là một câu lệnh trong ngôn ngữ lập trình C, và mỗi câu lệnh cần kết thúc bằng dấu chấm phẩy (;).
- Các từ include, stdio.h, void, main, print phải viết bằng chữ thường
- Chuỗi trong nháy kép cần in ra “Bạn có thể viết chữ HOA, thường tùy ý”
- Kết thúc câu lệnh phải có dấu chấm phẩy
- Kết thúc tên hàm không có dấu chấm phẩy hoặc bất cứ dấu gì
- Ghi chú phải đặt trong cặp /*……*/
- Thân hàm phải được bao bởi cặp {}
- Các câu lệnh trong thân hàm phải viết thụt vào
Sau khi nhập xong đoạn chương trình, bạn hãy nhấn giữ phím Ctrl và gõ F9 để dịch và chạy chương trình Lúc này, chương trình sẽ chạy rất nhanh mà không hiển thị kết quả Để xem kết quả, bạn nhấn giữ phím Alt và gõ F5 Sau khi xem xong, chỉ cần nhấn phím bất kỳ để trở lại màn hình soạn thảo.
CÁC THÀNH PHẦN CƠ BẢN TRONG NGÔN NGỮ C 12 2.1 Từ khóa
Bộ chữ viết trong C
Ngôn ngữ C được xây dựng trên bộ ký tự sau:
- Các ký hiệu toán học: + - * / = ( )
- Dấu cách (space) dùng để tách các từ Ví dụ chữ SINH VIEN có 9 ký tự, còn SINHVIEN chỉ có 8 ký tự
Khi viết chương trình, ta không được sử dụng bất kỳ ký tự nào khác ngoài các ký tự trên.
Từ khóa
Keywords are essential terms used to declare data types, write operators, and construct statements in programming Some of the keywords in TURBO C include 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, typedef, union, unsigned, void, volatile, and while.
- Không được dùng các từ khoá để đặt tên cho các hằng, biến, mảng, hàm
- Từ khoá phải được viết bằng chữ thường, ví dụ: viết từ khoá khai báo kiểu nguyên là int chứ không phải là INT.
Tên
Mục tiêu: Hiểu và khai báo tên theo đúng nguyên tắc
Khái niệm về tên trong lập trình rất quan trọng, vì nó không chỉ thể hiện rõ ý nghĩa của chương trình mà còn giúp xác định các đại lượng khác nhau trong quá trình thực hiện.
Tên thường được đặt cho hằng, biến, mảng, con trỏ, nhãn… Chiều dài tối đa của tên là 32 ký tự
Tên biến hợp lệ bao gồm các ký tự chữ, số và dấu gạch dưới, với ký tự đầu tiên phải là chữ hoặc dấu gạch dưới Ngoài ra, tên biến không được trùng với các từ khóa đã được định nghĩa.
Các tên đúng: delta, a_1, Num_ODD, Case
3a_1 (ký tự đầu là 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)
Lưu ý: Trong C, tên phân biệt chữ hoa, chữ thường
Ví dụ 2 : number khác Number case khác Case
(case là từ khóa, do đó bạn đặt tên là Case vẫn đúng)
Kiểu dữ liệu
Mục tiêu: Hiểu và có thể sử dụng kiểu dữ liệu theo đúng mục đích của bài toán
Trong ngôn ngữ lập trình C, có thể sử dụng các kiểu số nguyên như int, long và unsigned Kích thước và phạm vi biểu diễn của các kiểu số này được thể hiện rõ trong bảng dưới đây.
Kiểu Phạm vi biểu diễn Kích thước int -32768 đến 32767 2 byte unsigned int 0 đến 65535 2 byte long -2147483648 đến 2147483647 4 byte unsigned long 0 đến 4294967295 4 byte
Bảng 2.1 Kích cỡ và phạm vi biểu diễn kiểu dữ liệu số nguyên
Trong ngôn ngữ lập trình C, có ba kiểu dữ liệu cho số thực là float, double và long double Mỗi kiểu dữ liệu này có kích cỡ và phạm vi biểu diễn khác nhau, được thể hiện rõ trong bảng dưới đây.
Kiểu Phạm vi biểu diễn Số chữ số có nghĩa Kích thước
Double 1.7E-308 đến 1.7E+308 15 đến 16 8 byte long double 3.4E-4932 đến 1.1E4932 17 đến 18 10 byte
Bảng 2.2 Kích cỡ và phạm vi biểu diễn kiểu số thực
Máy tính có thể lưu trữ được các số kiểu float có giá trị tuyệt đối từ 3.4E-
38 đến 3.4E+38 Các số có giá trị tuyệt đối nhỏ hơn3.4E-38 được xem bằng 0 Phạm vi biểu diễn của số double được hiểu theo nghĩa tương tự.
Các phép toán
Mục tiêu : Hiểu và có thể thực hiện các phép tính toán trong chương trình
2.4.1 Các phép toán số học
Phép toán Ý nghiã Ví dụ
Phép toán Ý nghiã Ví dụ
/ Phép chia a/b (Chia số nguyên sẽ chặt phần thập phân)
% Phép lấy phần dư a%b (Cho phần dư của phép chia a cho b)
Bảng 2.3 Các phép toán số học
Có phép toán một ngôi - ví du -(a+b) sẽ đảo giá trị của phép cộng (a+b)
Các phép toán cộng (+) và trừ (-) có thứ tự ưu tiên ngang nhau, nhưng thấp hơn so với các phép toán nhân (*), chia (/) và phép chia lấy dư (%) Đồng thời, cả ba phép toán này lại có thứ tự ưu tiên thấp hơn so với phép trừ một ngôi.
Các phép toán số học được thực hiện theo thứ tự từ trái sang phải Số ưu tiên và khả năng kết hợp của các phép toán sẽ được trình bày trong phần sau.
2.4.2 Các phép toán quan hệ và logic
Phép toán quan hệ và logic cho phép xác định giá trị đúng (1) hoặc sai (0) Cụ thể, nếu các điều kiện được đưa ra là đúng, kết quả sẽ là 1; ngược lại, nếu các điều kiện sai, kết quả sẽ là 0.
Các phép toán quan hệ:
Phép toán Ý nghĩa Ví dụ
>= So sánh lớn hơn hoặc bằng a>=b
b thi hoan doi gia tri a va b,nguoc lai khong hoan doi
In ra man hinh a va b
#include void main(void)
{ int ia,ib,itam;//Khai bao cac bien
//Nhap vao ia printf("a="); scanf("%d",&ia);
//Nhap vao ib printf("b="); scanf("%d",&ib); if(ia>ib)
//Hoan vi a va b tam=ia; ia=ib; b=itam;
1 Viết chương trình giải phương trình bậc 1: ax + b = 0, với a, b nhập vào từ bàn phím
Hướng dẫn: Nhập vào 2 biến a, b
Nếu a=0 thì (xét hệ số b)
Nếu b=0 thì kết luận phương trình vô số nghiệm
Ngược lại thì kết luận phương trình vô nghiệm
Ngược lại (hệ số a#0), kết luận phương trình có 1 nghiệm x=-b/a
Lệnh switch()
- Trình bày cú pháp, công dụng của lệnh switch ;
- Giải một số bài toán sử dụng lệnh switch ;
- Sử dụng được các cấu trúc switch lồng nhau
- Thực hiện các thao tác an toàn với máy tính
Lệnh switch tương tự như cấu trúc else if, nhưng linh hoạt và mềm dẻo hơn so với if Tuy nhiên, nó có hạn chế là biểu thức phải có giá trị hằng nguyên Một bài toán có thể sử dụng lệnh switch cũng có thể áp dụng if, nhưng sự lựa chọn phụ thuộc vào giải thuật của bài toán.
3.3.1 Cấu trúc switch…case (switch thiếu)
Chọn thực hiện 1 trong n lệnh cho trước
❖ Cú pháp lệnh switch (biểu thức)
{ case giá trị 1 : lệnh 1; break; case giá trị 2 : lệnh 2; break;
Khi sử dụng cấu trúc điều khiển switch, cần lưu ý rằng từ khóa switch, case và break phải được viết bằng chữ thường Biểu thức trong switch phải trả về một giá trị hằng nguyên như char, int hoặc long Các lệnh trong mỗi case có thể bao gồm nhiều lệnh, nhưng không bắt buộc phải đặt trong cặp dấu ngoặc nhọn { }.
Khi giá trị của biểu thức trùng với giá trị của i, lệnh i sẽ được thực hiện Nếu không có lệnh break sau lệnh i, chương trình sẽ tiếp tục thực hiện lệnh i + 1 Nếu có lệnh break, chương trình sẽ thoát khỏi cấu trúc switch.
Ví dụ: Viết chương trình nhập vào một tháng và cho biết tháng đó thuộc quý mấy
Chương trình nhập vào một tháng và in ra quý của tháng đó
#include void main(void)
//Nhập vào tháng printf("Thang : "); scanf("%d",&iThang);
//Kiểm tra tháng thuộc quý nào để nhập vào if(iThang>0 && iThangn: o Khởi tạo biến đếm count=0 o Cho i chạy từ 2 đến n
- In giá trị count và các số nguyên tố tìm được ra màn hình
- Tính tổng S: o S=0 o Cho i chạy từ 1 đến n
- Tính tổng S: o S=0 o Cho i chạy từ 1 đến n
- Tính tổng S: o S=0 o Cho i chạy từ 1 đến n
- Tạo bảng số: o Cho i chạy từ 1 đến 100 làm
▪ Nếu i%10= =1 thì in xuống dòng và i ra màn hình
▪ Ngược lại, in giá trị i ra màn hình
Lệnh break
Mục tiêu: Hiểu và biết cách sử dụng lệnh break trong chương trình
Lệnh break thường được sử dụng để thoát khỏi các vòng lặp khi không có điều kiện dừng rõ ràng hoặc khi người dùng muốn dừng vòng lặp theo điều kiện tự định Nó thường kết hợp với lệnh if và có thể được áp dụng trong các cấu trúc lặp như for, while, do…while, và switch Khi lệnh break được thực thi, nó sẽ thoát khỏi vòng lặp mà nó đang chứa.
Ví dụ: Viết chương trình đọc từ bàn phím một số nguyên n (1≤n≤10) rồi đưa ra tiếng Anh của số đó Chẳng hạn, nếu gõ vào n = 4 thì in ra Four
//khai bao bien int so; char *kq;
//nhap tuoi printf("nhap so bat ky nam trong khoang [1,10]: "); scanf("%d",&so);
///chuyen so vua nhap sang tieng anh switch(so)
The code snippet assigns numerical values to their corresponding word representations For instance, if the case is 1, the variable 'kq' is set to "One"; for case 2, it becomes "Two"; and this pattern continues up to case 10, where 'kq' is assigned the value "Ten" This structured approach effectively translates numbers into their English word equivalents.
} printf("Trong tieng Anh\n"); printf("%d : %s",so,kq); getch();
Sử dụng lệnh break trong switch để nhảy bỏ các câu lệnh kế tiếp còn lại.
Lệnh continue
Lệnh break là một công cụ quan trọng trong lập trình, giúp người dùng hiểu và sử dụng hiệu quả trong các vòng lặp như for, while và do while Khi lệnh continue được thực thi, quyền điều khiển sẽ chuyển về biểu thức điều kiện của vòng lặp gần nhất, khiến tất cả các lệnh phía sau lệnh continue trong vòng lặp đó bị bỏ qua và không được thực hiện.
Lệnh while
Mục tiêu: Hiểu và biết cách sử dụng vòng lặp while khi giải quyết bài toán
Cú pháp : while (biểu thức)
Biểu thức có thể bao gồm một hoặc nhiều biểu thức con, được ngăn cách bằng dấu phẩy (,) Độ chính xác của biểu thức sẽ được xác định dựa trên giá trị của biểu thức con cuối cùng.
+ Trong thân while (khối lệnh) có thể chứa một hoặc nhiều cấu trúc điều khiển khác
+ Trong thân while có thể sử dụng lệnh continue để chuyển đến đầu vòng lặp (bỏ qua các câu lệnh còn lại trong thân)
+ Muốn thoát khỏi vòng lặp while tùy ý có thể dùng các lệnh break, goto, return như lệnh for
Từ khóa while phải viết bằng chữ thường
Nếu khối lệnh bao gồm từ 2 lệnh trở lên thì phải đặt trong dấu { }
Ví dụ: Viết chương trình nhập vào một số n và in ra tổng các số đó
{ int n,s; printf("\n Chuong trinh tinh tong cac so tu nhien tu
} printf(“\nTong tim duoc la: %d”,s); getch();
Bài tập: Dùng vòng lặp while để:
1 Viết chương trình tính tổng bình phương các số lẻ từ 1 đến N
2 Viết chương trình nhập vào N rồi tính giai thừa của N
3 Hãy làm theo yêu cầu sau:
-Viết chương trình kiểm tra n có phải là số nguyên tố hay không, với số n được nhập vào từ bàn phím
-Viết chương trình nhập vào số n và in ra các số nguyên tố có từ 1-> n, đếm có bao nhiêu số nguyên tố như vậy
5 Viết chương trình in ra các số từ 1 đến 100 theo dạng sau:
Lệnh do while
Mục tiêu: Hiểu và biết cách sử dụng vòng lặp do while khi giải quyết bài toán
❖ Cú pháp: do khối lệnh; while (biểu thức);
Biểu thức có thể bao gồm một hoặc nhiều biểu thức con, được phân tách bằng dấu phẩy (,) Độ chính xác của biểu thức sẽ được xác định dựa trên giá trị của biểu thức con cuối cùng.
+ Trong thân do…while (khối lệnh) có thể chứa một hoặc nhiều cấu trúc điều khiển khác
+ Trong thân do…while có thể sử dụng lệnh continue để chuyển đến đầu vòng lặp (bỏ qua các câu lệnh còn lại trong thân)
+ Muốn thoát khỏi vòng lặp do…while tùy ý có thể dùng các lệnh break, goto, return
Từ khóa do, while phải viết bằng chữ thường
Nếu khối lệnh bao gồm từ 2 lệnh trở lên thì phải đặt trong dấu { }
Ví dụ : Viết chương trình nhập vào một số n và in ra tổng các số đó (sinh viên tự làm)
Bài tập: Dùng vòng lặp do while để:
1 Viết chương trình tính tổng bình phương các số lẻ từ 1 đến N
2 Viết chương trình nhập vào N rồi tính giai thừa của N
3 Hãy làm theo yêu cầu sau:
-Viết chương trình kiểm tra n có phải là số nguyên tố hay không, với số n được nhập vào từ bàn phím
-Viết chương trình nhập vào số n và in ra các số nguyên tố có từ 1-> n, đếm có bao nhiêu số nguyên tố như vậy
5 Viết chương trình in ra các số từ 1 đến 100 theo dạng sau:
Vòng lặp lồng nhau
Mục tiêu: Biết cách kết hợp để các vòng lặp lồng nhau khi giải quyết bài toán có tính phức tạp
Các lệnh lặp như for, while và do while có thể được lồng ghép vào nhau hoặc tự lồng vào chính nó Tuy nhiên, việc lồng nhiều cấp không cần thiết có thể gây nhầm lẫn trong quá trình lập trình và kiểm soát chương trình Do đó, nên hạn chế việc lồng lệnh lặp để đảm bảo sự rõ ràng và dễ hiểu trong mã nguồn.
Ví dụ : Vẽ hình chữ nhật đặc bằng các dấu '*'
#include void main(void)
{ int i, ij, idai, irong; printf("Nhap vao chieu dai: "); scanf("%d", &idai); printf("Nhap vao chieu rong: "); scanf("%d", &irong); for (i = 1; i