BÀI GIẢNG HỌC PHẦN
KỸ THUẬT LẬP TRÌNH
CHƯƠNG 3: VÀO/RA DỮ LIỆU VÀ CÁC
CẤU TRÚC ĐIỀU KHIỂN CHƯƠNG TRÌNH
Nội dung
3.1. Vào/ra dữ liệu
3.2. Các cấu trúc điều khiển chương trình
2
3.1. Vào/ra dữ liệu
• Khai báo thư viện chương trình
• Lệnh đưa dữ liệu ra màn hình
• Lệnh nhập dữ liệu vào từ bàn phím
3
Khai báo thư viện chương trình
• Để có thể sử dụng các lệnh vào/ra dữ liệu, cần khai
báo tệp tiêu đề stdio.h (standard input/output)
#include <stdio.h>
hoặc
#include "stdio.h"
4
Lệnh đưa dữ liệu ra màn hình (1)
• Cú pháp:
printf(xâu_định_dạng, danh_sách_tham_số);
Trong đó:
- xâu_định_dạng: đặt trong cặp dấu " ", quy định cách
thức hiển thị dữ liệu ra màn hình máy tính, bao gồm 3
loại ký tự:
+ Ký tự văn bản thông thường
+ Ký tự điều khiển
+ Đặc tả
- danh_sách_tham_số: danh sách các giá trị được hiển
thị theo quy định trong xâu định dạng, được viết ngăn
cách nhau bởi dấu phẩy, gồm: tên biến, tên hằng, biểu
thức, hàm, các giá trị cụ thể
5
Lệnh đưa dữ liệu ra màn hình (2)
• Lưu ý:
danh_sách_tham_số phải phù hợp với các đặc tả
trong xâu_định_dạng cả về số lượng, kiểu dữ liệu
và thứ tự
6
xâu_định_dạng (1)
• Ký tự văn bản thơng thường: Được đưa ra màn hình
ngun vẹn như trong xâu_định_dạng
Ví dụ:
- printf("Xin chao!");
Kết quả hiển thị trên màn hình: Xin chao!
- printf("a+b");
Kết quả hiển thị trên màn hình: a+b
• Một số ký tự đặc biệt cần đặt liền sau ký hiệu \
\" in ra ký tự "
\\ in ra ký tự \
7
xâu_định_dạng (2)
• Ký tự điều khiển: tạo các hiệu ứng hiển thị đặc biệt
\n xuống dòng
\t tab
\b backspace
\r carriage return – đưa con trỏ màn hình về đầu
dịng
\f line feed – sang trang
…
Ví dụ:
printf("\n");
printf("\t");
printf("\n\t");
8
xâu_định_dạng (3)
• Đặc tả: Xác định kiểu dữ liệu của giá trị muốn xuất
Đặc tả
Ý nghĩa
Kiểu dữ liệu
%c
%i, %d
Kiểu ký tự đơn
Số nguyên hệ 10 có dấu
char
int, char
%u
unsigned
Số nguyên hệ 10 khơng dấu
int/char
%o
Số hệ 8 khơng dấu (khơng
int, char
có số 0 đứng trước)
Số hệ 16 không dấu chữ
%x, %X thường/chữ hoa (khơng có int, char
0x đứng trước)
9
xâu_định_dạng (4)
• Đặc tả: (tiếp)
Đặc tả
Ý nghĩa
Kiểu dữ liệu
%li,%ld Số ngun hệ 10 có dấu
long
%lu
Số ngun hệ 10 khơng dấu unsigned long
%lo
Số hệ 8 khơng dấu (khơng
long
có số 0 đứng trước)
%lx,
%lX
Số hệ 16 khơng dấu chữ
thường/chữ hoa (khơng có long
0x đứng trước)
10
xâu_định_dạng (5)
• Đặc tả: (tiếp)
Đặc tả
%s
Ý nghĩa
Hiển thị xâu ký tự kết thúc
char[]
bởi '\0'
%f
Số thực dấu phẩy tĩnh
%e, %E Số thực dấu phẩy động
%g
Kiểu dữ liệu
float, double
float, double
Dùng %f hoặc %e tùy
float, double
thuộc loại nào ngắn hơn
11
xâu_định_dạng (6)
• Ví dụ:
int a,b;
float x;
a=5;
b=10;
x=12.75;
printf("\n%d",a); in ra 5
printf("\n%d",b); in ra 10
printf("\n%d, %d",a,b); in ra 5, 10
printf("\n%f",x);
in ra 12.750000
printf("\n%f",10.0/3);
in ra 3.333333
12
Độ rộng hiển thị - đối với số nguyên
• Định dạng:
%nd trong đó n là số ngun khơng âm, cho biết số
chỗ dùng để viết số ngun
• Ví dụ:
int a,b;
a=123;
b=45;
printf("\n%4d",a);
printf ("\n%5d",b);
Kết quả hiển thị trên màn hình:
˽123
(˽ là ký hiệu dấu cách)
˽˽˽45
13
Độ rộng hiển thị - đối với số thực (1)
• Định dạng:
%n.mf
Trong đó n, m là 2 số ngun khơng âm:
n - số chỗ dùng để viết số thực
m - số chỗ trong n dùng để viết phần thập phân
14
Độ rộng hiển thị - đối với số thực (2)
• Ví dụ:
float x;
x=9.125;
printf("\n%f",x);
printf("\n%.2f",x);
printf("\n%6.2f",x);
Kết quả hiển thị trên màn hình:
9.125000
9.13
˽˽9.13
15
Độ rộng hiển thị - Lưu ý (1)
• Đối với các ký tự và xâu ký tự, định dạng độ rộng
hiển thị tương tự như đối với số ngun
• Ví dụ:
printf("\n%3d%15s%3c",1,"Tran Ngoc Anh",'A');
printf("\n%3d%15s%3c",2,"Nguyen Sao Mai",'B');
Kết quả hiển thị trên màn hình:
˽˽1˽˽Tran Ngoc Anh˽˽A
˽˽2˽Nguyen Sao Mai˽˽B
16
Độ rộng hiển thị - Lưu ý (2)
• Khi số chỗ cần thiết để hiển thị nội dung dữ liệu lớn
hơn trong định dạng hệ thống tự cung cấp thêm
chỗ để hiển thị dữ liệu trong các trường hợp: số
nguyên, phần nguyên của số thực, ký tự, xâu ký tự
• Ví dụ: a=1024; x=10.875;
printf("\n%1d",a);
printf("\n%3.2f",x);
printf("\n%0c",'A');
printf("\n%1s","ABC");
Kết quả: 1024
10.88
A
ABC
17
Căn lề trái/phải
• Khi có định dạng độ rộng hiển thị dữ liệu, ngôn ngữ
C mặc định căn lề phải; để căn lề trái cần thêm dấu ngay sau ký hiệu %
• Ví dụ:
printf("\n%-3d%-15s%-3c",1,"Tran Ngoc Anh",'A');
printf("\n%-3d%-15s%-3c",2,"Nguyen Sao Mai",'B');
Kết quả hiển thị trên màn hình:
1˽˽Tran Ngoc Anh˽˽A˽˽
2˽˽Nguyen Sao Mai˽B˽˽
18
Lệnh nhập dữ liệu vào từ bàn phím (1)
• Cú pháp:
scanf(xâu_định_dạng, danh_sách_tham_số);
Trong đó:
- xâu_định_dạng: chỉ bao gồm các đặc tả quy định
cho từng loại dữ liệu được nhập vào
- danh_sách_tham_số: bao gồm các địa chỉ của các
biến được viết ngăn cách nhau bởi dấu phẩy
(&tên_biến_1, &tên_biến_2, …)
19
Lệnh nhập dữ liệu vào từ bàn phím (2)
• Lưu ý:
danh_sách_tham_số phải phù hợp với các đặc tả
trong xâu_định_dạng cả về số lượng, kiểu dữ liệu,
thứ tự
20
xâu_định_dạng (1)
• Đặc tả:
Đặc tả
%c
%d
%u
%o
%x
%ld
%lo
%lx
Ý nghĩa
Kiểu ký tự đơn
Số nguyên kiểu int
Số nguyên không dấu
Số hệ 8
Số hệ 16
Số nguyên kiểu long
Số kiểu long hệ 8
Số kiểu long hệ 16
Kiểu dữ liệu
char
int
unsigned int
int
int
long
long
long
21
xâu_định_dạng (2)
• Đặc tả: (tiếp)
Đặc tả
Ý nghĩa
%s
Xâu ký tự kết thúc bởi '\0'
%f
Số thực dấu phẩy tĩnh
%lf
Số thực dấu phẩy tĩnh
Kiểu dữ liệu
char[]
float
double
22
Ví dụ (1)
• Chương trình nhập các dữ liệu ngun, thực, ký tự
từ bàn phím rồi hiển thị lại các kết quả đã nhập:
#include <stdio.h>
int main(void)
{
int a;
float x;
char c;
printf("Nhap so nguyen a: ");
scanf("%d",&a);
23
Ví dụ (2)
• Chương trình (tiếp):
printf("Nhap so thuc x: ");
scanf("%f",&x);
printf("Nhap ky tu c: ");
fflush(stdin);
scanf("%c",&c);
printf("Cac du lieu da nhap la: a = %d, x = %f, c
= '%c'",a,x,c);
return 0;
}
24
Ví dụ (3)
• Chạy thử chương trình:
25