intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Một số kiến thức cơ sở về lập trình bằng ngôn ngữ C

Chia sẻ: Paradise_12 Paradise_12 | Ngày: | Loại File: PDF | Số trang:153

126
lượt xem
19
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Giới thiệu ngôn ngữ C & C++ Lập trình hướng đối tượng (Object oriented programming) Cơ sở về phần cứng và phần mềm để thực hiện chương trình C. Giới thiệu ngôn ngữ C & C++ - C là một loại ngôn ngữ lập trình bậc cao đa dụng phổ biến nhất hiện nay. - C được phát triển từ ngôn ngữ B (K. Thompson, 1967) bởi Dennis Ritchie của hãng AT&T Bell Labs và bắt đầu xuất hiện từ năm 1972. - Yêu cầu của ngôn ngữ bậc cao: tính dễ đọc-viết (readability), tính dễ bảo trì (maintainability) và khả năng...

Chủ đề:
Lưu

Nội dung Text: Một số kiến thức cơ sở về lập trình bằng ngôn ngữ C

  1. Một số kiến thức cơ sở về lập trình bằng ngôn ngữ C 1
  2. CHƯƠNG 1: CƠ SỞ NGÔN NGỮ C I. Phần mở đầu Nội dung:  Giới thiệu ngôn ngữ C & C++  Lập trình hướng đối tượng (Object oriented programming)  Cơ sở về phần cứng và phần mềm để thực hiện chương trình C. Giới thiệu ngôn ngữ C & C++ - C là một loại ngôn ngữ lập trình bậc cao đa dụng phổ biến nhất hiện nay. - C được phát triển từ ngôn ngữ B (K. Thompson, 1967) bởi Dennis Ritchie của hãng AT&T Bell Labs và bắt đầu xuất hiện từ năm 1972. - Yêu cầu của ngôn ngữ bậc cao: tính dễ đọc-viết (readability), tính dễ bảo trì (maintainability) và khả năng linh động (portability).  C là ngôn ngữ lập trình độc lập với phần cứng và các hệ điều hành máy tính. - 1978: quyển sách The C Programming Language (Kernighan & Ritchie) là tài liệu kinh điển của ngôn ngữ C. - 1983: American National Standards Institute (ANSI) thành lập ủy ban xây dựng chuẩn cho ngôn ngữ C. - 1990: Chuẩn ANSI C ra đời. - 1983: yếu tố lập trình hướng đối tượng + C  ngôn ngữ C++ do Bjarne Stroustrup phát triển ở Bell Labs. - C++ là một ngôn ngữ gần như là mở rộng của ngôn ngữ C, đã có 3 phiên bản: 1.1 (1986), 2.0 (1989) và 3.0 (1991). Chính phiê n bản 3.0 là cơ sở để xây dựng chuẩn ANSI C++ . Lập trình hướng đối tượng (Object Oriented Programming) - Phương pháp lập trình: * LT tuyến tính (linear) * LT thủ tục (procedural) LT cấu trúc (structural) (Chương trình = Cấu trúc dữ liệu + Giải thuật) * LT hướng đối tượng (object-oriented) 2
  3. - Đặc điểm LTHĐT: * Đối tượng (Object): Dữ liệu + phương thức  trọng tâm của quá trình phát triển chương trình. * Lớp (Class): tập hợp các đối tượng có tính chất chung giống nhau. * Tính đóng gói dữ liệu (encapsulation): đối tượng bao gồm dữ liệu và phương thức được đóng gói mà người sử dụng có thể tiếp cận đến dữ liệu thông qua các chức năng mà không cần biết đến nọi dung lập trình cụ thể của chúng. * Tính kế thừa (inheritance): Sự kế thừa cho phép định nghĩa các lớp mới dựa trên các lớp có sẵn  cho phép sử dụng lại các module chương trình mà không cần thay đổi chúng. * Tính đa hình (polymorphism): trong các lớp kế thừa nhau, có thể định nghĩa phương thức có cùng tên hoặc ý nghĩa nhưng hoàn toàn khác nhau về mặt lập trình. - Ưu điểm: * Tính kế thừa  loại bỏ những đoạn chương trình phải viết lại, mở rộng các lớp nhanh chóng. * Cơ sở chương trình là đối tượng  việc thiết kế và lập trình thực hiện theo quy trình chứ không theo kinh nghiệm hoặc thủ thuật  tiết kiệm thời gian và tăng năng suất. * Tính đóng gói  đảm bảo tính bảo mật mà vẫn phát triển chương trình được. * Cách tiếp cận đặt trọng tâm đối t ượng  có thể xây dựng mô hình chi tiết và dễ cài đặt. * Khả năng mở rộng hệ thống lớn hơn khả thi hơn. - Ngôn ngữ LTHĐT: SIMULA (66) SMALLTALK (71) SMALLTALK ADA (83) (80) C++ (86) EIFFEL (90) ADA (95) JAVA (95) Cơ sở về phần cứng và phần mềm để thực hiện chương trình C Phần cứng: * Các loại máy tính có phần mềm biên dịch ngôn ngữ C &C++ (tương thích ANSI 3
  4. C) * Đối với PC, cấu hình máy phù hợp với chương trình biên dịch ngôn ngữ. Phần mềm: * Các loại máy sử dụng HĐH Unix, C là ngôn ngữ mặc định. * Đối với PC: Turbo C, Turbo C++, Borland C++, Symantec C, Visual C++, C++ Builder… II. Chương trình C đầu tiên Nội dung: Với phần này ta làm quen với cấu trúc của một chương trình C và các thành phần cấu tạo nên nó: Chú thích Chỉ thị #include Tập Header Hàm main() Lệnh return Hàm exit() Kiểu dữ liệu void Biên dịch và kết nối Dò sửa lỗi Ví dụ đơn giản chương trình C 1: /* Chuong trinh dau tien */ 2: #include 3: 4: main() 5: { 6: printf ("Chao ban! Day la chuong trinh C dau tien cua toi.\n"); 7: return 0; 8: } Chú thích Trong ngôn ngữ C, hàng chú thích được giới hạn giữa hai dấu /* và */. Trình phiên dịch C sẽ bỏ qua tất cả nôi dung chứa trong cặp dấu trên. /* Chuong trinh dau tien */ 4
  5. Đối với C++, ta có thể sử dụng // ở đầu mỗi hàng chú thích. /* This comment does not increase the size of the executable file (binary code), nor does it affect the performance speed. */ Tương đương với: // This comment does not increase the size of // the executable file (binary code), nor does // it affect the performance speed. Chú ý: Các đoạn chú thích không được phép lồng vào nhau. Chỉ thị #include #include Chỉ thị #include có tác dụng bảo bộ tiền xử lý C tìm tập tin ứng với nội dung và chép nội dung tập tin vào vị trí của include trong chương trình. Các tập tên ứng với nội dung trong < > thường là các tập tin header ứng với những hàm thông dụng trong thư viện của C, thường năm trong thư mục INCLUDE\. Nếu các tập header nằm tại thư mục làm việc, ta dùng ngoặc kép “ “ thay cho ngoặc < >. Chú ý: Ngôn ngữ C phân biệt chữ Hoa và chữ thường !!! Hàm main() Hàm main() ở hàng 4 là hàm đặc biệt trong C. Mọi chương trình C phải có hàm này và chạy chương trình bắt đầu từ hàm này. Nội dung các dòng lệnh trong hàm nằm giữa ngoặc { }. Trong hàm có lệnh đặc biệt return có nhiệm vụ trả lại một giá trị nào đó cho hàm. Mặc định nó trả lại một giá trị số nguyên (int). Hàng 5 trả lại giá trị 0, nghĩa là chương trình kết thúc bình thường; nếu giá trị trả lại khác 0, điều đó nghĩa là chương trình kết thúc có lỗi. Hàm exit() , hàm cơ sở của thư viện C được định nghĩa trong tập header stdlib.h (khi muốn dùng hàm này, phải gọi #include ), dùng để kết thúc chương trình, nhưng không trả lại giá trị nào cả. Ví dụ: 1: /* Chuong trinh dau tien */ 2: #include 3: #include 4: void main() 5
  6. 5: { 6: printf ("Chao ban! Day la chuong trinh C dau tien cua toi.\n"); 7: exit(0); 8: } Trong chương trình trên, hàng 4 có thêm từ khóa void để xác định kiểu dữ liệu trống (empty). Nếu void được thêm vào trước tên hàm, hàm sẽ không phải trả lại một giá trị nào cả. Trong trường hợp trên, vì hàm exit(0) không trả giá trị, từ void phải được thêm ở hàng 4. Biên dịch và kết nối (compiling and linking) Program.c Program.obj Program.exe KET NOI BIEN DICH (ket noi cac modul thu vien,…) (kiem tra cu phap, …) Lỗi chương trình và dò sửa lỗi (debugging) Khi chương trình nguồn được dịch và kết nối, có thể xuất hiện những lỗi cú pháp, lỗi kết nối… mà ta cần phải sửa lại cho đúng trước khi chương trình được dịch thành dạng thi hành được (executable). Các chương trình thường cung cấp cho người sử dụng công cụ dò sửa lỗi (debugger). Sinh viên nên tập làm quen với công cụ này để nâng cao hiệu quả lập trình. III. Các thành phần cơ sở của chương trình C Nội dung: Với phần này ta làm quen với các thành phần cơ sở cấu tạo nên ngôn ngữ C: Hằng và biến Biểu thức Câu lệnh Cụm câu lệnh Cấu trúc hàm Kiểu và tên hàm Đối số của hàm Cách gọi hàm 6
  7. Các thành phần cơ sở Hằng và biến Hằng là đại lượng không thay đổi giá trị trong quá trình thi hành chương trình. Biến là đại lượng mà giá trị của nó có thể thay đổi trong quá trình thi hành chương trình. Biểu thức Biểu thức là tổ hợp các hằng, biến và các toán tử xác định các phép toán. (2 + 3*i) / 10 Toán tử số học Ký hiệu Ý nghĩa Cộng + Trừ - * Nhân / Chia Phần dư (modulo) % Câu lệnh Câu lệnh là một tổ hợp có nghĩa (ở 2 vế) các biểu thức và chấm dứt bởi dấu chấm phẩy (;). i = (2 + 3) * 10; i = 2 + 3 * 10; j = 6 % 4; k = i + j; return 0; exit(0); printf ("Ket thuc chuong trinh"); Cụm câu lệnh Cụm câu lệnh là nhóm câu lệnh bắt đầu bằng ngoặc { và kết thúc bằng ngoặc }. Cụm câu lệnh được thi hành như một câu lệnh bởi bộ biên dịch C. for(. . .) { s3 = s1 + s2; mul = s3 * c; remainder = sum % c; 7
  8. } Cấu trúc một hàm C Một hàm được cấu tạo bởi 6 phần: - Kiểu hàm - Tên hàm - Đối số - Ngoặc mở { - Thân hàm - Ngoặc đóng } Kiểu hàm là kiểu dữ liệu mà hàm sẽ trả. Mặc định hàm trả kiểu int. Kiểu void se không trả giá gì nào cả. Tên hàm phải có nghĩa và đúng cú pháp. Tên không đúng Cú pháp Tên hàm không được khởi đầu bằng số 2 (digit) Tên hàm không được khởi đầu bằng dấu * (Asterisk) Tên hàm không được khởi đầu bằng từ khóa + (Addition) Tên hàm không được khởi đầu bằng . . (dot) Tên hàm không được chứa ký hiệu toán tử total-number Tên hàm không được chứa dấu ‘ account'97 Tên hợp lệ: print2copy, total_number, _quick_add, Method3 Đối số hàm C Đối số là những biến nằm trong ngoặc đơn sau tên hàm. Đối số hàm C chỉ có tính tham trị, nghĩa là nó chỉ truyền giá trị vào trong hàm chứ không thay đổi giá trị ngoài hàm. Ví dụ: Hàm cộng 2 số nguyên 1: /* This function adds two integers and returns the result */ 2: int integer_add( int x, int y ) 3: { 4: int result; 5: result = x + y; 6: return result; 7: } Lời khuyên Không nên tạo hàm quá phức tạp và dài, mànên chia nhỏ (tạo nhiều hàm con) ra để dễ dàng theo dõi trong quá trình điều chỉnh hoặc sử lỗi chương trình. Cách gọi hàm 8
  9. Ví dụ: Chương trình tính phép cộng và xuất giá trị lên màn ảnh 1: /* Calculate an addition and print out the result */ 2: #include 3: /* This function adds two integers and returns the result */ 4: int integer_add( int x, int y ) 5: { 6: int result; 7: result = x + y; 8: return result; 9: } 10: 11: int main() 12: { 13: int sum; 14: 15: sum = integer_add( 5, 12); 16: printf("The addition of 5 and 12 is %d.\n", sum); 17: return 0; 18: } Bài tập 1. Viết một hàm C nhân 2 số nguyên với nhau và trả lại giá trị nhân. 2. Viết chương trình gọi hàm nhân ở BT1 để nhân 3 với 5 và xuất kết quả lên màn ảnh. IV. Kiểu và tên dữ liệu trong C Nội dung: Với phần này ta làm quen với các bốn kiểu dữ liệu cơ sở của ngôn ngữ C: char int float double Từ khóa Từ khóa là từ dành riêng để xác định một đặc trưng của ngôn ngữ, không được dùng làm biến, hằng hoặc tên hàm. ANSI C có 32 từ khóa sau (và chỉ viết bằng chữ thường !!): Keyword Description Keyword Description auto Storage class specifier int Type specifier 9
  10. break Statement long Type specifier case Statement register Storage class specifier char Type specifier return Statement const Storage class modifier short Type specifier continue Statement signed Type specifier default Label sizeof Operator do Statement static Storage class specifier double Type specifier struct Type specifier else Statement switch Statement enum Type specifier typedef Statement extern Storage class specifier union Type specifier float Type specifier unsigned Type specifier for Statement void Type specifier goto Statement volatile Storage class modifier if Statement while Statement Kiểu dữ liệu char Một đối tượng của kiểu char biểu thị một ký tự đơn ứng với bảng mã ký tự 8 bits ASCII. Biến ký tự char variablename; hoặc: char variablename1, variablename2, variablename3; Format Ký tự: %c Hằng ký tự x = `A'; x = 65; hoặc x = `a'; x = 97; Ký tự thóat (\) K ý tự M ô tả \b BACKSPACE Kết thúc trang (form-feed) \f 10
  11. Xuống hàng (RETURN) \r \t TAB Xuất các ký tự Dùng hàm printf(), địnhnghi4a trong stdio.h, để xuất lên màn ảnh. Ví dụ: In các ký tự lên màn ảnh. 1: /* Printing out characters */ 2: #include 3: 4: main() 5: { 6: char c1; 7: char c2; 8: 9: c1 = `A'; 10: c2 = `a'; 11: printf("Convert the value of c1 to character: %c.\n", c1); 12: printf("Convert the value of c2 to character: %c.\n", c2); 13: return 0; 14: } Kết quả: Convert the value of c1 to character: A. Convert the value of c2 to character: a. Ví dụ: Biến đổi số thành ký tự (dùng format %c) 1: /* Converting numeric values back to characters */ 2: #include 3: 4: main() 5: { 6: char c1; 7: char c2; 8: 9: c1 = 65; 10: c2 = 97; 11: printf("The character that has the numeric value of 65 is: %c.\n", c1); 12: printf("The character that has the numeric value of 97 is: %c.\n", c2); 13: return 0; 14: } Kết quả: The character that has the numeric value of 65 is: A. The character that has the numeric value of 97 is: a. 11
  12. Kiểu dữ liệu int Dữ liệu số không có thành phần thập phân. Khoảng lớn của nó phụ thuộc vào độ dài bộ nhớ lưu trữ. Số nguyên 32 bits : từ 2147483647 (231_1) đến -2147483648. Số nguyên 16 bits : từ 32767 (215_1) đến -32768. Biến int int variablename; int variablename1, variablename2, variablename3; Format int: %f Ví dụ: Biến đổi ký tự thành số (dùng format %d) 1: /* Showing the numeric values of characters */ 2: #include 3: 4: main() 5: { 6: char c1; 7: char c2; 8: 9: c1 = `A'; 10: c2 = `a'; 11: printf("The numeric value of A is: %d.\n", c1); 12: printf("The numeric value of a is: %d.\n", c2); 13: return 0; 14: } Kết quả: The numeric value of A is: 65. The numeric value of a is: 97. Kiểu dữ liệu float Dữ liệu số thực biểu diễn bằng dấu chấm động. Số thực 32 bits: Khỏang giá trị +/-1.0*1037, có ít nhất 6 số lẻ thập phân. Các phép tính giữ số thực và số thực hoặc với số nguyên cho kết quả kiểu float. Biến float float variablename; float variablename1, variablename2, variablename3; Format float: %f Ví dụ: Xuất kết quả chia số int và float 1: /* Integer vs. floating-point divisions */ 12
  13. 2: #include 3: 4: main() 5: { 6: int int_num1, int_num2, int_num3; /* Declare integer variables */ 7: float flt_num1, flt_num2, flt_num3; /* Declare floating-point variables */ 8: 9: int_num1 = 32 / 10; /* Both divisor and dividend are integers */ 10: flt_num1 = 32 / 10; 11: int_num2 = 32.0 / 10; /* The divisor is an integer */ 12: flt_num2 = 32.0 / 10; 13: int_num3 = 32 / 10.0; /* The dividend is an integer */ 14: flt_num3 = 32 / 10.0; 15: 16: printf("The integer divis. of 32/10 is: %d\n", int_num1); 17: printf("The floating-point divis. of 32/10 is: %f\n", flt_num1); 18: printf("The integer divis. of 32.0/10 is: %d\n", int_num2); 19: printf("The floating-point divis. of 32.0/10 is: %f\n", flt_num2); 20: printf("The integer divis. of 32/10.0 is: %d\n", int_num3); 21: printf("The floating-point divis. of 32/10.0 is: %f\n", flt_num3); 22: return 0; 23: } Kết quả: The integer divis. of 32/10 is: 3 The floating-point divis. of 32/10 is: 3.000000 The integer divis. of 32.0/10 is: 3 The floating-point divis. of 32.0/10 is: 3.200000 The integer divis. of 32/10.0 is: 3 The floating-point divis. of 32/10.0 is: 3.200000 Kiểu dữ liệu double Dữ liệu số thực có độ chính xác gấp đôi. Số thực 64 bits, có ít nhất 10 số lẻ thập phân. Biến double double variablename; double variablename1, variablename2, variablename3; Format double: %e, %E Quy ước đặt tên biến 13
  14. Các ký tự sau đây được dùng đặt tên biến: A-Z, a-z, 0-9 (nhưng không được đặt đầu), dấu gạch dưới (_). Biến không được chứa ký hiệu toán tử. Biến không được chứa dấu (.). Biến không được chứa (‘). Biến không được chứa ký hiệu đặc biệt như *, @, #, ?, v.v.. Cảnh báo Không bao giờ dùng từ khóa của C hoặc tên các hàm thư viện C làm tên biến mặc dù có thể được. Bài tập 1. Viết chương trình xuất các giá trị số của các ký tự Z và z.. 2. Viết chương trình xuất các các ký tự có giá trị số 72 and 104. 3. Cho số double dbl_num = 123.456;,viết chương trình xuất giá trị trên theo format float và doule. 4. Viết chương trình xuất giá trị bằng số của ký tự xuống hàng (\n). V. Đọc và viết qua các giao tiếp nhập xuất (I/O) chuẩn Nội dung: Với phần này ta tìm hiểu kỹ hơn với lệnh printf() cũng như các lệnh nhập xuất sau: Hàm getc() Hàm putc() Hàm getchar() Hàm putchar() Các giao tiếp nhập xuất chuẩn (I/O) Ngôn ngữ C xử lý một tập tin như một chuỗi byte (8 bits), gọi là stream và có thể thu nhận hoặc ghi lại nó qua các giao tiếp xuất nhập (I/O): Nội dung Thiết bị giao tiếp Giao tiếp nhập chuẩn Bàn phím Stdin Giao tiếp xuất chuẩn Màn ảnh Stdout Giao tiếp lỗi để thông báo lỗi Màn ảnh Stderr 14
  15. Ghi chú Ngôn ngữ C thao tác với nhiều lệnh nhập xuất (I/O) chứa trong header stdio.h. Cho nên, luôn nhớ khai báo #include stdio.h trước khi sử dụng các lệnh I/O. Đối với C++, các lệnh nhập xuất chứa trong iostream.h. Giao tiếp nhập từ người sử dụng (thường là thông qua bàn phím) Hàm getc() Hàm getc() đọc 1 ký tự từ một file stream và trả lại giá trị số nguyên ứng với ký tự đó. #include int getc(FILE *stream); Nếu kết thúc tệp (end-of-file) hoặc lỗi xuất hiện, hàm trả lại giá trị EOF. Ví dụ: Đọc ký tự do người sử dụng cho vào 1: /*Reading input by calling getc() */ 2: #include 3: 4: main() 5: { 6: int ch; 7: 8: printf("Please type in one character:\n"); 9: ch = getc( stdin ); 10: printf("The character you just entered is: %c\n", ch); 11: return 0; 12: } Kết quả: Please type in one character: H The character you just entered is: H Hàm getchar() Hàm getchar() tương đương với getc(stdin). #include int getchar(void); Nếu kết thúc tệp (end-of-file) hoặc lỗi xuất hiện, hàm trả lại giá trị EOF. Ví dụ: Đọc ký tự do người sử dụng cho vào 1: /*Reading input by calling getchar() */ 2: #include 3: 15
  16. 4: main() 5: { 6: int ch1, ch2; 7: 8: printf("Please type in two characters together:\n"); 9: ch1 = getc( stdin ); 10: ch2 = getchar( ); 11: printf("The first character you just entered is: %c\n", ch1); 12: printf("The second character you just entered is: %c\n", ch2); 13: return 0; 14: } Kết quả: Please type in two characters together: Hi The first character you just entered is: H The second character you just entered is: i Giao tiếp xuất ra m àn ảnh Hàm putc() Hàm putc() ghi 1 ký t ự vào một file stream. #include int putc(int c, FILE *stream); Nếu ghi thành công, hàm trả lại giá trị ký tự,; nếu không trả lại EOF. Ví dụ: Xuất một ký tự lên màn ảnh 1: /*Outputting a character with putc() */ 2: #include 3: 4: main() 5: { 6: int ch; 7: 8: ch = 65; /* the numeric value of A */ 9: printf("The character that has numeric value of 65 is:\n"); 10: putc(ch, stdout); 11: return 0; 12: } Kết quả: The character that has numeric value of 65 is: A C:\app> Hàm putchar() Hàm putchar() tương đương với putc(stdout). #include int putchar(int c); 16
  17. Nếu ghi thành công, hàm trả lại giá trị ký tự,; nếu không trả lại EOF. Ví dụ: Xuất ký tự lên màn ảnh 1: /* 05L04.c: Outputting characters with putchar() */ 2: #include 3: 4: main() 5: { 6: putchar(65); 7: putchar(10); 8: putchar(66); 9: putchar(10); 10: putchar(67); 11: putchar(10); 12: return 0; 13: } Kết quả: A B C Hàm printf() #include int printf(const char *format-string, ...); VD: printf("The sum of two integers %d + %d is: %d.\n",a,b,c); Các đặc tả format dùng với printf(): %c Ký tự %d Số nguyên %i Số nguyên (như %d). %f Số thực dấu phẩy động %e Số thực dạng a.aaae+bbb %E Số thực dạng a.aaaE+bbb %g Dùng %f hoặc %e, nếu cái nào ngắn hơn. %G Dùng %f hoặc %E, nếu cái nào ngắn hơn. %o Số octa không dấu %s Chuỗi ký tự %u Số nguyên không dấu %x Số hexa không dấu (với x thường) %X Số hexa không dấu (với X hoa) %p Hiển thị đối số là pointer %% Cho ra ký tự (%). 17
  18. Đổi thành số Hexa Ví dụ: 1: /*Converting to hex numbers */ 2: #include 3: 4: main() 5: { 6: printf("Hex(uppercase) Hex(lowercase) Decimal\n"); 7: printf("%X %x %d\n", 0, 0, 0); 8: printf("%X %x %d\n", 1, 1, 1); 9: printf("%X %x %d\n", 2, 2, 2); 10: printf("%X %x %d\n", 3, 3, 3); 11: printf("%X %x %d\n", 4, 4, 4); 12: printf("%X %x %d\n", 5, 5, 5); 13: printf("%X %x %d\n", 6, 6, 6); 14: printf("%X %x %d\n", 7, 7, 7); 15: printf("%X %x %d\n", 8, 8, 8); 16: printf("%X %x %d\n", 9, 9, 9); 17: printf("%X %x %d\n", 10, 10, 10); 18: printf("%X %x %d\n", 11, 11, 11); 19: printf("%X %x %d\n", 12, 12, 12); 20: printf("%X %x %d\n", 13, 13, 13); 21: printf("%X %x %d\n", 14, 14, 14); 22: printf("%X %x %d\n", 15, 15, 15); 23: return 0; 24: } Kết quả: Hex(uppercase) Hex(lowercase) Decimal 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 A a 10 B b 11 C c 12 D d 13 E e 14 F f 15 Format số nguyên xác định số chữ số: % (-0n) d 1: /*Specifying minimum field width */ 2: #include 3: 4: main() 5: { 6: int num1, num2; 7: 8: num1 = 12; 18
  19. 9: num2 = 12345; 10: printf("%d\n", num1); 11: printf("%d\n", num2); 12: printf("%5d\n", num1); 13: printf("%05d\n", num1); 14: printf("%2d\n", num2); 15: return 0; 16: } Kết quả: 12 12345 12 00012 12345 Sắp xếp số nguyên thẳng hàng bên phải hoặc trái 1: /*Aligning output */ 2: #include 3: 4: main() 5: { 6: int num1, num2, num3, num4, num5; 7: 8: num1 = 1; 9: num2 = 12; 10: num3 = 123; 11: num4 = 1234; 12: num5 = 12345; 13: printf("%8d %-8d\n", num1, num1); 14: printf("%8d %-8d\n", num2, num2); 15: printf("%8d %-8d\n", num3, num3); 16: printf("%8d %-8d\n", num4, num4); 17: printf("%8d %-8d\n", num5, num5); 18: return 0; 19: } Kết quả: 1 1 12 12 123 123 1234 1234 12345 12345 Format biểu diễm độ chính xác: % (a.b) f , % (a.b) d 1: /* Using precision specifiers */ 2: #include 3: 4: main() 5: { 6: int int_num; 7: double flt_num; 8: 9: int_num = 123; 10: flt_num = 123.456789; 11: printf("Default integer format: %d\n", int_num); 12: printf("With precision specifier: %2.8d\n", int_num); 19
  20. 13: printf("Default float format: %f\n", flt_num); 14: printf("With precision specifier: %-10.2f\n", flt_num); 15: return 0; 16: } Kết quả: Default integer format: 123 With precision specifier: 00000123 Default float format: 123.456789 With precision specifier: 123.46 Bài tập Xuất lên màn ảnh ký tự B, y và e. 1. Hiển thị lên màn ảnh 2 số 123 và 123.456 và xếp thẳng hàng về phía trái. 2. Biểu diễn 3 số 15, 150, and 1500 dưới dạng hexa. 3. Chương trình sau có lỗi gì? 4. main() { int ch; ch = getchar(); putchar(ch); return 0; } CHƯƠNG II: TOÁN TỬ VÀ LỆNH ĐIỀU KHIỂN VI. Thao tác dữ liệu với các toán tử Nội dung: Với phần này ta tìm hiểu kỹ hơn về các toán tử: Toán tử gán (Arithmetic assignment operators) Tóan tử tăng giảm (Increment and decrement operators ) Toán tử quan hệ (Relational operators) Toán tử chuyển đổi kiểu (Cast operator) Tóan tử gán số học Tóan tử gán (=) Biến = biểu thức; 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
12=>0