Bài giảng Kỹ thuật lập trình C: Bài 3 Nhập xuất dữ liệu trong C, cung cấp cho người học những kiến thức như: Các hàm nhập xuất thuộc stdio.h; Các hàm nhập xuất thuộc conio.h; Bài tập minh họa. Mời các bạn cùng tham khảo!
Trang 1KỸ THUẬT LẬP TRÌNH C
BÀI 3: NHẬP XUẤT DỮ LIỆU TRONG C
Hoàng Quốc Tuấntuanhq@fpt.edu.vnhttp://hoangquoctuanpro.wordpress.com
Hoàng Quốc Tuấntuanhq@fpt.edu.vnhttp://hoangquoctuanpro.wordpress.com
Trang 2Nội dung
I Các hàm nhập xuất thuộc stdio.h
II Các hàm nhập xuất thuộc conio.h
III Bài tập minh họa
I Các hàm nhập xuất thuộc stdio.h
II Các hàm nhập xuất thuộc conio.h
III Bài tập minh họa
Trang 3I – CÁC HÀM NHẬP XUẤT THUỘC STDIO.H
Trang 41 Hàm đưa kết quả ra màn hình (printf)
(mỗi biểu thức khi in ra phải có một đặc tả
Các biểu thức cách nhau bằng dấu phẩy.
Trang 51 Hàm đưa kết quả ra màn hình (printf)
Các ký tự điều khiển :
\n : sang dòng mới
\t : dấu tab
\b : lùi lại một bước (backspace)
\f : sang trang mới
Ví dụ :
Trang 61 Hàm đưa kết quả ra màn hình (printf)
Trang 71 Hàm đưa kết quả ra màn hình (printf)
Mã đặc tả :
ký_tự_chuyển_dạng:
Ký tự Kiểu dữ liệu Ý nghĩa
f float hoặc double số thực
e float hoặc double số thực dạng ký pháp khoa học
Trang 81 Hàm đưa kết quả ra màn hình (printf)
Mã đặc tả :
ký_tự_chuyển_dạng:
Ký tự Kiểu dữ liệu Ý nghĩa
g float hay double không in ra các số 0 vô nghĩa
Trang 91 Hàm đưa kết quả ra màn hình (printf)
Ví dụ :
char ky_tu = ‘A’;
printf ( “\nDay la ky tu %c viet hoa”, ky_tu);
// Day la ky tu A viet hoa
Trang 122 Hàm scanf
Các đặc tả:
Ký tự Ý nghĩa
x Một giá trị kiểu int hệ 16
lx Một giá trị kiểu long hệ 16
f hay e Một giá trị kiểu float
lf hay le Một giá trị kiểu double
Trang 13printf ( “ Nhap mot so: ” );
scanf ( “%f” , & value); /*Nhap mot so => 23*/
printf ( “ Ket qua la: %f ” , value);
/* ket qua la: 23.000000 */
printf ( “ Nhap mot so: ” );
scanf ( “%f” , & value); /*Nhap mot so => 23*/
printf ( “ Ket qua la: %f ” , value);
/* ket qua la: 23.000000 */
}
Trang 18printf (“Nhap mot ky tu: ”);
j = getchar (); /* nhan mot ky tu tu ban phim
roi gan cho j Gia su j = ‘A’*/
printf (“Nhap mot ky tu: ”);
j = getchar (); /* nhan mot ky tu tu ban phim
roi gan cho j Gia su j = ‘A’*/
printf (“%c\n”, j);
Trang 195 Lưu ý về các hàm scanf, gets và getchar
Các hàm này nhận dữ liệu từ stdin (dòng nhập chuẩn từ bàn
phím), chúng nhận dữ liệu theo nguyên tắc sau:
− Nếu trên stdin có đủ dữ liệu thì chúng sẽ nhận một phần dữ liệu mà
nó yêu cầu, phần dữ liệu còn lại vẫn ở trên stdin.
− Nếu trên stdin không đủ dữ liệu theo yêu cầu của hàm, thì máy tạm dừng để chờ người sử dụng đưa dữ liệu từ bàn phím lên stdin cho đến khi gặp phím Enter (\n).
− Phần dữ liệu đã được lấy bởi các hàm này được tự động xóa khỏi
stdin, trong đó hàm gets sẽ xóa ký tự \n trong stdin; hàm scanf và
getchar không xóa \n trong stdin.
Nếu sử dụng các lệnh scanf, getchar thì các lệnh sau sẽ bị trôi do
Trang 205 Lưu ý về các hàm scanf, gets và getchar
printf (“Nhap mot so: ”);
scanf (“%d”, & a);
printf (“Nhap mot ky tu: ”);
printf (“Nhap mot so: ”);
scanf (“%d”, & a);
printf (“Nhap mot ky tu: ”);
scanf (“%c”, & b);
Giả sử, chạy chương
trình, ta nhập 65<Enter> khi đó lệnh scanf thứ hai
bị trôi và kết quả là a=65
và b=<Enter>.
Để các hàm hoạt động đúng, phải khử ký tự \n
Trang 215 Lưu ý về các hàm scanf, gets và getchar
Trang 226 Hàm putchar
Cú pháp:
int putchar ( int ch );
Hàm này xuất ký tự ch lên màn hình Kết
quả của hàm trả về ký tự xuất nếu thành
công, ngược lại cho kết quả EOF (-1).
Ví dụ:
Trang 237 Hàm puts
Cú pháp:
int puts ( const char *s);
Hàm này xuất một chuỗi lên màn hình với *s là
con trỏ kiểu char trỏ tới ô nhớ đầu của vùng nhớ chứa chuỗi ký tự muốn hiển thị.
Hàm này khi xuất sẽ thêm ký tự \n vào cuối.
Kết quả trả về của hàm là ‘\n’ nếu thành công,
là EOF khi có lỗi.
Trang 24char a[25] = “Lap trinh C”;
puts(“”); /* xuat ra chuoi rong roi xuong dong */
puts(a); /* xuat ra chuoi Lap trinh C roi xuogn dong */}
#include <stdio.h>
void main()
{
char a[25] = “Lap trinh C”;
puts(“”); /* xuat ra chuoi rong roi xuong dong */
puts(a); /* xuat ra chuoi Lap trinh C roi xuogn dong */}
Trang 25II – CÁC HÀM NHẬP XUẤT THUỘC CONIO.H
Trang 26Nếu bộ đệm rỗng thì chờ Khi một phím được nhấn thì
nhận ngay ký tự đó mà không cần phải ấn Enter
Hàm getche cho hiển thị ký tự lên màn hình còn getch thì không hiển thị ký tự lên màn hình.
Trang 271 Hàm getch và getche
Lưu ý: Cách nhận các phím đặc biệt Với các phím đặc biệt khi được ấn thì có hai giá trị được gửi lên bộ đệm bàn phím Vì vậy, để nhận được mã của các phím này cần phải đọc bộ đệm bàn phím hai lần và lấy mã ký tự ở lần thứ hai.
Ví dụ: khi ấn phím F1 thì giá trị đầu là 0 và giá trị kế là 59
được gửi lên bộ đệm bàn phím
Trang 28Nếu bộ đệm rỗng thì chờ Khi một phím được nhấn thì
nhận ngay ký tự đó mà không cần phải ấn Enter
Hàm getche cho hiển thị ký tự lên màn hình còn getch thì không hiển thị ký tự lên màn hình.
Trang 29scanf ( “%d” , & b); // Nhap so b
printf ( “%d + %d = %d” , a, b, a + b); // xuat ra tong
ch = getch (); // Nhan ma lan thu nhat
scanf ( “%d” , & b); // Nhap so b
printf ( “%d + %d = %d” , a, b, a + b); // xuat ra tong
ch = getch (); // Nhan ma lan thu nhat
if (ch == 0)
ch = getch (); // Nhan ma lan thu hai
}
while (ch != 59);
Trang 302 Hàm cprintf
Hàm cprintf giống như hàm printf , nhưng
màu của nội dung được in bởi hàm cprintf
Trang 32clrscr (); // xoa man hinh
textcolor ( YELLOW ); // dat mau chu la mau vang
textbackground ( BLUE ); // dat mau nen la mau xanh
cprintf ( “\n Nhap mot so: ” );
cscanf ( “%d%*c” , & a); // khong co *c se troi lanh cscanf duoi
cprintf ( “\n Nhap mot ky tu: ” );
clrscr (); // xoa man hinh
textcolor ( YELLOW ); // dat mau chu la mau vang
textbackground ( BLUE ); // dat mau nen la mau xanh
cprintf ( “\n Nhap mot so: ” );
cscanf ( “%d%*c” , & a); // khong co *c se troi lanh cscanf duoi
cprintf ( “\n Nhap mot ky tu: ” );
scscanf ( “%c” , & b);
cprintf ( “\n %d %c” , a, b);
Trang 354.2 Hàm đặt tọa độ gotoxy
Cú pháp:
gotoxy ( int x , int y );
Chức năng: Hàm đặt con trỏ màn hình vào tọa
Trang 364.3 Hàm đặt màu nền textbackground
Cú pháp:
void textbackground ( int color );
Chức năng: chọn màu nền, trong đó color là một biểu
thức có giá trị từ 0 đến 7 tương ứng với một trong các hằng số màu đầu tiên của bảng màu nền.
Ví dụ:
textbackground( 3 );
Trang 374.4 Hàm đặt màu chữ textcolor
Cú pháp:
void textcolor ( int color );
Chức năng: chọn màu ký tự, trong đó color là một biểu
thức có giá trị từ 0 đến 15 tương ứng với một trong các hằng số màu đầu tiên của bảng màu văn bản.
Ví dụ:
textcolor( 4 );
tương đương với
Trang 385 Hàm kiểm tra bộ đệm bàn phím kbhit
Trang 39III – BÀI TẬP MINH HỌA
Sử dụng các hàm nhập xuất và tính toán
Trang 40printf ( “Nhap so dam: ” );
scanf ( “%f” , & sdam );
skm = sdam * ( float ) 10000 / 5400 ; printf ( “Ket qua la: %0.2f dam => %0.2 km” , sdam , skm );
printf ( “Nhap so dam: ” );
scanf ( “%f” , & sdam );
skm = sdam * ( float ) 10000 / 5400 ; printf ( “Ket qua la: %0.2f dam => %0.2 km” , sdam , skm );
printf ( “Nhap so km: ” );
scanf ( “%f” , & skm );
Bài 1: Viết chương trìnhnhập vào số dặm, sau đó đổi ra số
km và ngược lại (biết 10000 km = 5400 dặm).
Bài 1: Viết chương trìnhnhập vào số dặm, sau đó đổi ra số
km và ngược lại (biết 10000 km = 5400 dặm).
giải
Trang 41Bài 2: Viết chương trình nhập vào a, b, c (giả sử a, b, c
thỏa mãn điều kiện là ba cạnh của tam giác: a+b>c,
a+c>b, b+c>a) Tính diện tích của tam giác, Biết.
Bài 2: Viết chương trình nhập vào a, b, c (giả sử a, b, c
thỏa mãn điều kiện là ba cạnh của tam giác: a+b>c,
a+c>b, b+c>a) Tính diện tích của tam giác, Biết.
giải
) )(
a
=
Trang 43Bài 3: Viết chương trình nhập từ bàn phím và sau đó xuất
lên màn hình các thông tin của một mặt hàng bao gồm:
tên mặt hàng, khối lượng, đơn giá, mã chất lượng, số
lượng.
Bài 3: Viết chương trình nhập từ bàn phím và sau đó xuất
lên màn hình các thông tin của một mặt hàng bao gồm:
tên mặt hàng, khối lượng, đơn giá, mã chất lượng, số
lượng.
giải
Trang 45BÀI 3: NHẬP XUẤT DỮ LIỆU TRONG C
Hỏi - Đáp
Hoàng Quốc Tuấntuanhq@fpt.edu.vnhttp://hoangquoctuanpro.wordpress.com
Hoàng Quốc Tuấntuanhq@fpt.edu.vnhttp://hoangquoctuanpro.wordpress.com