Nhập xuất dữ liệu

Một phần của tài liệu Giáo trình tin học đại cương (Trang 52 - 56)

Nhập xuất dữ liệu là cách chúng ta ựưa dữ liệu vào chương trình và đưa ra kết quả của chương trình. Thơng thường, dữ liệu ựược ựưa vào thơng qua bàn phắm và kết quả ựược ựưa ra màn hình.

2.6.1 đưa kết quả ra màn hình

Có thể ựưa ra màn hình một dịng chữ, hoặc các giá trị số bằng lệnh printf. Lệnh printf có dạng:

printf (<chuỗi ựiều khiển>, bt1, bt2, ..., btn);

Ở ựây bt1, bt2,..., btn là các biểu thức mà giá trị của chúng cần ựược ựưa ra màn hình. Trong chuỗi ựiều khiển, có thể chứa:

- Ký tự ựiều khiển. - Các ký tự hiển thị.

- Các ký tự dùng ựể mô tả kiểu cách ựưa ra của các biến, ta sẽ gọi chúng là các ựặc tả.

Một số ký tự ựiều khiển ựược ựịnh nghĩa trước, thường có dấu \ phắa trước, vắ dụ ký tự ựiều khiển xuống dòng là \n, ký tự tab là \t.

Các ký tự hiển thị sẽ ựược ựưa ra giống như khi chúng xuất hiện ở trong chuỗi ựiều khiển.

Các ựặc tả sẽ chỉ ra cách mà giá trị của các biểu thức sẽ ựược ựưa ra. Mỗi biểu thức cần phải có một ựặc tả tương ứng. Khi in ra màn hình, giá trị của các biểu thức sẽ ựược thay thế tương ứng vào vị trắ các ựặc tả.

Sau ựây là một số dạng thường dùng của câu lệnh printf. đưa ra một thông báo

http://www.ebook.edu.vn 53

đôi khi chúng ta chỉ muốn ựưa ra một thông báo, một câu hướng dẫn, khi đó chỉ cần ựưa vào chuỗi ựiều khiển không chứa các ựặc tả. Nội dung của xâu sẽ ựược ựưa ra màn hình.

Vắ dụ, ựể ựưa ra một thông báo nhắc người dùng nhập vào hệ số của ựa thức, có thể dùng lệnh:

printf(Ộ\nNhap he so da thuc: Ợ);

Khi đó trên màn hình sẽ xuất hiện:

Nhap he so da thuc:

đưa ra các giá trị nguyên

Khi muốn ựưa ra các kết quả là các giá trị nguyên, chúng ta dùng ựặc tả %d. Sau ựây chúng ta sẽ xét một số vắ dụ ựể có thể hiểu ựược hoạt ựộng của ựặc tả này.

Vắ dụ, ựoạn mã sau ựưa ra tổng của hai số nguyên:

int a, b; a = 10; b = 25;

printf(ỘTong cua %d va %d la %dỢ, a, b, a + b);

Câu lệnh printf sẽ thay thế các ựặc tả %d bằng giá trị các biểu thức tương ứng theo thứ tự ựưa vào. Trong ựoạn mã trên, giá trị của a, b và a + b sẽ lần lượt ựược thay thế vào các vị trắ %d trong chuỗi ựiều khiển, kết quả đưa ra màn hình như sau:

Tong cua 10 va 25 la 35

Trong vắ dụ trên, giá trị của các biểu thức có bao nhiêu chữ số thì bấy nhiêu vị trắ trên màn hình được sử dụng ựể in giá trị, vắ dụ giá trị 10 cần hai vị trắ thì máy sẽ dành ựúng hai vị trắ để in ra giá trị 10.

Tuy nhiên, trong một số trường hợp, như in ra các giá trị của một ma trận, hoặc in các giá trị theo dạng cột, thì chúng ta cần dành một số vị trắ nhất ựịnh cho một giá trị, mặc dù số vị trắ cần thiết ựể in ra giá trị đó có thể nhỏ hơn.

Vắ dụ, ựoạn chương trình sau in ra giá trị các luỹ thừa của 2 theo dạng cột:

#include <stdio.h> void main() { int i, a; a = 1; for (i = 1; i <= 10; i++) { a*= 2; printf("2 ^ %2d = %4d\n", i, a); } }

Kết quả ựưa ra như sau:

2 ^ 1 = 2 2 ^ 2 = 4 2 ^ 3 = 8 2 ^ 4 = 16 2 ^ 5 = 32 2 ^ 6 = 64 2 ^ 7 = 128 2 ^ 8 = 256 2 ^ 9 = 512 2 ^ 10 = 1024

http://www.ebook.edu.vn 54

Trong vắ dụ trên, ta ựã dành 2 vị trắ cho việc in số mũ và dành 4 vị trắ ựể in ra các luỹ thừa, bất kể các giá trị này bằng bao nhiêu. Trường hợp giá trị cần in ra có số chữ số lớn hơn 4 vị trắ, máy sẽ chuẩn bị số vị trị vừa ựủ cho giá trị ựó.

đưa ra các giá trị thực

để ựưa ra các giá trị thực, chúng ta dùng ựặc tả %f. Vắ dụ sau tắnh diện tắch của một hình trịn và ựưa kết quả ra màn hình. #include <stdio.h> void main() { float r; r = 2.34f;

printf("Dien tich hinh tron ban kinh %f la %f\n", r, 3.14*r*r); }

Kết quả in ra là:

Dien tich hinh tron ban kinh 2.340000 la 17.193383

Tuy nhiên, ựôi khi ta không cần kết quả gồm nhiều chữ số thập phân như thế, mà chỉ cần lấy một số lượng chữ số sau dấu phảy nhất ựịnh.

Câu lệnh printf sau sẽ thay thế cho câu lệnh printf trong ựoạn mã trên ựể ựưa ra các kết quả lấy hai chữ số sau dấu phảy, và dành 6 ký tự cho việc in ra mỗi giá trị.

printf("Dien tich hinh tron ban kinh %6.2f la %6.2f\n", r, 3.14*r*r);

Kết quả là:

Dien tich hinh tron ban kinh 2.34 la 17.19

Một trường hợp nữa là chúng ta vẫn muốn lấy một số lượng chữ số sau dấu phẩy nhất ựịnh, nhưng khơng có ý ựịnh dành sẵn một số vị trắ xác định, khi đó trong ựặc tả có thể vắng mặt số phắa trước dấu chấm.

Sau ựây là câu lệnh printf thường dùng nhất cho các bài dạng trên:

printf("Dien tich hinh tron ban kinh %.2f la %.2f\n", r, 3.14*r*r);

Kết quả là:

Dien tich hinh tron ban kinh 2.34 la 17.19

đưa ra các xâu ký tự

Khi muốn ựưa ra các giá trị là các xâu ký tự, vắ dụ như họ và tên hay ựịa chỉ, dùng ựặc tả %s.

Vắ dụ sau yêu cầu nhập vào tên và in ra lời chào.

#include <stdio.h> void main()

{

char szHoTen[100];

printf("Nhap ten ban: "); fflush(stdin);

gets(szHoTen);

printf("Xin chao %s", szHoTen); }

Khi chạy, nhập vào một tên và máy sẽ in ra lời chào tương ứng.

Nhap ten ban: Minh Quang Xin chao Minh Quang

http://www.ebook.edu.vn 55

Với ựặc tả %s, ta cũng có thể dành sẵn ựộ rộng cho giá trị in ra, sử dụng trong các trường hợp như in họ tên theo cột. Việc chỉ ựịnh ựộ rộng giống như ựối với trường hợp số nguyên.

2.6.2 Nhập dữ liệu từ bàn phắm

Nhập dữ liệu từ bàn phắm là một cách thông dụng ựể nạp giá trị cho các biến hoặc mảng. Trong phần này, chúng ta sẽ tìm hiểu cách nhập liệu cho các biến nguyên, biến thực và xâu ký tự.

Nhập số nguyên, số thực bằng scanf

Câu lệnh scanf có thể dùng ựể nhập dữ liệu cho các biến nguyên, thực. Một cách tổng quát câu lệnh scanf có dạng:

scanf("t1t2...tk", &b1,&b2,...,&bk);

Trong ựó b1, b2,..., bk là các biến (kiểu int và kiểu float) còn t1, t2,..., tk là các ựặc tả tương ứng. Dùng ựặc tả %d ựối với biến nguyên và %f ựối với biến thực.

Một vài chú ý:

- Trong câu lệnh scanf, không dùng tên biến như trong câu lệnh printf mà dùng ựịa chỉ của biến bằng cách ựặt phép toán & trước tên biến.

- Mỗi biến ứng với một ựặc tả. Như vậy số ựặc tả bằng số biến.

- Trong chuỗi ựiều khiển chỉ nên chứa các ựặc tả và các ựặc tả nên viết liền nhau. Vắ dụ, ựể vào 3 giá trị: 25, -137, 45.3 cho hai biến nguyên m, n và một biến thực f, dùng lệnh:

scanf(Ộ%d%d%fỢ, &n, &m, &f);

Khi gặp câu lệnh này, máy sẽ dừng ựể ựợi thao tác viên vào số liệu từ bàn phắm. Các giá trị cần ựược phân cách nhau bởi một hoặc vài khoảng trắng (ở ựây khoảng trắng ựược hiểu là dấu cách hoặc dấu xuống dịng).

Thao tác viên có thể sử dụng một trong các cách bấm phắm sau:

Cách 1: Mỗi giá trị trên một dòng, bằng cách nhấn phắm Enter sau mỗi số.

25 -137 45.3

Cách 2: đặt cả 3 giá trị trên một dòng, cách nhau bằng các dấu cách.

25 -137 45.3

Sau khi nhập xong, n nhận giá trị 25, m nhận giá trị -137 và f nhận giá trị 45.3.

Nhập xâu ký tự bằng gets

để nhập xâu ký tự, có thể dùng lệnh gets. Lệnh gets có dạng:

gets(<xâu ký tự>)

Ở ựây, xâu ký tự là một mảng kiểu char.

Chú ý: Nếu trước lệnh gets mà có các lệnh scanf, thì có thể khơng nhập ựược xâu do ký

tự return còn ở trong bộ ựệm. Vì vậy ựể sử dụng ựúng ựắn câu lệnh gets, nên thêm lệnh fflush(stdin) trước lệnh gets trong mọi trường hợp, ựể làm sạch bộ ựệm (xóa hết các ký tự cịn trong ựó) trước khi ựưa (nhập) giá trị mới.

http://www.ebook.edu.vn 56

Một phần của tài liệu Giáo trình tin học đại cương (Trang 52 - 56)

Tải bản đầy đủ (PDF)

(96 trang)