Tác giả phạm hồng thái bài giảng ngôn ngữ LẬp trình c/C++



tải về 1.98 Mb.
trang6/55
Chuyển đổi dữ liệu07.07.2016
Kích1.98 Mb.
1   2   3   4   5   6   7   8   9   ...   55

Định dạng thông tin cần in ra màn hình


Một số định dạng đơn giản được chúng tôi trình bày trước ở đây. Các định dạng chi tiết và phức tạp hơn sẽ được trình bày trong các phần sau của giáo trình. Để sử dụng các định dạng này cần khai báo file nguyên mẫu ở đầu chương trình bằng chỉ thị #include .

endl: Tương đương với kí tự xuống dòng '\n'.

setw(n): Bình thường các giá trị được in ra bởi lệnh cout << sẽ thẳng theo lề trái với độ rộng phụ thuộc vào độ rộng của giá trị đó. Phương thức này qui định độ rộng dành để in ra các giá trị là n cột màn hình. Nếu n lớn hơn độ dài thực của giá trị, giá trị sẽ in ra theo lề phải, để trống phần thừa (dấu cách) ở trước.

setprecision(n): Chỉ định số chữ số của phần thập phân in ra là n. Số sẽ được làm tròn trước khi in ra.

setiosflags(ios::showpoint): Phương thức setprecision chỉ có tác dụng trên một dòng in. Để cố định các giá trị đã đặt cho mọi dòng in (cho đến khi đặt lại giá trị mới) ta sử dụng phương thức setiosflags(ios::showpoint).

Ví dụ sau minh hoạ cách sử dụng các phương thức trên.



Ví dụ 3 :

#include // để sử dụng cout <<

#include // để sử dụng các định dạng

#include // để sử dụng các hàm clrscr() và getch()

void main()

{

clrscr(); // xoá màn hình



cout << "CHI TIÊU" << endl << "=======" << endl ;

cout << setiosflags(ios::showpoint) << setprecision(2) ;

cout << "Sách vở" << setw(20) << 123.456 << endl;

cout << "Thức ăn" << setw(20) << 2453.6 << endl;

cout << "Quần áo lạnh" << setw(15) << 3200.0 << endl;

getch(); // tạm dừng (để xem kết quả)

return ; // kết thúc thực hiện hàm main()

}

Chương trình này khi chạy sẽ in ra bảng sau:



CHI TIÊU

========





Sách vở

123.46

Thức ăn

2453.60

Quần áo lạnh

3200.00

Chú ý: toán tử nhập >> chủ yếu làm việc với dữ liệu kiểu số. Để nhập kí tự hoặc xâu kí tự, C++ cung cấp các phương thức (hàm) sau:

cin.get(c): cho phép nhập một kí tự vào biến kí tự c,

cin.getline(s,n): cho phép nhập tối đa n-1 kí tự vào xâu s.

các hàm trên khi thực hiện sẽ lấy các kí tự còn lại trong bộ nhớ đệm (của lần nhập trước) để gán cho c hoặc s. Do toán tử cin >> x sẽ để lại kí tự xuống dòng trong bộ đệm nên kí tự này sẽ làm trôi các lệnh sau đó như cin.get(c), cin.getline(s,n) (máy không dừng để nhập cho c hoặc s). Vì vậy trước khi sử dụng các phương thức cin.get(c) hoặc cin.getline(s,n) nên sử dụng phương thức cin.ignore(1) để lấy ra kí tự xuống dòng còn sót lại trong bộ đệm. Ví dụ đoạn lệnh sau cho phép nhập một số nguyên x (bằng toán tử >>) và một kí tự c (bằng phương thức cin.get(c)):

int x;

char c;


cin >> x; cin.ignore(1);

cin.get(c);



Vào/ra trong C


Trong phần trên chúng tôi đã trình bày 2 toán tử vào/ra và một số phương thức, hàm nhập và định dạng trong C++. Phần này chúng tôi trình bày các câu lênh nhập xuất theo khuôn dạng cũ trong C. Hiển nhiên các câu lệnh này vẫn dùng được trong chương trình viết bằng C++, tuy nhiên chỉ nên sử dụng hoặc các câu lệnh của C++ hoặc của C, không nên dùng lẫn lộn cả hai vì dễ gây nhầm lẫn. Do đó mục này chỉ có giá trị tham khảo để bạn đọc có thể hiểu được các câu lệnh vào/ra trong các chương trình viết theo NNLT C cũ.

In kết quả ra màn hình


Để in các giá trị bt_1, bt_2, …, bt_n ra màn hình theo một khuôn dạng mong muốn ta có thể sử dụng câu lệnh sau đây:

printf(dòng định dạng, bt_1, bt_2, ..., bt_n) ;

trong đó dòng định dạng là một dãy kí tự đặt trong cặp dấu nháy kép (“”) qui định khuôn dạng cần in của các giá trị bt_1, bt_2, …, bt_n. Các bt_i có thể là các hằng, biến hay các biểu thức tính toán. Câu lệnh trên sẽ in giá trị của các bt_i này theo thứ tự xuất hiện của chúng và theo qui định được cho trong dòng định dạng.

Ví dụ, giả sử x = 4, câu lệnh:

printf(“%d %0.2f”, 3, x + 1) ;

sẽ in các số 3 và 5.00 ra màn hình, trong đó 3 được in dưới dạng số nguyên (được qui định bởi “%d”) và x + 1 (có giá trị là 5) được in dưới dạng số thực với 2 số lẻ thập phân (được qui định bởi “%0.2f”). Cụ thể, các kí tự đi sau kí hiệu % dùng để định dạng việc in gồm có:

d in số nguyên dưới dạng hệ thập phân

o in số nguyên dạng hệ 8

x, X in số nguyên dạng hệ 16

u in số nguyên dạng không dấu

c in kí tự

s in xâu kí tự

e, E in số thực dạng dấu phẩy động

f in số thực dạng dấu phẩy tĩnh

Các kí tự trên phải đi sau dấu %. Các kí tự nằm trong dòng định dạng nếu không đi sau % thì sẽ được in ra màn hình. Muốn in % phải viết 2 lần (tức %%).

Ví dụ câu lệnh: printf(“Tỉ lệ học sinh giỏi: %0.2f %%”, 32.486) ;

sẽ in câu “Tỉ lệ học sinh giỏi: “, tiếp theo sẽ in số 32.486 được làm tròn đến 2 số lẻ thập phân lấp vào vị trí của “%0.2f”, và cuối cùng sẽ in dấu “%” (do có %% trong dòng định dạng). Câu được in ra màn hình sẽ là:

Tỉ lệ học sinh giỏi: 32.49%

Chú ý: Mỗi bt_i cần in phải có một định dạng tương ứng trong dòng định dạng. Ví dụ câu lệnh trên cũng có thể viết:

printf(“%s %0.2f” , “Tỉ lệ học sinh giỏi: “, 32.486);

trong câu lệnh này có 2 biểu thức cần in. Biểu thức thứ nhất là xâu kí tự “Tỉ lệ học sinh giỏi:” được in với khuôn dạng %s (in xâu kí tự) và biểu thức thứ hai là 32.486 được in với khuôn dạng %0.2f (in số thực với 2 số lẻ phần thập phân).

Nếu giữa kí tự % và kí tự định dạng có số biểu thị độ rộng cần in thì giá trị in ra sẽ được gióng cột sang lề phải, để trống các dấu cách phía trước. Nếu độ rộng âm (thêm dấu trừ - phía trước) sẽ gióng cột sang lề trái. Nếu không có độ rộng hoặc độ rộng bằng 0 (ví dụ %0.2f) thì độ rộng được tự điều chỉnh đúng bằng độ rộng của giá trị cần in.

Dấu + trước độ rộng để in giá trị số kèm theo dấu (dương hoặc âm)

Trước các định dạng số cần thêm kí tự l (ví dụ ld, lf) khi in số nguyên dài long hoặc số thực với độ chính xác gấp đôi double.



Ví dụ 4 :

main()


{

int i = 2, j = 3 ;

printf(“Chương trình tính tổng 2 số nguyên:\ni + j = %d”, i+j);

}

sẽ in ra:



Chương trình tính tổng 2 số nguyên:

i + j = 5.



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


scanf(dòng định dạng, biến_1, biến_2, ..., biến_n) ;

Lệnh này cho phép nhập dữ liệu vào cho các biến biến_1, …, biến_n. Trong đó dòng định dạng chứa các định dạng về kiểu biến (nguyên, thực, kí tự …) được viết như trong mô tả câu lệnh printf. Các biến được viết dưới dạng địa chỉ của chúng tức có dấu & trước mỗi tên biến. Ví dụ câu lệnh:

scanf(“%d %f %ld”, &x, &y, &z) ;

cho phép nhập giá trị cho các biến x, y, z trong đó x là biến nguyên, y là biến thực và z là biến nguyên dài (long). Câu lệnh:

scanf(“%2d %f %lf %3s”, &i, &x, &d, s);

cho phép nhập giá trị cho các biến i, x, d, s, trong đó i là biến nguyên có 2 chữ số, f là biến thực (độ dài tùy ý), d là biến nguyên dài và s là xâu kí tự có 3 kí tự. Giả sử NSD nhập vào dãy dữ liệu: 12345 67abcd ¿ thì các biến trên sẽ được gán các giá trị như sau: i = 12, x = 345, d = 67 và s = “abc”. Kí tự d và dấu enter (¿) sẽ được lưu lại trong bộ nhớ và tự động gán cho các biến của lần nhập sau.

Cuối cùng, chương trình trong ví dụ 3 được viết lại với printf() và scanf() như sau:
Ví dụ 5 :

#include // để sử dụng các hàm printf() và scanf()

#include // để sử dụng các hàm clrscr() và getch()

void main()

{

clrscr(); // xoá màn hình



printf("CHI TIÊU\n=======\n") ;

printf("Sách vở %20.2f\n" , 123.456) ;

printf("Thức ăn %20.2f\n" , 2453.6) ;

printf(“Quần áo lạnh %15.2f\n" , 3200.0) ;

getch(); // tạm dừng (để xem kết quả)

return ; // kết thúc thực hiện hàm main()

}
BÀI TẬP

Những tên gọi nào sau đây là hợp lệ:

- x - 123variabe - tin_hoc - toan tin - so-dem

- RADIUS - one.0 - number# - Radius - nam2000

Bạn hãy thử viết một chương trình ngắn nhất có thể được.

Tìm các lỗi cú pháp trong chương trình sau:

#include (iostream.h)

void main(); / Giải phương trình bậc 1

{

cout << 'Day la chương trình: Gptb1.\nXin chao cac ban';



getch();

}

Viết chương trình in nội dung một bài thơ nào đó.



Viết chương trình in ra 4 dòng, 2 cột gồm các số sau và gióng cột:

- thẳng theo lề trái

0.63

64.1

- thẳng theo lề phải

12.78

-11.678

- thẳng theo dấu chấm thập phân

-124. 6

59.002




65.7

-1200.654

Hãy viết và chạy các chương trình trong các ví dụ 3, 5.

Chương trình sau khai báo 5 biến kí tự a, b, c, d, e và một biến số nam. Hãy điền thêm các câu lệnh vào các dòng … để chương trình thực hiện nhiệm vụ sau:

Nhập giá trị cho biến nam

Nhập giá trị cho các biến kí tự a, b, c, d, e.

In ra màn hình dòng chữ được ghép bởi 5 kí tự đã nhập và chữ "năm" sau đó in số đã nhập (nam). Ví dụ nếu 5 chữ cái đã nhập là 'H', 'A', 'N', 'O', 'I' và nam được nhap là 2000, thì màn hình in ra dòng chữ: HANOI năm 2000.

Nhập chương trình đã sửa vào máy và chạy để kiểm tra kết quả.

#include

#include

main()

{

int nam;



char a, b, c, d, e;

clrscr();

cin >> nam ;

… ;

cin.get(a); cin.get(b); cin.get(c); … ; … ;

// in kết quả

cout << a << << << << << " nam " << ;

getch();

}
CHƯƠNG 2



kiỂu dỮ liỆU, BIỂU THỨC và câu lỆNH

Kiểu dữ liệu đơn giản

Hằng - khai báo và sử dụng hằng

Biến - khai báo và sử dụng biến

Phép toán, biểu thức và câu lệnh

Thư viện các hàm toán học



1   2   3   4   5   6   7   8   9   ...   55


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2016
được sử dụng cho việc quản lý

    Quê hương