



















Preview text:
CHƯƠNG 3: VÀO RA DỮ LIỆU Mục tiêu
Sau khi hoàn tất bài này học viên sẽ hiểu và vận dụng các kiến
thức kĩ năng cơ bản sau:
- Ý nghĩa, cách sử dụng hàm printf, scanf
- Sử dụng khuôn dạng, ký tự đặc biệt, ký tự điều khiển trong printf, scanf.
CHƯƠNG 3: VÀO RA DỮ LIỆU 3. Hàm printf
printf là hàm dùng để in dữ liệu ra màn hình. Tên đầy đủ: print format ed – in ra theo định dạng.
Cú pháp:printf("chuỗiđiềukhiển",danh_sách_đối); Trong đó:
-Chuỗi điều khiển gồm: Chữ bình thường: in y nguyên ra màn hình. Ký tự đặc biệt: \n, \t... Ký tự
định dạng: %d, %f, %c, %s, …
-Danh sách đối: Mỗi đặc tả (%d, %f, %s…) phải có một đối tương ứng. Kiểu dữ liệu của đối
phải đúng với đặc tả, nếu sai sẽ in ra kết quả sai. Có thể có nhiều đối hơn số %→ Đối dư sẽ không được in. Ví dụ: #include int main() { float x = 3.14159; printf("Gia tri x = %f", x); return 0; }
CHƯƠNG 3: VÀO RA DỮ LIỆU
CHƯƠNG 3: VÀO RA DỮ LIỆU 3.1 Đặc tả trong printf Cú pháp chung: %[-][n][.m] Trong đó:
% và ký tự chuyển dạng (d, f, c, s, …) là bắt buộc.
-, n, .m là không bắt buộc.
n quy định độ rộng (số cột) để in giá trị. Quy tắc với n:
Nếu không có n hoặc n nhỏ hơn độ dài giá trị → in vừa đủ.
Nếu n lớn hơn độ dài giá trị:
Không có - → căn phải, thêm khoảng trắng bên trái.
Có - → căn trái, thêm khoảng trắng bên phải.
CHƯƠNG 3: VÀO RA DỮ LIỆU
3.5 Giá trị trả về của printf
Khi printf in thành công, nó trả về số ký tự đã in ra, kể cả ký tự đặc biệt như \n. Ví dụ: #include int main() { int k;
k = printf("A = %d, B = %d\n", 3, 5); printf("k = %d", k); return 0; }
CHƯƠNG 3: VÀO RA DỮ LIỆU
In ra chuỗi văn bản float x = 3.1415926; printf("Xin chao the gioi!");
printf("%8.2f\n", x); / Rộng 8, 2 chữ số thập phân In ra số nguyên (%d)
printf("%10.4f\n", x); / Rộng 10, 4 chữ số thập phân int a = 10; In bảng dữ liệu
printf("Gia tri cua a la: %d", a);
printf("%-10s %-10s %-10s\n", "Ten", "Tuoi", "Diem"); In ra số thực (%f)
printf("%-10s %-10d %-10.2f\n", "An", 20, 8.5); float b = 3.14;
printf("%-10s %-10d %-10.2f\n", "Binh", 21, 7.8); printf("So pi xap xi: %f", b);
In số với số 0 ở đầu
In ra nhiều biến cùng lúc int n = 25; int tuoi = 20; float diem = 8.5; printf("%05d", n);
printf("Tuoi: %d, Diem: %.1f", tuoi, diem); Căn phải int a = 123; printf("%10d\n", a); Căn trái printf("%-10d\n", a);
CHƯƠNG 3: VÀO RA DỮ LIỆU 3.2 Hàm scanf
Đọc dữ liệu từ bàn phím
Chuyển dữ liệu đó thành số nguyên, số thực, ký tự, chuỗi…
Lưu vào bộ nhớ tại địa chỉ của các biến tương ứng Cú pháp:
scanf(“chuỗi_điều_khiển”, &biến1, &biến2, ...); Trong đó:
Chuỗi điều khiển gồm các ký tự đặc tả chuyển dạng, mỗi đặc tả
thường có một đối tương ứng (%d, %f, %c, …). Cú pháp của đặc
tả: %[*][n]ký_tự_chuyển_dạng
Phải dùng & trước tên biến để truyền địa chỉ cho scanf. Ví dụ: char s[20]; int a; int a, b; scanf("%5s", s); float b; scanf("%*d %d", &b);
printf("%s", s); scanf("%d %f", &a, &b); printf("b = %d", b);
CHƯƠNG 3: VÀO RA DỮ LIỆU
3.3 Dòng vào stdin và các hàm scanf, gets, getchar
stdin: là dòng vào chuẩn (bàn phím).
Các hàm scanf, gets, getchar đều nhận dữ liệu từ stdin. Có 3 trường hợp xảy ra:
Trường hợp 1: Trên stdin có Trường hợp 2: Trên stdin Trường hợp 3: Nhập thừa đủ dữ liệu chưa đủ dữ liệu cho các đối
Nếu trên stdin đã có đủ dữ Nếu chưa đủ dữ liệu cho hàm, Nếu người dùng nhập nhiều
liệu, thì hàm chỉ lấy đúng chương trình sẽ dừng lại chờ hơn số dữ liệu mà hàm cần,
phần nó cần, phần dư vẫn còn người dùng nhập thêm cho phần thừa vẫn nằm lại trong trong stdin. đến khi bấm Enter.
stdin để cho các hàm sau dùng Ví dụ: Ví dụ: Ví dụ: int a; int a, b; int a; scanf("%d", &a);
scanf("%d %d", &a, &b); scanf("%d", &a); Người dùng nhập: 123 456 Người dùng nhập: 5 char c; c = getchar(); Người dùng nhập: 12AB
CHƯƠNG 3: VÀO RA DỮ LIỆU Chú ý:
Khi bấm Enter, bàn phím không chỉ kết thúc dòng mà còn sinh ra
ký tự xuống dòng '\n', và ký tự này cũng nằm trong stdin. Ví dụ:inta; int a; char c; char c; scanf("%d", &a); char s[50]; c = getchar(); scanf("%d", &a); c = getchar(); gets(s);
Bỏ qua ký tự trắng scanf(" %c", &c);
Dấu cách trước %c giúp bỏ qua Enter còn sót lại
CHƯƠNG 3: VÀO RA DỮ LIỆU
3.3 Dòng vào stdin và các hàm scanf, gets, getchar Hàm gets()? Ví dụ 1:
gets() dùng để nhập một chuỗi ký tự từ bàn phím #include
Đọc cho đến khi gặp Enter (\n) int main() {
Không đọc ký tự Enter, chỉ lấy nội dung trước đó char ten[30]; printf("Nhap ten: "); Cú pháp: gets(ten); char s[50];
printf("Ten vua nhap: %s", ten); gets(s); return 0; Trong đó: }
s là mảng ký tự (chuỗi) Không cần & Ví dụ 2:
Không có tham số giới hạn độ dài char s[5]; gets(s);
CHƯƠNG 3: VÀO RA DỮ LIỆU Hàm fgets()
fgets() dùng để nhập một chuỗi ký tự (string)
từ bàn phím hoặc từ tệp
Đây là hàm AN TOÀN để nhập chuỗi trong C
Thường dùng thay cho gets() Cú pháp Ví dụ:
fgets(ten_mang, so_ky_tu, stdin); #include Trong đó: int main() {
- ten_mang : mảng ký tự để lưu chuỗi char s[20];
- so_ky_tu : số ký tự tối đa được phép đọc printf("Nhap chuoi: "); (bao gồm cả \0) fgets(s, 20, stdin);
- stdin : thiết bị nhập chuẩn (bàn phím)
printf("Chuoi vua nhap: %s", s); return 0; }
CHƯƠNG 3: VÀO RA DỮ LIỆU Hàm getchar()
getchar() dùng để đọc 1 ký tự duy nhất từ bàn phím
Ký tự được đọc bao gồm cả Enter ('\n’) #include Thường dùng để: int main() { Nhập 1 ký tự char c; printf("Nhap 1 ky tu: "); Đọc từng ký tự c = getchar(); Xóa bộ đệm (buffer)
printf("Ky tu vua nhap: %c", c); Cú pháp: return 0; char c; } c = getchar();
CHƯƠNG 3: VÀO RA DỮ LIỆU
Ví dụ 1: getchar() đọc cả Enter (\n)
Ví dụ 2: Dùng getchar() để bỏ Enter #include #include int main() { int main() { char c1, c2; char c;
printf("Nhap ky tu thu nhat: "); printf("Nhap ky tu: "); c1 = getchar(); c = getchar(); / doc ky tu
printf("Nhap ky tu thu hai: "); getchar(); / doc va bo '\n' c2 = getchar();
printf("Ky tu vua nhap: %c", c); printf("c1 = %c\n", c1); return 0; printf("c2 = %c\n", c2); } return 0; }
CHƯƠNG 3: VÀO RA DỮ LIỆU Bài 1. Bài 4.
Viết chương trình nhập vào giờ, phút, giây
Viết chương trình nhập vào hai số nguyên
hiện tại. Sau đó in ra màn hình theo dạng:
x và y. Sau đó in ra màn hình theo dạng: Bây giờ là: 14:30:25
Giá trị của x = 10, giá trị của y = 25 Bài 2. Bài 5.
Viết chương trình in ra dòng chữ “CHÀO
Viết chương trình nhập vào Họ tên và Mã
MỪNG BẠN” ở chính giữa màn hình.
sinh viên, sau đó in ra màn hình: Bài 3. Họ tên : Nguyễn Văn A
Viết chương trình in ra hình sau vào giữa màn Mã sinh viên : 123456 hình:
(yêu cầu các dấu “:” thẳng cột) # # # # # # # # # # # CNTT # # # # LẬP TRÌNH # # # # # # # # # # #
CHƯƠNG 4 CÁC CÂU LỆNH ĐIỀU KHIỂN
Hiểu khái niệm và vai trò của các câu lệnh rẽ nhánh trong lập trình.
Sử dụng thành thạo câu lệnh IF để đưa ra quyết định theo điều kiện.
Phân biệt và áp dụng câu lệnh SWITCH trong các trường hợp lựa chọn nhiều nhánh.
Hiểu cú pháp, tác dụng và phạm vi sử dụng của câu lệnh GOTO và nhãn
Nắm được nguyên lý hoạt động của các câu lệnh lặp trong chương trình.
Sử dụng vòng lặp FOR cho các trường hợp lặp xác định số lần.
Sử dụng vòng lặp WHILE cho các trường hợp lặp theo điều kiện.
Sử dụng vòng lặp DO…WHILE và phân biệt với WHILE.
Hiểu và áp dụng câu lệnh BREAK và CONTINUE để điều khiển luồng lặp.
Vận dụng các câu lệnh trên để xây dựng chương trình đúng logic và hiệu quả.
CHƯƠNG 4 CÁC CÂU LỆNH ĐIỀU KHIỂN
Các câu lệnh rẽ nhánh Câu lệnh IF Câu lệnh SWITCH Câu lệnh GOTO và nhãn
Các câu lệnh có cấu trúc lặp Câu lệnh FOR Câu lệnh WHILE Câu lệnh DO…WHILE
Câu lệnh BREAK và câu lệnh CONTINUE
CHƯƠNG 4 CÁC CÂU LỆNH ĐIỀU KHIỂN
4.1. Các câu lệnh rẽ nhánh
Ví dụ 1: Kiểm tra số chẵn – lẻ Câu lệnh if
Câu lệnh if dùng để ra quyết định: nếu #include
điều kiện đúng thì thực hiện một khối int main()
lệnh, ngược lại có thể thực hiện khối lệnh { khác. int n = 7; Cú pháp if (n % 2 == 0) if (điều_kiện) printf("So chan"); khối_lệnh_1; else else printf("So le"); khối_lệnh_2; return 0; }
CHƯƠNG 4 CÁC CÂU LỆNH ĐIỀU KHIỂN
Ví dụ 2: Tìm số lớn hơn trong hai số #include int main() { floata=3.5; float b = 5.2; if (a > b)
printf("So lon hon la %.1f", a);
elseprintf("Solonhonla%.1f",b); return 0; }
CHƯƠNG 4 CÁC CÂU LỆNH ĐIỀU KHIỂN #include
Câu lệnh if lồng nhau int main()
Trong khối lệnh của if có thể chứa if khác. { intx=-5;
Khi dùng if lồng nhau, nên dùng { } để if (x >= 0) tránh nhầm lẫn. {
Quy tắc: else luôn gắn với if gần nhất if (x == 0) printf("So 0"); chưa có else. elseprintf("Soduong"); } elseprintf("Soam"); return 0; }
CHƯƠNG 4 CÁC CÂU LỆNH ĐIỀU KHIỂN Câu lệnh else if
Dùng khi cần chọn một trong nhiều trường hợp. Cú pháp if(dk1) lenh1; else if (dk2) lenh2; ... elselenh_cuoi;