Kỹ thuật lập trình C - Nhập/xuất dữ liệu 11 bangtqh@hotmail.com Sử dụng fflush sau scanf Công dng: xóa những ký tự thừa còn dư lại trong bộ ñệm của scanf 04/2010 Kết hợp nhập và xuất d
Trang 1KỸ THUẬT LẬP TRÌNH C
Chương 2: Lệnh nhập / xuất
04/2010
Xuất dữ liệu, hàm: printf
• Thuộc thư viện “ stdio.h ”
• Cú pháp:
• Ví dụ:
printf( “Xâu đi ề u khi ể n”, [danh sách tham s ố ]);
Trang 2Kỹ thuật lập trình C - Nhập/xuất dữ liệu 3 bangtqh@hotmail.com
Hàm printf
• Xâu ñiều khiển bao gồm 3 loại kí tự
– Các kí tự ñiều khiển
• \n sang dòng mới
• \f sang trang mới
• \b xóa kí tự bên trái
• \t dấu Tab
– Các kí tự ñể ñưa ra màn hình
– Các kí tự ñịnh dạng và khuôn in
• Công thức định dạng: %[-][w][.p]Kt
• w = wide(độ rộng); p = precise(độ chính xác); Kt =
Ký tự chuyển dạng (dạng hiển thị) Dấu trừ sẽ quy định canh lề trái thay vì canh lề phải
• Ví dụ: %.2f %8d %s %-5c
04/2010
Hàm printf
• Các ký tự chuyển dạng thường dùng
In ra ở dạng số thực (bỏ các số 0 vô nghĩa)
g, G
In ra rở dạng khoa học
e, E
In ra ở dạng số nguyên hệ 8
o
In ra ở dạng số nguyên hệ 16 (hecxa)
x
In ra ở dạng xâu ký tự
s
In ra ở dạng số thực float
f
In ra ở dạng số nguyên unsigned long
lu
In ra ở dạng số nguyên long
ld
In ra ở dạng số nguyên unsigned int
u
In ra ở dạng số nguyên int
d
In ra ở dạng ký tự char
c
Ý nghĩa
Ký tự
Trang 3Kỹ thuật lập trình C - Nhập/xuất dữ liệu 5 bangtqh@hotmail.com
Hàm printf
• Ví dụ
04/2010
Hàm printf
• In các ký tự ñặc biệt
• Công thức định dạng
%[-][w][.p]Kt
– W : wide (độ rộng)
– P : precse (độ chính xác)
– Kt : Ký tự chuyển dạng
• Giá trị của w
– Nhỏ hơn hoặc bằng độ rộng thực tế in bình thường
– Lớn hơn độ rộng thực tế (chèn thêm khoảng trống cho đủ
độ rộng là w (nếu có dấu trừ chèn bên phải, ngược lại
chèn bên trái)
• Giá trị p: quy ñịnh làm tròn đến bao nhiêu chữ số
đằng sau chấm thập phân.
In xuống dòng mới
\n
In lùi 1 vị trí
\b
In ký tự Tab
\t
In ký tự backslash (\)
\\
In ký tự dấu nháy kép (“)
\”
In ký tự dấu nháy đơn (‘)
\’
Ý nghĩa Viết
Trang 4Kỹ thuật lập trình C - Nhập/xuất dữ liệu 7 bangtqh@hotmail.com
Hàm puts
• Thư viện: “conio.h”
• Công dụng: in ra màn hình 1 xâu ký tự
• Ví dụ:
04/2010
Hàm sprintf
• Thư viện: “stdio.h”
• Công dụng: giống printf, chỉ khác ở ñiểm kết quả không xuất ra màn hình mà ñưa vào 1 biến xâu.
• Ví dụ:
Trang 5Kỹ thuật lập trình C - Nhập/xuất dữ liệu 9 bangtqh@hotmail.com
Nhập dữ liệu, hàm: scanf
• Thuộc thư viện “stdio.h”
• Cú pháp:
– Xâu điều khiển: Cho phép định dạng dữ liệu nhập vào – Danh sách tham số : Là ñịa chỉ các biến cần nhập liệu
• Sử dụng toán tử & ñể xác định địa chỉ các biến
• Ví dụ:
scanf(“ %d %f %c”, &x , &y , &z);
scanf(“ %s ”, &hoten );
scanf( “Xâu đi ề u khi ể n”, [DS tham s ố ]);
04/2010
• Không thông báo cho
người dùng biết giá trị
cần nhập là giá trị gì?
phải kết hợp với
lệnh xuất dữ liệu
• Không nhận được
xâu có dấu cách trống
• Không xóa ký tự thừa
trong bộ ñệm ảnh
hưởng tới lện nhập
phía sau.
Hàm scanf
Trang 6Kỹ thuật lập trình C - Nhập/xuất dữ liệu 11 bangtqh@hotmail.com
Sử dụng fflush sau scanf
Công dng:
xóa những ký tự
thừa còn dư lại
trong bộ ñệm của
scanf
04/2010
Kết hợp nhập và xuất dữ liệu
Kết quả chương trình ?
Trang 7Kỹ thuật lập trình C - Nhập/xuất dữ liệu 13 bangtqh@hotmail.com
Hàm gets
• Thư viện: “conio.h”
• Công dụng: nhập vào 1 xâu ký tự
gets nhập 1 số không?
04/2010
Một số hàm nhập/xuất dữ liệu khác
chuyển tới vị trí (cột x, hàng y)
gotoxy(x, y)
Giống printf nhưng có màu sắc
cprintf()
Kiểm tra xem có 1 phím bị nhấn không?
int kbhit()
In ra màn hình 1 ký tự
int putch()
giống getch() nhưng hiển thị ở màn hình
int getche()
đợi nhập 1 ký tự từ bàn phím (không hiển thị ở màn hình)
int getch()
Ý nghĩa Hàm
Trang 8Kỹ thuật lập trình C - Nhập/xuất dữ liệu 15 bangtqh@hotmail.com
Màu sắc khi xuất dữ liệu
• Đặt màu nền
textbackground ( màu nền )
• Đặt màu chữ
textcolor ( màu chữ )
Đỏ
4
RED
7 6 5
3 2 1 0
Giá trị
Xám
LIGHTGRAY
Nâu
BROWN
Tím
MAGENTA
Xanh ngọc
CYAN
Xanh lá
GREEN
Xanh dương
BLUE
Đen
BLACK
ý nghĩa Hằng màu
04/2010
Một vài ví dụ nhập/xuất dữ liệu
1 Viết chương trình cho nhập các hệ số của phương trình bậc nhất 1 ẩn
ax+b=0 (với a≠0) hãy in ra màn hình nghiệm của phương trình đã cho.
2 Viết chương trình hiển thị ra màn hình số tiền phải trả cho 1 cuộc gọi
đ iện thoại N giây Biết rằng cước gọi tính theo mỗi block là xñ, và 1 block bằng 6 giây Các giá trị x, N nhập từ bàn phím.
3 Viết chương trình nhập tọa độ của 3 ñiểm A, B, C trên mặt phẳng Tính và in ra màn hình chu vi, diện tích của tam giác ABC.
4 Viết chương trình nhập họ tên, hệ số lương của 1 nhân viên Tính và
in ra màn hình lương còn lĩnh của nhân viên đó sau khi trừ ñi các khoản: BHYT 1.5%, BH thất nghiệp 1% và ðảng phí 1%
5 Viết chương trình hiện ra màn hình thể tích của tứ diện ABCD biết
rằng A, B, C có tọa độ nhập từ bàn phím (XA, YA) (XB, YB) (XC, YC) và
chiều cao từ ñỉnh D xuống mặt phẳng ABC là h
Trang 9Kỹ thuật lập trình C - Nhập/xuất dữ liệu 17 bangtqh@hotmail.com
04/2010