C. Các Hàm định Dạng In Dữ Liệu Khác Trong Thư Viện Iomanip - 123doc

  1. Trang chủ >
  2. Công Nghệ Thông Tin >
  3. Kỹ thuật lập trình >
c. Các hàm định dạng in dữ liệu khác trong thư viện iomanip

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (771.33 KB, 20 trang )

setw(n)setprecision(n)setfill(c)setiosflags(l)resetiosflags(l)//////////tươngtươngtươngtươngtươngtựtựtựtựtựcout.width(n)cout.precision(n)cout.fill(c)cout.setf(l)cout.unsetf(l)1.5. Lệnh xuất / nhập chuẩn của CPhần này trình bày các câu lệnh xuất/nhập chuẩn theo khuôn dạng cũ của ngôn ngữ C. Hiểnnhiê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ụnghoặ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 đóchỉ khi nào thực sự cần thiết bạn hãy dùng lẫn cả hai cách này.Để dùng các lệnh này bạn cần khai báo #include ở đầu chương trình.1.5.1. Hàm printf xuất dữ liệu 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ôndạ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ứctí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 địnhbở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 địnhbở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ó:Ký hiệud / iuoxXfFeEgGaAcsp%In raSố nguyên hệ 10 có dấuSố nguyên hệ 10 không dấu (số dương)Số nguyên hệ 8 không dấuSố nguyên hệ 16 không dấu in thườngSố nguyên hệ 16 không dấu in hoaSố thực hệ 10 in thườngSố thực hệ 10 in hoaSố thực hệ 10 in thường kiểu định trịSố thực hệ 10 in hoa kiểu định trị vàDạng ngắn gọn của: %e or %fDạng ngắn gọn của: %E or %FSố thực hệ 16 in thường kiểu định trịSố thực hệ 16 in hoa kiểu định trị vàKý tựXâu ký tựCon trỏ địa chỉIn ra ký hiệu %Ví dụvà số mũsố mũvà số mũsố mũ39272356107fa7FA392.65392.653.9265e+23.9265E+2392.65392.65-0xc.90fep-2-0XC.90FEP-2asampleb8000000%Các kí tự định dạng trên phải đi sau dấu %. Các kí tự nằm trong dòng định dạng nếu không đisau % thì sẽ được in ra màn hình. Muốn in ký hiệu % phải viết 2 lần (tức là %%). 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ânlấ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 đượcin 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âulệ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óngcộ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 ký tự định dạng số cần thêm kí hiệu chỉ định độ dài khi in số đó. Cụ thể:Ký hiệuchỉ địnhđộ dàid i(none)Hhintsigned charHshort intLlong intLlJZTlong longintintmax_tsize_tptrdiff_tLKý hiệu định dạngf F eu o x XE g Gcspna Aunsigned intdouble intchar*void* int*unsigned charsigned char*unsigned shortshort int*intunsigned longwint_t wchar_t*long int*intunsigned longlong longlong intint*uintmax_tintmax_t*size_tsize_t*ptrdiff_tptrdiff_t*longdoubleVí dụ 1.6 :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 1.5.2. Các hàm putchar và puts xuất ký tự và chuỗi ký tự ra màn hìnhTương tự printf, các hàm putchar, puts cũng in dữ liệu ra màn hình. Tuy nhiên chúng chỉ incác ký tự và không yêu cầu nêu khuôn dạng. Nhằm đơn giản hóa việc in ký tự ra màn hình.1) Hàm putchar in ký tự ra màn hìnhDạng hàm: int putchar(int n)Ý nghĩa: In ký tự có mã m = n % 256 ra màn hình. Ví dụ: putchar(65) sẽ in ra chữ A. Nếuthành công, hàm trả lại chính giá trị n, ngược lại trả ra giá trị EOF.2) Hàm puts in xâu ký tự ra màn hìnhDạng hàm: int puts(const char *s)Ý nghĩa: In xâu ký tự s ra màn hình. Nếu thành công, hàm trả lại chính ký tự cuối cùng đượcin ra, ngược lại trả ra giá trị EOF. Ví dụ: puts("Hoang Van Thu");1.5.3. Hàm scanf nhập dữ liệu từ bàn phímMẫu lệnh: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 địnhdạ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ệnhprintf. 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ụ: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ếnnguyê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ếnthự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 67 abcd ↵ 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ầnnhập sau.Cuối cùng, chương trình trong ví dụ 1.4 được viết lại với printf() và scanf() như sau:Ví dụ 1.7 :#include // sử dụng các hàm printf() và scanf()int main(){printf("CHI TIEU\n=======\n") ;printf("Sach vo %20.2f\n" , 123.456) ;printf("Thuc an %20.2f\n" , 2453.6) ;printf("Quan ao lanh %15.2f\n" , 3200.0) ;return 0;}1.5.4. Các hàm getchar, gets nhập ký tự từ bàn phímTương tự hàm scanf, các hàm getchar và gets cũng dùng để nhập dữ liệu từ bàn phím, nhưngchỉ nhập ký tự và chuỗi ký tự từ bàn phím mà không yêu cầu khuôn dạng. 1) Hàm getchar nhập một ký tự từ bàn phímDạng hàm: int getchar(void)Ý nghĩa: Trả về ký tự nhập từ bàn phím.Chú ý 1: Giả sử thực hiện câu lệnh ch=getchar() ta bấm phím A↵ thì ch='A' thì ký tự ↵ ('\n')vẫn còn lưu trong bộ đệm bàn phím nên có thể làm trôi các hàm getchar() hoặc gets() sau đó.Chú ý 2: Nếu trước lệnh getchar() là lệnh scanf() thì lệnh này cũng để lại ký tự '\n' trong bộđệm bàn phím và sẽ làm trôi lệnh getchar(). Để khắc phục điều này bạn có thể thêm vào đặc tả %*cvào cuối chuỗi điều khiển của scanf() như ví dụ sau:int t;printf("\nTuoi: "); scanf("%d%*c",&t); // Khử '\n' trong bộ đệm bàn phím2) Hàm gets nhập chuỗi ký tự từ bàn phímDạng hàm: char *gets(char *s);Ý nghĩa: Nhận về các ký tự nhập từ bàn phím cho đến khi gặp '\n'. Ký tự '\n' bị loại khỏi bộđệm bàn phím nhưng không được thêm vào chuỗi. Chuỗi được bổ sung thêm ký tự kết thúc chuỗi'\0' và hàm trả về địa chỉ lưu chuỗi, đồng thời gán địa chỉ chuỗi cho biến s.3) Hàm fflush(stdin) xóa sạch bộ đệm bàn phímHàm có nhiệm vụ xóa sạch các ký tự còn lưu trong bộ đệm bàn phím được nhập trước đó đểtránh hiện tượng trôi các lệnh nhập dữ liệu sau đó.1.6. Câu hỏi và Bài tập1. Những tên gọi nào sau đây là hợp lệ:A. xE. so-demI. RadiusB. 123variabeF. RADIUSJ. nam2000C. tin_hocG. one.0D. toan tinH. number#2. Khi chương trình thực hiện xong sẽ trả về hệ thống giá trị nào dưới đây?A. -1B. 1C. 0D. Không có giá trị nào.2. Hàm nào luôn phải có trong các chương trình C++?A. start()B. system()C. main()D. program()3. Cặp ký hiệu nào cho biết bắt đầu và kết thúc khối lệnh?A. { }B. -> and

Từ khóa » Thư Viện Iomanip Trong C++