%*.2f là in ra kiểu float nhưng làm tròn đến 2 số
cout, cin là của c++ chứ ko phải của c nên bạn ít thấy là đúng rồi
tớ mới mày mò học C , nhưng các giáo trình mình có giải thích về 2 lệnh này khó hiểu quá, như câu lệnh sau ( đối với tớ TT):
int n=8
float x=25.5, y=-47.335
printf("\n%f\n%*.2f",x,n,y);
theo mình hiểu thì \n đầu là xuống dòng,%f chuyển dạng (vì kiểu của x là float) ,
còn cái đằng sau thì mình ko biết gì hết, mà kết quả ra là 25.500000 và -47.34
pác nào chỉ giùm em , vì em thấy lập trình hầu nhưa ai cũng xài 2 lệnh này, chẳng thấy ai ( quá ít) dùng lệnh cout và cin hết .
còn Scanf thì lúc khác hỏi, vì cái này chưa hiểu thì hỏi cái kia như không
%*.2f là in ra kiểu float nhưng làm tròn đến 2 số
cout, cin là của c++ chứ ko phải của c nên bạn ít thấy là đúng rồi
^_,^
Facebook : https://www.facebook.com/langmaninternet
Bùi Tấn Quang
có thể thay %*.2f bằng %0.2f kết quả vẫn đúng
cái này là lấy 2 chữ sỗ sau dấu phẩy
Rất mong được mọi người giúp đỡ :
Kiến thức mình biết chỉ là hạt cát trên sa mạc
thắngit nè . bạn nhầm rồi
[*][d .d] ký tự chuyển dạng
Việc có mặt của dấu * nói lên rằng trường ra vẫn được dò bình thường, nhưng giá trị của nó bị bỏ qua (không được lưu vào bộ nhớ với scanf hoặc ko in ra màn hình với printf ). Như vậy, đặc tả chứa dấu * sẽ không có đối tương ứng.
nếu bỏ dấu sao đi thì nó sẽ in ra giá trị của x và n:
nhìn đơn giản như sau :
khi đó nó sẽ in ra giá trị của x và n chứ ko phải x và y như ban đầu. Tuy nhiên n là int. %f của int sẽ ra 0 .....PHP Code:printf("%f %f",x,n,y);
vậy nó sẽ viết x và 0 ra màn hình.
Lần sau chú ý kĩ vào nha.
^_,^
Facebook : https://www.facebook.com/langmaninternet
Bùi Tấn Quang
xin lỗi nhé , cám ơn bạn giải thích, đúng là cái này tui cũng ko biết
Rất mong được mọi người giúp đỡ :
Kiến thức mình biết chỉ là hạt cát trên sa mạc
Bạn nè:
2 hàm cout và cin thì tiện dùng hơn còn scanf và printf thì lại sâu sắc hơn bởi lẽ 2 hàm này có thêm đặc tả kiểu dữ liệu (như của bạn là 1 ví dụ)
Bạn nói ko ai dùng 2 hàm này là không đúng. Chỉ những người thích sự đơn giản mới dùng cout và cin. Phần đông lại dùng scanf và printf. Còn các chuyên gia lại tự viết hàm nhập xuất riêng cho mình để tối ưu chương trình .
Về vấn đề của bạn:int n=8; float x=25.5, y=-47.335;
printf("\n%f\n%*.2f",x,n,y);
Như bạn nói \n: xuống dòng ;
%f: xuất ra x kiểu float ;
%*: (tạm thời ngắt như vậy) số kí tự ít nhất cần in ra ở phần tham số tương ứng .
.2f: 2 chữ số thập phân của biến float cần xuất. //lưu ý là lấy 2 chữ số chứ không phải làm tròn nhé (vd : 0.456 =>0.45)
=> %*.2f: bắt buộc phải xuất ra và chỉ xuất ra đúng 2 chữ số thập phân (vd:0.1 =>0.10)
----------------------------------------------
mình giải thích thế được ko ?
Nếu thấy sai hoặc chưa đầy đủ hay mắc lỗi gì xin góp ý !
Nếu thấy có ích xin cảm ơn 1 tiếng nha !
----------------------------------------------
làm tròn đấy bạn ở trên cũng đã làm tròn -47.335 -> -47.34 đấy ^^.2f: 2 chữ số thập phân của biến float cần xuất. //lưu ý là lấy 2 chữ số chứ không phải làm tròn nhé (vd : 0.456 =>0.45)
@xinchigiao: bác nói cout và cin là hàm thì ... toi rồi
@MrPhong: bạn không cần phải tìm hiểu quá sâu sắc về printf hay scanf đâu. Chỉ cần biết dùng mức cơ bản là đcVì có tìm hiểu quá sâu cũng chẳng ích gì
Đã được chỉnh sửa lần cuối bởi Hok_bik_zi : 03-08-2008 lúc 08:33 PM.
bạn à
%*: (tạm thời ngắt như vậy) số kí tự ít nhất cần in ra ở phần tham số tương ứng .
bạn hiểu sai kí tự * rồi.
bạn xem lại var list đi.
có 3 biến lần lượt là x,n,y
* làm bỏ qua n sang y.
chứ nếu ko có * thì nó sẽ in ra x và n.
chứ ko phải là số kí tự ít nhất cần in ra ở phần tham số tương ứng .
bạn có thể xem kĩ lại nha
@Hok_bik_zi : sao bạn lại nói vậy ? Cơ bản ko nắm vững thì vươn đến đâu?
Bạn muốn nhảy cao nhưng lại đang đứng trên 1 đống bùn thì nhảy cao nhảy xa làm sao được ?????
^_,^
Facebook : https://www.facebook.com/langmaninternet
Bùi Tấn Quang