Download as pdf or txt
Download as pdf or txt
You are on page 1of 45

Ngôn ngữ lập trình C

Các thành phần cơ bản


Nội dung
 Giới thiệu ngôn ngữ lập trình C
 Trình biên dịch/thông dịch
 Cấu trúc chương trình
 Định dạng trong C
 Biến, kiểu dữ liệu
 Hằng số, từ khóa, toán tử
 Thư viện
 stdio.h, stdlib.h, math.h, string.h, ctype.h, time.h
 Nhập xuất căn bản
 Nhập: scanf, cin, gets
 Xuất: printf, cout, puts

2 Ngôn ngữ lập trình C - Cơ bản


Ngôn ngữ lập trình C
 Được phát triển bởi Dennis
Ritchie tại phòng thí nghiệm
AT&T Bell vào đầu thập niên
1970

 C được dùng trong hệ điều


hành UNIX và phát triển cùng
với hệ điều hành này

 C đã lan rộng ra nhiều hệ điều


hành khác và trở thành ngôn
ngữ phổ dụng nhất

3 Ngôn ngữ lập trình C - Cơ bản


Trình biên dịch/Trình thông dịch

Trình Mã máy
Mã nguồn Machine Source
Source code
biên dịch
Code Code
Compiler
Trình
thông dịch
Interpreter
Executable
Input Output Input Output
Program

Trình biên dịch: Phân tích chương


trình và biên dịch thành mã máy. Trình thông dịch: Phân tích và
Chương trình có thể thực thi: Có thể thực thi chương trình cùng lúc.
chạy độc lập với trình biên dịch => Việc thực thi chậm nhưng dễ sửa
Thực thi nhanh chóng lỗi chương trình.

4 Ngôn ngữ lập trình C - Cơ bản


Biên dịch và chạy chương trình
 IDE – Integrated
Editor
Development Environment Source code
 Trình soạn thảo file.c

 Biên soạn mã nguồn


 Trình biên dịch Compiler
 Phân tích và biên dịch mã nguồn Object code
thành mã đối tượng file.obj

 Trình liên kết


 Kết hợp các mã Libraries Linker
đối tượng và thư Executable code
viện thành mã IDE file.exe
(Integrated
thực thi
Development
Environment)

5 Ngôn ngữ lập trình C - Cơ bản


Sửa lỗi - debug
 Lỗi cú pháp Semantic Errors
 Phát hiện bởi trình biên Syntactic
dịch Editor
Errors Source code
 Lỗi về từ khóa, cú pháp, file.c
ngữ pháp
 Lỗi ngữ nghĩa
Compiler
 Được phát hiện bởi
người sử dụng Object code
file.obj
 Lỗi về kết quả của
chương trình
 Lỗi xuất hiện trong quá Libraries Linker
trình thực thi chương
Executable code
trình file.exe
 Đúng cú pháp nhưng sai
kết quả
6 Ngôn ngữ lập trình C - Cơ bản
Cấu trúc chương trình C
1. /* Chương trình Hello world! */
2. #include <stdio.h> // Khai báo thư viện
3. int main() // Chương trình chính
4. { // Bắt đầu chương trình
5. printf("Hello world!\n"); // Câu lệnh
6. return 0;
7. } // Kết thúc chương trình
 Ký hiệu #include dùng để khai báo thư viện phục vụ chương
trình
 Hàm main là nơi bắt đầu thực hiện chương trình
 Lệnh printf nằm trong thư viện stdio.h, dùng để xuất dữ liệu
ra màn hình
 Kí hiệu \n dùng để xuống dòng
 Lệnh return dùng để kết thúc và trả về giá trị kiểu int cho hàm
main
7 Ngôn ngữ lập trình C - Cơ bản
Định dạng trong C
 Có phân biệt giữa chữ in HOA và chữ in thường!
 Tất cả các từ khóa và hàm chuẩn trong C đều là chữ thường
 Các dòng trống, khoảng trắng, lời chú thích đều được trình
biên dịch bỏ qua
 Không ảnh hưởng đến hoạt động của chương trình
 Các dấu thụt dòng giúp chương trình dễ đọc, rõ ràng.
 Có thể dùng tab hoặc dấu cách
 Không ảnh hưởng đến hoạt động của chương trình
 Câu lệnh được kết thúc bằng dấu chấm phẩy ;
 Chuỗi ký tự được đặt giữa hai dấu hai nháy "Chuỗi"
 Một ký tự được đặt giữa hai dấu một nháy 's'
8 Ngôn ngữ lập trình C - Cơ bản
Lời chú thích
 Không ảnh hưởng đến hoạt động của chương trình
 Giải thích về giải thuật, cách hoạt động, chú thích các
phần khác nhau
 Hai cách ghi chú thích
 // chú thích dòng
 /* chú thích khối*/
 Chú thích dòng: Lời chú thích đứng sau dấu //
 Chú thích khối: Lời chú thích nằm giữa dấu /* và */
1. /* Chương trình C
2. ** In ra màn hình dòng chữ Hello world!
3. */
4. #include <stdio.h> //Khai báo thư viện
9 Ngôn ngữ lập trình C - Cơ bản
Biến
 Biến được dùng để lưu trữ dữ liệu và kết quả
tính toán
 Kiểu dữ liệu: Nguyên, thực, ký tự, chuỗi, mảng,
cấu trúc, con trỏ…
Tên biến: Do người lập trình tự đặt

 Biến phải được khai báo trước khi sử dụng
 Cú pháp: Kiểu-dữ-liệu Tên-biến;
 int year;
 float score;
 char kytu;

10 Ngôn ngữ lập trình C - Cơ bản


Biến (2)
 Giá trị của biến có thể thay
int year; // Khởi tạo
đổi year = 2016;// Gán
 Khởi tạo biến:
 int year = 2016;
 Phép gán:
year 2016
 year = last_year + 1; Biến Vùng nhớ
 Một vùng nhớ sẽ được cấp
phát tương ứng với kích cỡ
của biến
 Mỗi ô nhớ có một địa chỉ riêng Kiểu dữ
 Dữ liệu kiểu con trỏ lưu địa chỉ liệu?
của ô nhớ (sẽ học ở phần sau)

11 Ngôn ngữ lập trình C - Cơ bản


Kiểu dữ liệu
 int: Kiểu số nguyên
 2 hoặc 4 bytes (16 hoặc 32 bits)
 -32,768 → 32,767 hoặc -2,147,483,648 → 2,147,483,647
 float: Kiểu số thực
 4 bytes (32 bits): 1.2E-38 → 3.4E+38, độ chính xác 24 bits
 double: Kiểu số thực có độ chính xác cao hơn float
 8 bytes (64 bits): 2.3E-308 → 1.7E+308, độ chính xác 53 bits
 char: Kiểu ký tự
 1 byte, ví dụ: char exit = 'e';
 bool: Kiểu luận lý, có giá trị true hoặc false Độ chính
 1 byte, ví dụ: bool kt = true; xác?

12 Ngôn ngữ lập trình C - Cơ bản


Số chấm động – floating-point numbers
 Biểu diễn số thực
 Ví dụ: 12’345 = 1.2345 x 104
 Hay 1.2345E+4
 Trị số x hệ cơ số số mũ significand x base exponent
 Float: Độ chính xác đơn
 Double: Độ chính xác đôi

Kiểu dữ liệu Dấu Mũ Trị số Tổng số bit Độ chính xác


Float 1 bit 8 bits 23 bits 32 bits (4 bytes) 24 bits (Dấu + trị số)
Double 1 bit 11 bits 52 bits 64 bits (8 bytes) 53 bits (Dấu + trị số)

13 Ngôn ngữ lập trình C - Cơ bản


Tên biến
 Phải bắt đầu bằng một chữ hoặc dấu gạch dưới (_), tiếp sau đó
có thể kết hợp giữa chữ, số và dấu gạch dưới.
 Không được trùng với từ khóa có sẵn của C
 Hai biến không được trùng tên nhau
 Có phân biệt giữa chữ hoa và chữ thường
 Độ dài tùy thích, tuy nhiên không nên đặt tên quá dài
 Nên đặt tên có nghĩa, dễ hiểu

 Ví dụ: Những tên biến nào sau đây đúng hay sai?
 1ngoi_sao, bienDem1, phepNhân, donVi$, ngoi_nha,
int, kiem-tra, A&T
 ____dien___tich, +hai_so, luy thua, T_T, ^_^,
edthbdl_mbcln2h

14 Ngôn ngữ lập trình C - Cơ bản


Từ khóa
 Là những từ đã được định nghĩa bởi trình biên dịch
 Không được dùng để đặt tên biến, tên hàm…
 Các công cụ lập trình C thường có thể nhận biết và đổi
màu các từ khóa trên trình soạn thảo

 auto break case char const continue


default do double else enum extern float
for goto if int long register return short
signed sizeof static struct switch typedef
union unsigned void volatile while
15 Ngôn ngữ lập trình C - Cơ bản
Ví dụ về biến và kiểu biến
1. #include <stdio.h> // Khai báo thư viện

2. int main() // Chương trình chính


3. {
4. char a; // Kiểu ký tự
5. int i1 = 5, i2; // Kiểu số nguyên
6. float f; // Kiểu số thực
7. a = 'f'; // Phép gán
8. i2 = 10; // Phép gán
9. f = (float)i1 / i2; // Biểu thức
10. printf("%c = %f, ", a, f);
11. printf("kich thuoc %d bytes.\n", sizeof(f));
12. getchar();
13. return 0;
14.} f = (float)i1 / i2;

16 Ngôn ngữ lập trình C - Cơ bản


Chuyển đổi kiểu (Ép kiểu)
 Đặt (Kiểu dữ liệu) phía trước biểu thức để chuyển đổi
kiểu dữ liệu cho kết quả của biểu thức
 f = (float) i1 / i2; i = (int)f;
 Gán một số nguyên vào một biến kiểu thực
 f = i; // Cảnh báo việc chuyển đổi
 f1 = 10; f2 = (float)i; // OK! f1 = 10.000000
 Gán một số thực vào một biến kiểu nguyên: Mất phần
thập phân (sau dấu chấm)
 i1 = 9.5; i2 = f; // Cảnh báo, i1 = 9
 i1 = (int)9.5; i2 = (int)f; // OK!

17 Ngôn ngữ lập trình C - Cơ bản


Chuyển đổi kiểu (2)
 Chia một số nguyên cho một số nguyên: Kết quả là số
nguyên
 i1=5; i2=10; f=i1/i2;// Cảnh báo, f=0.000000
 f=(float)i1/i2; // OK, f=0.500000
 Chia một số thực cho một số nguyên hoặc chia một số
nguyên cho một số thực: Kết quả là số thực
 i=5; f=10; i1 = i/f; // Cảnh báo, i1 = 0
 f1=i/f; f2=i/10.0; // OK! f1 = f2 = 0.500000

18 Ngôn ngữ lập trình C - Cơ bản


Hằng số trong C
 Giá trị không đổi #define a 45 // int
#define b 125u // unsigned int
suốt chương trình #define c 87l // long int
 Hằng số có kiểu #define d 23ul // unsigned long int
#define e 057 // Cơ số 8
dữ liệu #define f 0xfee // Cơ số 16
 Số nguyên #define g 3.14159 // float
#define h 314159E-5 // float
 Số thực
#define i 'a' // char
 Ký tự #define j "morning" // string
 Chuỗi const int k = 2016;
const float l = 2.016;
 Khai báo hằng số const char m = '4';
 #define const char n[] = "afternoon";
#define o 048 /* ERROR! Hệ cơ số 8
 const không có số 8 */
#define p 59E // ERROR!
#define q .E59 // ERROR!
19 Ngôn ngữ lập trình C - Cơ bản
Vận dụng
 Đề bài 1: Hãy khai báo
 Một biến kiểu số nguyên
 Hai biến kiểu số thực
 Một biến kiểu ký tự
 Một biến kiểu luận lý
 Một hằng số PI = 3.15
 Một hằng số MAX = 100

 Đề bài 2: Hãy chuyển đổi kiểu dữ liệu cho biểu thức sau
 float x = 1/2;
 float y = (1/5)*x;
 int z = (x+5)*2;
20 Ngôn ngữ lập trình C - Cơ bản
Toán tử toán học
 Những phép toán học 1. #include<stdio.h>
2.
3. int main()
Cho A = 10, B = 20
4. {
Toán tử Mô tả Ví dụ 5. int A=10, B=20, C;
+ Phép cộng A + B = 30 6. C = A + B;
Phép trừ A B = -10 7. C = A - B;
* Phép nhân A * B = 200 8. C = A * B;
9. C = B / A;
/ Phép chia B /A= 2
10. C = B % A;
% Phép chia lấy phần dư B %A= 0 11. A++;
++ Cộng lên một số nguyên A++ = 11 12. B--;
-- Trừ đi một số nguyên B-- = 19 13. getchar();
14. return 0;
15. }

21 Ngôn ngữ lập trình C - Cơ bản


Toán tử quan hệ
 Những phép so sánh #include <stdio.h>

Cho A = 10, B = 20 int main()


Toán tử Mô tả Ví dụ {
int A=10, B=20;
== Bằng nhau (A == B) sai
if (A==B) printf("A = B");
!= Khác nhau (A != B) đúng if (A!=B) printf("A ≠ B");
> Lớn hơn (A > B) sai if (A>B) printf("A > B");
if (A<B) printf("A < B");
< Nhở hơn (A < B) đúng if (A>=B) printf("A ≥ B");
Lớn hơn if (A<=B) printf("A ≤ B");
>= (A >= B) sai
hoặc bằng return 0;
Nhở hơn
<= (A <= B) đúng }
hoặc bằng

22 Ngôn ngữ lập trình C - Cơ bản


Toán tử luận lý
 Những phép toán luận lý
Cho A = 1, B = 0
Toán tử Mô tả Ví dụ
Gọi toán tử AND, nếu cả hai toán hạng (A && B)
&&
điều đúng, kết quả phép toán là đúng Sai

Gọi toán tử OR, nếu cả hai toán hạng


|| (A || B) Đúng
đều sai, kết quả phép toán là sai
Gọi toán tử NOT, thực hiện phép phủ !(A && B)
!
định Đúng

23 Ngôn ngữ lập trình C - Cơ bản


Toán tử trên bit
 Các phép toán trên bit #include <stdio.h>
int main()
A 0 0 1 1 {
int a = 52; // 0011 0100
B 0 1 0 1 int b = 29; // 0001 1101
A& B 0 0 0 1 int c;
c = a & b; // 0001 0100
A|B 0 1 1 1 printf("%d & %d = %d\n", a, b, c);
A^B 0 1 1 0 c = a | b; // 0011 1101
printf("%d | %d = %d\n", a, b, c);
~A 1 1 0 0 c = a ^ b; // 0010 1001
~B 1 0 1 0 printf("%d ^ %d = %d\n", a, b, c);
c = ~a; // 1100 1011
<< Cho a = 00110100, a<<2= 11010000 printf("~%d = %d\n", a, c);
>> Cho a = 00110100, a>>2= 00001101 c = a << 2; // 1101 0000
printf("%d << 2 = %d\n", a, c);
c = a >> 2; // 0000 1101
printf("%d >> 2 = %d\n", a, c);
return 0;
}

24 Ngôn ngữ lập trình C - Cơ bản


Toán tử gán
 Các phép toán kết hợp với phép gán
Toán tử Mô tả Ví dụ
= Phép gán C=A+B
+= Phép cộng và gán C += A là C = C + A
-= Phép trừ và gán C -= A là C = C – A
*= Phép nhân và gán C *= A là C = C * A
/= Phép chia và gán C /= A là C = C / A
%= Phép chia lấy dư và gán C %= A là C = C % A
<<= Phép dịch trái và gán C <<= 2 là C = C << 2
>>= Phép dịch phải và gán C >>= 2 là C = C >> 2
&= Phép AND trên bit và gán C &= 2 là C = C & 2
^= Phép XOR trên bit và gán C ^= 2 là C = C ^ 2
|= Phép OR trên bit và gán C |= 2 là C = C | 2
25 Ngôn ngữ lập trình C - Cơ bản
Category Toán tử
Độ ưu tiên Postfix () [] -> . ++ - -
Unary + - ! ~ ++ - - (type)* & sizeof
 Các toán tử
Multiplicative * / %
được tính toán
Additive + -
theo thứ tự ưu << >>
Shift
tiên như bảng Relational < <= > >=
Equality == !=
Bitwise AND &
Bitwise XOR ^
Bitwise OR |
Logical AND &&
Logical OR ||
Conditional ?:
Assignment = += -= *= /= %=>>= <<= &= ^= |=
Comma ,
26 Ngôn ngữ lập trình C - Cơ bản
Các thư viện
 Các thư viện định nghĩa sẵn các hàm hay kiểu dữ liệu
 Cú pháp khai báo: #include <tên thư viện>
 <stdio.h> các hàm nhập xuất chuẩn, các thao tác với tập
tin…
 getchar, putchar, printf, scanf, fopen, fclose, remove, rename…
 <stdlib.h> các hàm chuyển đổi kiểu dữ liệu, cấp phát bộ
nhớ…
 atof, atoi, atol, strtol, free, malloc, abs, rand, srand…
 <math.h> các hàm về toán học
 sqrt, pow, ceil, floor, trunc, abs, sin, cos…

27 Ngôn ngữ lập trình C - Cơ bản


Các thư viện (2)
 <string.h> các hàm xử lý chuỗi ký tự
 strcpy, strcat, strlen, strstr, strcmp, strchr, memset…
 <ctype.h> các hàm xử lý ký tự
 toupper, tolower…
 <iostream.h> các hàm nhập xuất
 gets, puts, cin, cout…
 <time.h> các hàm xử lý về thời gian
 time, clock, localtime, difftime, time_t, struct tm…

28 Ngôn ngữ lập trình C - Cơ bản


Hàm thường dùng ở thư viện stdio.h
 Khai báo: #include <stdio.h>
 Hàm printf: Xuất ra màn hình
 Nguyên mẫu hàm: int printf(const char * format, ... );
 printf(“Hello world!”);
 printf(“a = %d.\n”, so_nguyen);
 Hàm scanf: Nhập dữ liệu từ bàn phím
 Nguyên mẫu hàm: int scanf( const char * format, ... );
 scanf("%d", &so_nguyen);
 scanf("%f", &so_thuc);
 scanf("%c", &ky_tu);
 Hàm gets: Nhập chuỗi từ bàn phím
 char name[50]; gets(name);
29 Ngôn ngữ lập trình C - Cơ bản
Hàm thường dùng ở thư viện stdlib.h
 Khai báo: #include <stdlib.h>
 Hàm rand: Tạo số nguyên ngẫu nhiên
 Nguyên mẫu hàm: int rand (void);
 a = rand(); // a có giá trị từ 0 đến 32767
 b = rand()%90; // b có giá trị từ 0 đến 89
 c = rand()%90 + 10; // c có giá trị từ 10 đến 99
 Hàm srand: Khởi tạo số ngẫu nhiên
 Nguyên mẫu hàm: void srand (unsigned int seed);
 Ví dụ:
 srand(time(NULL));
 d = rand() % 101 – 50;

30 Ngôn ngữ lập trình C - Cơ bản


Hàm thường dùng ở thư viện math.h
 Khai báo: #include <math.h>
 Hàm sqrt: Tính căn bậc hai
 Nguyên mẫu hàm: double sqrt (double x);
 x = sqrt(9); // Căn bậc hai của 9
 y = sqrt(x + 1); // Căn bậc hai của x + 1
 Hàm pow: Tính lũy thừa
 Nguyên mẫu hàm: double pow (double base, double exponent);
 x = pow(3, 2); // ba mũ hai
 y = pow(x, 4); // x mũ bốn
 Hàm floor, ceil: Làm tròn
 z = floor(4.3); // z = 4.0
 w = ceil(4.3); // w = 5.0
31 Ngôn ngữ lập trình C - Cơ bản
Hàm thường dùng ở thư viện string.h
 Khai báo: #include <string.h>
 Hàm strlen: Tính chiều dài của chuỗi
 Nguyên mẫu hàm: size_t strlen(const char * str)
 a = strlen(“hello”); // a = 5
 Hàm strcpy: Sao chép chuỗi
 Nguyên mẫu hàm: char * strcpy(char * dest, const char * src)
 char hello[50]; // Khai báo chuỗi
 strcpy(hello, “Hello ”); // hello = “Hello ”
 Hàm strcat: Nối chuỗi
 Nguyên mẫu hàm: char * strcat( char * dest, const char * src)
 char name[50] = “Tuan”;
 strcat(hello, name); // hello = “Hello Tuan!”
 Hàm strcmp: So sánh chuỗi
 Nguyên mẫu hàm: int strcmp( const char * str1, const char * str2 )
 a = strcmp(name, “Tuan”); // a = 0

32 Ngôn ngữ lập trình C - Cơ bản


Hàm thường dùng ở thư viện ctype.h
 Khai báo: #include <ctype.h>
 Hàm tolower: Chuyển ký tự sang chữ thường
 Nguyên mẫu int tolower ( int c );
 char c = ‘N’; tolower(c); // c = ‘n’
 Hàm toupper: Chuyển ký tự sang chữ in
 Nguyên mẫu int toupper ( int c );
 char c = ‘n’; toupper(c); // c = ‘N’
 Các hàm kiểm tra ký tự
 isalnum(c): Trả về true (khác 0) nếu c là số hoặc chữ
 isalpha(c): Trả về true nếu c là chữ
 islower(c): Trả về true nếu c là chữ thường
 isupper(c): Trả về true nếu c là chữ in
33 Ngôn ngữ lập trình C - Cơ bản
Vận dụng
 Đề bài 3: Cho trước một biến số nguyên x và một biến số
thực y, viết biểu thức tính z:
( )
 z=
( )
 z=
( )
 z= (y khác không)
 z= +

 z= +
 z= +
 z= +( + )

34 Ngôn ngữ lập trình C - Cơ bản


Nhập dữ liệu
 Chú ý nhập đúng kiểu dữ liệu
 Nhập số nguyên
 int a; scanf(“%d”, &a);
 Nhập số thực
 float b; scanf(“%f”, &b);
 Nhập ký tự
 char c; scanf(“%c”, &c);
 Nhập chuỗi ký tự
 char s[50];
 scanf(“%s”, &s); // Ký tự trắng kết thúc nhập liệu
 Có thể thay bằng scanf(“%[^\n]s”, &s); hoặc gets(s);

35 Ngôn ngữ lập trình C - Cơ bản


Ví dụ về nhập dữ liệu
#include <stdio.h>
 Đề bài 4: Viết chương trình
int main()
nhập vào một số nguyên, một
{
số thực, một ký tự và một int a;
chuỗi, xuất ra màn hình các giá float b;
trị vừa nhập. char c;
char s[50];
 Gợi ý:
 Khai báo scanf("%d", &a);
 Nhập dữ liệu scanf("%f", &b);
scanf("%c", &c);
gets(s);
 Chú ý khai báo và nhập đúng . . .
kiểu dữ liệu return 0;
}
36 Ngôn ngữ lập trình C - Cơ bản
Xử lý dữ liệu
 Các phép tính toán
 Chú ý độ ưu tiên của các phép tính
 Chú ý sử dụng đúng các hàm toán học

 Ví dụ 1: Tính chu vi hình chữ nhật có chiều dài x và chiều


rộng y
 CV = (x + y)*2;

 Ví dụ 2: Tính khoảng cách giữa hai điểm A(xA, yA) và


B(xB, yB)
 KC = sqrt(pow(xA-xB,2) + pow(yA-yB,2));
37 Ngôn ngữ lập trình C - Cơ bản
Xuất dữ liệu
#include <stdio.h>
 Chú ý xuất đúng kiểu int main()
dữ liệu {
int a;
 Xuất số nguyên float b;
 printf(“%d”, a); char c;
char s[50];
 Xuất số thực
 printf(“%f”, b); scanf("%d", &a);
scanf("%f", &b);
 Xuất ký tự scanf("%c", &c);
 printf(“%c”, c); gets(s);
 Xuất chuỗi ký tự printf("%d %f\n", a, b);
 printf(“%s”, s); printf("%c \n%s", c, s);
return 0;
}
38 Ngôn ngữ lập trình C - Cơ bản
Ví dụ xuất ra màn hình
1. /* Practicing of printf */
2. #include <stdio.h>
3.
4. int main()
5. {
6. int year = 2016; // Khai báo biến
7. printf("Hello!\n\n The C ");
8. printf("programming language schedule:\n");
9. printf("1.Intro\n2.C language");
10. printf("\n3.Programming skills\n");
11. printf("4.Practices\n5.Examinations\n\n ");
12. printf("Lecturer: Dr. Ngo, %d",year);
13. return 0;
14. }
39 Ngôn ngữ lập trình C - Cơ bản
Định dạng biểu diễn dữ liệu
 %[flags][width][.precision][length]specifier
flags Mô tả width Số ký tự tối thiểu được in ra
– Canh trái trong width .precision Số ký tự sau dấu chấm động
+ Buộc in dấu + hoặc –
(space) Ký tự trống trước dữ liệu
0 In số 0 trước dữ liệu

length di uox
(none) int unsigned int
hh signed char unsigned char
h short int unsigned short int
l long int unsigned long int
40 Ngôn ngữ lập trình C - Cơ bản
Định dạng biểu diễn dữ liệu
 %[flags][width][.precision][length]specifier
specifier Kết quả Ví dụ
%d, %i Số nguyên có dấu -95, 23
%u Số nguyên không dấu 7235
%o Số bát phân không dấu 610
%x, %X Số thập lục phân không dấu 7fa, 7FA
%f, %F Số thực 392.65
%e, %E Ký hiệu khoa học 3.92e+2, 3.92E+2
%c Ký tự a
%s Chuỗi ký tự laptrinh
%p Địa chỉ con trỏ b8000000
%% In dấu % %
%a, %A Số thập lục phân kiểu thực 0xb.f3p-2, 0XB.F3P-2
%g, %G Dạng ngắn của %e, %E hoặc %f,%F 392.65
41 Ngôn ngữ lập trình C - Cơ bản
Ví dụ biểu diễn dữ liệu
1. #include <stdio.h>
2. int main()
3. {
4. printf ("Ky tu: %c %c \n", 'a', 65);
5. printf ("So nguyen: %d \n", 1977);
6. printf ("Khoang trong: %10d \n", 1977);
7. printf ("So khong: %010d \n", 1977);
8. printf ("%d %x %o %#x %#o\n",100,100,100,100,100);
9. printf ("So thuc: %.2f\n", 3.1416);
10. printf ("%s\n", "Mot chuoi");
11. return 0; Ky tu: a A
So nguyen: 1977
12.}
Khoang trong: 1977
So khong: 0000001977
100 64 144 0x64 0144
So thuc: 3.14
Mot chuoi

42 Ngôn ngữ lập trình C - Cơ bản


Mã escape
 Mã escape dùng để đại diện
Escape
cho những ký tự đặc biệt hoặc code
Description
những chuỗi, thao tác khó \n newline
trình bày trực tiếp \r carriage return
\t tab

 Mã escape được đặt trong \v vertical tab


\b backspace
chuỗi định dạng của lệnh
\f form feed (page feed)
printf
\a alert (beep)
\' single quote (')
 Ví dụ: printf(“A\tB\n”); \" double quote (")
\? question mark (?)
\\ backslash (\)
43 Ngôn ngữ lập trình C - Cơ bản
Bài tập vận dụng
 Đề bài 5: Viết chương trình nhập vào số ngày công (số
nguyên), tính lương theo công thức:
 Lương = số ngày công x lương công nhật
 Trong đó lương công nhật là hằng số = 120’000
 Đề bài 6: Viết chương trình nhập vào hai số x và y, tính
 + 3( + 4)

 Đề bài 7: Viết chương trình tính khoảng cách hai điểm A,


B.
 Đề bài 8: Viết chương trình nhập vào ba cạnh của một tam
giác, tính diện tích và chu vi của hình tam giác ấy.

44 Ngôn ngữ lập trình C - Cơ bản


Kết thúc Bài 2
 Giới thiệu ngôn ngữ lập trình C
 Trình biên dịch/thông dịch
 Cấu trúc chương trình
 Định dạng trong C
 Biến, kiểu dữ liệu
 Hằng số, từ khóa, toán tử
 Thư viện
 stdio.h, stdlib.h, math.h, string.h, ctype.h, time.h
 Nhập xuất căn bản
 Nhập: scanf, cin, gets
 Xuất: printf, cout, puts

45 Ngôn ngữ lập trình C - Cơ bản

You might also like