Bài giảng Tin học đại cương - Bài 6: Vào ra dữ liệu trong C - Bùi Trọng Tùng

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI  
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG  
TIN HỌC ĐẠI CƯƠNG  
Bài 6. Vào ra dữ liệu trong C  
Các lệnh vào ra dữ liệu  
• C cung cấp 2 hàm vào ra cơ bản:  
– printf()  
– scanf()  
• Muốn sử dụng 2 hàm printf()và  
scanf()ta cần khai báo tệp tiêu đề  
stdio.h:  
#include <stdio.h>  
Hoặc  
#include “stdio.h”  
2
1
1. Hàm printf()  
• Mục đích:  
– Hiển thị ra màn hình các loại dữ liệu cơ bản  
như: Số, kí tự và xâu kí tự  
– Một số hiệu ứng hiển thị đặc biệt như xuống  
dòng, sang trang,…  
3
Mục đích và cú pháp  
• Cú pháp:  
printf(xâu_định_dạng , danh_sách_tham_số);  
–xâu_định_dạng: Qui định cách thức hiển thị dữ  
liệu ra màn hình máy tính.  
–danh_sách_tham_số: Danh sách các giá trị  
được hiển lên màn hình theo cách thức được qui  
định trong xâu_định_dạng. Có thể sử dụng:  
• Biến số  
• Hằng số  
• Biểu thức  
• Hàm  
• Giá trị cụ thể  
4
2
Mục đích và cú pháp  
• Ví dụ: Chương trình sau  
#include <conio.h> //Khai bao tep tieu de  
#include <stdio.h> //Khai bao tep tieu de  
int main(){ //Viet chuong trinh chinh  
int a = 5;  
float x = 1.234;  
printf(“Hien thi mot so nguyen a = %d và  
mot so thuc  
x = %f”,a,x);  
getch();  
return 0  
}
• Sẽ cho ra kết quả:  
Hien thi mot so nguyen a = 5 va mot so thuc x =1.234000  
5
Mục đích và cú pháp  
• Trong xâu_định_dạng chứa:  
– Các kí tự thông thường: Được hiển thị ra màn  
hình.  
– Các nhóm kí tự định dạng: Xác định quy cách  
hiển thị các tham số trong phần  
danh_sách_tham_số.  
– Các kí tự điều khiển: Dùng để tạo các hiệu  
ứng hiển thị đặc biệt như xuống dòng (‘\n’)  
hay sang trang (‘\f’)…  
6
3
Mục đích và cú pháp  
• Mỗi nhóm kí tự định dạng chỉ dùng cho  
một kiểu dữ liệu  
Ví dụ: %d dùng cho kiểu nguyên  
%f dùng cho kiểu thực  
• Nếu giữa nhóm kí tự định dạng và tham  
số tương ứng không phù hợp với nhau thì  
sẽ hiển thị ra kết quả không như ý.  
7
Mục đích và cú pháp  
• danh_sách_tham_số phải phù hợp với các  
nhóm kí tự định dạng trong  
xâu_định_dạng về:  
– Số lượng  
– Kiểu dữ liệu  
– Thứ tự  
8
4
Một số nhóm định dạng phổ biến  
Nhóm kí tự  
định dạng  
Kiểu dữ liệu  
Kết quả  
%c  
char  
Kí tự đơn lẻ  
%i, %d  
%o  
int, char  
int, char  
Số thập phân  
Số bát phân  
(không có 0 đằng trước)  
%x, %X  
%u  
int, char  
Số hexa  
(chữ thường/chữ hoa)  
unsigned  
int/char  
Số thập phân  
9
Một số nhóm định dạng phổ biến  
Nhóm kí tự  
định dạng  
Kiểu dữ liệu  
Kết quả  
%ld, %li  
long  
Số thập phân  
%lo  
long  
long  
Số bát phân  
(không có 0 đằng trước)  
%lx, %LX  
%lu  
Số hexa  
(chữ thường/chữ hoa)  
unsigned long Số thập phân  
10  
5
Một số nhóm định dạng phổ biến  
Nhóm kí tự  
định dạng  
Kiểu dữ liệu  
Kết quả  
%s  
char []  
Hiển thị xâu kí tự  
kết thúc bởi ‘\0’  
%f  
float/double  
float/double  
Số thực dấu  
phẩy tĩnh  
%e, %E  
%
Số thực dấu  
phẩy động  
Hiển thị kí tự %  
11  
Độ rộng hiển thị - số nguyên  
• Đối với số nguyên  
– Có dạng %md, với m là số nguyên không âm  
– Ví dụ: Có số a = 1234  
Lệnh:  
printf("%5d",a);//danh 5 cho de hien thi a  
printf(“\n%5d",34);  
Cho ra kết quả: 1234  
34  
( kí hiệu cho dấu cách đơn (space) )  
12  
6
Độ rộng hiển thị - số nguyên  
• Ví dụ:  
printf("\n%3d%15s%3c", 1, "nguyen van a", 'g');  
printf("\n%3d%15s%3c", 2, "tran van b", 'k');  
• Kết quả:  
1
nguyen van a  
g
k
2
tran van b  
13  
Độ rộng hiển thị - số thực  
• m, n là 2 số nguyên không âm  
%m.nf  
Trong đó:  
– m vị trí để hiển thị số thực (dấu ‘.’ được tính  
1 vị trí  
– n vị trí trong m vị trí đó để hiển thị phần thập  
phân.  
14  
7
Độ rộng hiển thị - số thực  
• Ví dụ:  
printf("\n%f",17.345);  
printf("\n%.2f",17.345);  
printf("\n%7.2f",17.345);  
• Kết quả:  
17.345000  
17.35  
17.35  
15  
Độ rộng hiển thị - Chú ý  
• Khi số chỗ cần thiết để hiển thị nội dung  
dữ liệu lớn hơn trong định dạng Tự  
động cung cấp thêm chỗ mới để hiển thị  
trong các trường hợp sau:  
– Số nguyên  
– Phần nguyên của số thực  
– Xâu ký tự  
• Ví dụ: a = 1000  
printf(“So a la: %1d”, a);  
– Kết quả:  
So a la: 1000  
16  
8
Căn lề phải, lề trái  
• Căn lề phải:  
– Khi hiển thị dữ liệu, mặc định C căn lề phải  
• Căn lề trái:  
– Nếu muốn căn lề trái khi hiển thị dữ liệu ta chỉ  
cần thêm dấu trừ - vào ngay sau dấu %.  
17  
Căn lề phải, lề trái  
• Ví dụ:  
printf("\n%-3d %-15s %5.2f %-3c",  
9, "nguyen van a", 7.5, 'g');  
printf("\n%-3d %-15s %5.2f %-3c",  
10, “nguyen ha", 6.75, 'k');  
• Kết quả:  
9 nguyen van a  
10 nguyen ha  
7.50g  
6.75k  
18  
9
2. Hàm scanf()  
• Mục đích:  
– Hàm scanf() dùng để nhập dữ liệu từ bàn phím  
• Cú pháp:  
scanf(xâu_định_dạng,danh_sách_địa_chỉ);  
• Ví dụ:  
scanf(“%d %f”, &a, &b);  
19  
Mục đích và cú pháp  
• xâu_định_dạng:  
– Gồm các ký tự được qui định cho từng loại dữ  
liệu được nhập vào.  
– Ví dụ: Với dữ liệu định nhập vào là kiểu  
nguyên thì xâu định dạng là : %d  
• danh_sách_địa_chỉ:  
– Bao gồm các địa chỉ của các biến (toán tử &),  
phân tách nhau bởi dấu phẩy (,)  
20  
10  
Mục đích và cú pháp  
• danh_sách_địa_chỉ phải phù hợp với các  
nhóm kí tự định dạng trong  
xâu_định_dạng về:  
– Số lượng  
– Kiểu dữ liệu  
– Thứ tự  
21  
Một số nhóm định dạng phổ biến  
Nhóm kí tự  
định dạng  
Kiểu dữ liệu  
Chú thích  
%c  
char  
Kí tự đơn lẻ  
Số thập phân  
Số bát phân  
Số hexa  
%d  
%o  
%x  
%u  
int  
int  
int  
unsigned int  
Số thập phân  
22  
11  
Một số nhóm định dạng phổ biến  
Nhóm kí tự  
định dạng  
Kiểu dữ liệu  
Chú thích  
%s  
char[]  
float  
Hiển thị xâu kí tự  
kết thúc bởi ‘\0’  
%f  
Số thực dấu  
phẩy tĩnh  
%ld  
%lf  
long  
Số nguyên  
double  
Số thực dấu  
phẩy tĩnh  
%
Đọc ký tự %  
23  
Ví dụ  
#include <conio.h>  
#include <stdio.h>  
int main()  
{
// khai bao bien  
int a;  
float x;  
char ch;  
// Nhap du lieu  
printf(“Nhap vao mot so nguyen”);  
scanf(“%d”,&a);  
printf(“\n Nhap vao mot so thuc”);  
scanf(“%f”,&x);  
24  
12  
Ví dụ  
printf(“\n Nhap vao mot ki tu”);  
fflush(stdin); scanf(“%c”,&ch);  
// Hien thi du lieu vua nhap vao  
printf(“\n Nhung du lieu vua nhap vao”);  
printf(“\n So nguyen: %d”,a);  
printf(“\n So thuc : %.2f”,x);  
printf(“\n Ki tu: %c: ”,ch);  
getch();  
return 0;  
}
25  
Ví dụ  
• Kết quả:  
Nhap vao mot so nguyen: 2007  
Nhap vao mot so thuc: 17.1625  
Nhap vao mot ki tu: b  
Nhung du lieu vua nhap vao  
So nguyen: 2007  
So thuc: 17.16  
Ki tu: b  
26  
13  
Một số quy tắc cần lưu ý  
• Quy tắc 1: Khi đọc số  
– Hàm scanf() quan niệm rằng mọi kí tự số, dấu  
chấm (‘.’) đều là kí tự hợp lệ.  
– Khi gặp các dấu phân cách như tab, xuống  
dòng hay dấu cách (space bar) thì scanf() sẽ  
hiểu là kết thúc nhập dữ liệu cho một số  
27  
Một số quy tắc cần lưu ý  
• Quy tắc 2: Khi đọc kí tự:  
Hàm scanf() cho rằng mọi kí tự có trong bộ  
đệm của thiết bị vào chuẩn đều là hợp lệ, kể  
cả các kí tự tab, xuống dòng hay dấu cách.  
Trước khi nhập dữ liệu kí tự hay xâu kí tự ta  
nên dùng lệnh fflush(stdin) để xóa bộ  
đệm.  
28  
14  
3. Các lệnh vào ra khác  
• Hàm getch(): thường dùng để chờ người  
sử dụng ấn một phím bất kì rồi sẽ kết thúc  
chương trình.  
• Cú pháp  
getch();  
• Để sử dụng các hàm getch()ta cần khai  
báo tệp tiêu đề conio.h.  
29  
Ví dụ  
#include <conio.h>  
#include <stdio.h>  
int main()  
{
int a, b;  
printf("Nhap a: "); scanf("%d", &a);  
printf("Nhap b: "); scanf("%d", &b);  
printf("Tong hai so la: %d", a+b);  
printf("Nhan mot phim bat ky de ket  
thuc!");  
getch();  
return 0;  
}
30  
15  
Ví dụ  
• Kết quả:  
Nhap a: 1  
Nhap b: 9  
Tong hai so la: 10  
Nhan mot phim bat ky de ket thuc!  
31  
Bài tập  
• Viết chương trình tính tổng, hiệu, tích của  
2 số thực a và b  
• Viết chương trình tính giá trị hàm số  
f(x) = 3sin(x) + 4cos(x)  
g(x, y) = 3|x| + y2  
32  
16  
pdf 16 trang baolam 20840 Free
Bạn đang xem tài liệu "Bài giảng Tin học đại cương - Bài 6: Vào ra dữ liệu trong C - Bùi Trọng Tùng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_tin_hoc_dai_cuong_bai_6_vao_ra_du_lieu_trong_c_bui.pdf