Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: Thắc mắc về lệnh Printf và Scanf

  1. #1
    Ngày gia nhập
    07 2008
    Bài viết
    6

    Thumbs down Thắc mắc về lệnh Printf và Scanf

    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

  2. #2
    Ngày gia nhập
    04 2008
    Bài viết
    336

    %*.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

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Trích dẫn Nguyên bản được gửi bởi Mr.Phong Xem bài viết
    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
    cách hiệu quả nhất và đơn giản nhất để hiểu là bạn hãy làm nhiều bài tập vào. Còn để hiểu có thể đọc sách để hiểu.
    Tốt nhất là làm nhiều bài , sau đó quen tay , hiểu nhiều rồi quay laị nắm chặt lý thuyết.
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  4. #4
    Ngày gia nhập
    12 2007
    Bài viết
    54

    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

  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Trích dẫn Nguyên bản được gửi bởi thangit Xem bài viết
    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
    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 :

    PHP Code:
    printf("%f %f",x,n,y); 
    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 .....
    vậy nó sẽ viết x và 0 ra màn hình.

    Lần sau chú ý kĩ vào nha.
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  6. #6
    Ngày gia nhập
    12 2007
    Bài viết
    54

    Mặc định Thắc mắc về lệnh Printf và Scanf

    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

  7. #7
    Ngày gia nhập
    04 2008
    Nơi ở
    Phu yen
    Bài viết
    10

    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 !
    ----------------------------------------------

  8. #8
    Ngày gia nhập
    04 2008
    Bài viết
    336

    .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)
    làm tròn đấy bạn ở trên cũng đã làm tròn -47.335 -> -47.34 đấy ^^

  9. #9
    Ngày gia nhập
    01 2008
    Nơi ở
    UIT
    Bài viết
    129

    @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à đc Vì 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.

  10. #10
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Trích dẫn Nguyên bản được gửi bởi xinchigiao Xem bài viết
    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 !
    ----------------------------------------------

    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 ?????
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

Các đề tài tương tự

  1. Kỹ thuật C++ khác biệt giữa printf scanf và cin_cout
    Gửi bởi wayne_pham trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 07-11-2013, 03:10 PM
  2. Lập trình C Vấn đề sử dụng cout, cin; printf, scanf!!!
    Gửi bởi qsc269 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 05-05-2012, 07:39 PM
  3. bài tập về hàm printf với scanf này bị lỗi gì vậy.mọi người tìm giúp mình?thanks
    Gửi bởi khoaitayran2012 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 11
    Bài viết cuối: 12-09-2011, 09:46 AM
  4. Kỹ thuật C Vấn đề với scanf() và printf()
    Gửi bởi new trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 15-05-2010, 08:10 PM
  5. Lỗi cơ bản ! (scanf, printf)
    Gửi bởi huyvn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 06-04-2008, 07:25 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn