Thứ Sáu, 1 tháng 1, 2016

Diễn đàn C

Thông Báo - Bài tập rèn luyện C tuần 2. | Ksec Club

Thông Báo Bài tập rèn luyện C tuần 2.

Thảo luận trong 'C/C++' bắt đầu bởi koolkiizz, 3/3/15.

  1. koolkiizz Moderator

    Chào tất cả các bạn, sau tuần đầu tiên rèn luyện lập trình C, đã có rất nhiều bạn làm bài rất tốt và hầu như chỉ mắc lỗi nho nhỏ:p. Tiếp theo, chúng ta sẽ đến tuần rèn luyện C thứ hai. Mong tất cả các bạn hoàn thành bài tập một các xuất sắc. :D Bài tập tuần này có phần khó hơn tuần trước một chút chút :D

    I. Bài tập:
    1.
    Viết chương trình nhập vào một số nguyên dương, in ra màn hình số đó là chẵn hay lẻ.
    2. Viết chương trình nhập vào 4 số nguyên, in ra màn hình số lớn nhất và số nhỏ nhất.
    3. Viết chương trình giải phương trình bậc hai: ax2 + bx + c = 0, với a, b, c nhập vào từ bàn phím.
    4. Viết chương trình nhập vào giờ, phút, giây (hh:mm:ss), sau đó cộng thêm số giây nhập vào rồi in ra màn hình thời gian (hh:mm:ss).
    5. Viết chương trình nhập vào tháng, in ra tháng đó có bao nhiêu ngày.
    6. Viết chương trình trò chơi one-two-three ra cái gì ra cái này với điều kiện:
    - Búa (B) thắng Kéo, thua Giấy
    - Kéo (K) thắng Giấy, thua Búa
    - Giấy (G) thắng Búa, thua Kéo
    7. Viết chương trình xác định biến ký tự color rồi in ra thông báo
    - RED, nếu color = 'R' hoặc color = 'r'
    - GREEN, nếu color = 'G' hoặc color = 'g'
    - BLUE, nếu color = 'B' hoặc color = 'b'
    - BLACK, nếu color có giá trị khác
    8. Viết chương trình nhập vào 2 số x, y và 1 trong 4 toán tử +, -, *, /. Nếu là + thì in ra kết quả x + y, nếu là – thì in ra x – y, nếu là * thì in ra x * y, nếu là / thì in ra x / y (nếu y = 0 thì thông báo không chia được).
    9. Viết chương trình nhập vào điểm 3 môn thi: Toán, Lý, Hóa của học sinh. Nếu tổng điểm >= 15 và không có môn nào dưới 4 thì in kết quả đậu. Nếu đậu mà các môn đều lớn hơn 5 thì in ra lời phê "Học đều các môn", ngược lại in ra "Học chưa đều các môn", các trường hợp khác là "Thi hỏng".
    10. Viết chương trình nhập vào ngày tháng năm (dd:mm:yy), cho biết đó là thứ mấy trong tuần.
    11. Viết chương trình nhập số giờ làm và lương giờ rồi tính số tiền lương tổng cộng. Nếu số giờ làm lớn hơn 40 thì những giờ làm dôi ra được tính 1,5 lần.
    12. Viết chương trình nhập vào 3 giá trị nguyên dương a, b, c. Kiểm tra xem a, b, c có phải là 3 cạnh của tam giác không? Nếu là 3 cạnh của tam giác thì kiểm tra xem tam giác đó là tam giác gì: thường, vuông, cân, vuông cân, đều. Tính diện tích của tam giác.
    13. Viết chương trình tính tiền điện gồm các khoảng sau:
    - Tiền thuê bao điện kế: 1000đ/tháng
    - Định mức sử dụng điện cho mỗi hộ là: 50 KW với giá 230đ/KW
    - Nếu phần vượt định mức <= 50KW thì tính giá 480đ/KW
    - Nếu 50KW < phần vượt định mức < 100KW thì tính giá 700đ/KW
    - Nếu phần vượt định mức <= 100KW thì tính giá 900đ/KW Chỉ số mới và cũ được nhập vào từ bàn phím
    - In ra màn hình chỉ số cũ, chỉ số mới, tiền trả định mức, tiền trả vượt định mức, tổng tiền phải trả.
    14. Viết chương trình nhập vào ngày/tháng/năm, sau đó in ra màn hình ngày liền trước ngày đó và ngày liền sau ngày đó.

    II. Hình thức nộp bài.
    Các bạn làm bài dưới hình thức word (phần mềm Microsoft word) rồi sau đó đổi sang định dạng PDF rồi up trực tiếp lên topic này.

    III. Thời hạn nộp bài.
    Hạn cuối nộp bài là ngày 14/3/2015.

    Chúc các bạn thành công! :D
  2. Nguyễn Văn Minh

    Nguyễn Văn Minh Rèn Luyện

    Bài viết:
    10
    "Thích" đã nhận:
    3
    ad xem giúp e với ạ ;)
    e cảm ơn!!!:D:p;)

    Attached Files:

  3. Nguyễn Hồng Hải

    Nguyễn Hồng Hải Rèn Luyện

    Bài viết:
    15
    "Thích" đã nhận:
    5
    anh ơi hình như lộn số ngày 30 với 31 rồi kìa o_O
  4. Kevin Kien

    Kevin Kien Administrator Staff Member

    Bài viết:
    147
    "Thích" đã nhận:
    83
    - Tháng 1,3,5,7 có 31 ngày em nhé. Em bị lộn nó ở bài 14.
    - Nhìn chung thì các thuật toán của em khá tốt
    - Và anh khuyên em là nên code nhiều hơn nữa và hiện tại đang có 1 cái nền tảng lập trình khá tốt vì vậy hãy cố gắng thêm nữa nhé em ;)
    Last edited: 6/3/15
  5. great_bn

    great_bn Moderator Staff Member

    Bài viết:
    114
    "Thích" đã nhận:
    27
    Đến từ:
    Bắc Ninh
    - bài 3 giải phương trình bạn nên thêm trường hợp a=0 nhé. vẫn có nghiệm :)
    - bài 4: số giây nhập vào có thể lớn hơn 60 nhé bạn. khi đó ta phải tính ra bao nhiêu giờ, phút,giây để cộng vào nhé
    chỉ có 2 lỗi nhỏ đó còn tất cả đều good
  6. Kevin Kien

    Kevin Kien Administrator Staff Member

    Bài viết:
    147
    "Thích" đã nhận:
    83
    - Bài 3 có trường hợp a=0 mà em.

    Code:
    if(a==0){
    printf("\na phai la so khac 0!!!Nhap Lai!!!");
    goto nhapLai;
    Nguyễn Văn Minh likes this.
  7. Nguyễn Hồng Hải

    Nguyễn Hồng Hải Rèn Luyện

    Bài viết:
    15
    "Thích" đã nhận:
    5
    Bài 14 của anh Minh em thấy ngày trước toàn ra 0 o_O
  8. Nguyễn Văn Minh

    Nguyễn Văn Minh Rèn Luyện

    Bài viết:
    10
    "Thích" đã nhận:
    3
    Làm gì có đâu chú??? Chú thử lại xem nào =D
    Nguyễn Hồng Hải likes this.
  9. Nguyễn Văn Minh

    Nguyễn Văn Minh Rèn Luyện

    Bài viết:
    10
    "Thích" đã nhận:
    3
    Vâng! e vừa xem lại oy ! e cám ơn !!!;)
  10. Nguyễn Hồng Hải

    Nguyễn Hồng Hải Rèn Luyện

    Bài viết:
    15
    "Thích" đã nhận:
    5
    quái lạ em thử lại rồi nếu ngày là 1 thì toàn ra ngày trước là 0 còn ngày 31 thì toàn bắt phải nhập lại :confused:
    em dùng dev C anh dùng phần mềm nào?
    Last edited: 7/3/15
    Nguyễn Văn Minh likes this.
  11. Phạm Xuân Đức

    Phạm Xuân Đức Rèn Luyện

    Bài viết:
    6
    "Thích" đã nhận:
    0
    thời gian này em bận mấy việc nên có lẽ sẽ không hoàn thành được, em làm xong bài nào em sẽ up bài đó. mong các a thông cảm

    Attached Files:

  12. koolkiizz

    koolkiizz Moderator Staff Member

    Bài viết:
    124
    "Thích" đã nhận:
    37
    Sau khi xem bài làm của bạn thì mình có một số nhận xét như sau:
    Thứ nhất, về trình bày, bạn trình bày code đẹp, hợp lí, dễ nhìn.
    Thứ hai, về thời gian, bạn là người làm xong đầu tiên, rất sớm, đó là một điều đáng khen ngợi.
    Thứ ba, về thuật toán cũng như phần chi tiết bài tập, bạn làm rất tốt, tuy nhiên cũng có một số hạn chế như sau:
    • Bài thứ 3, bài về giải phương trình bậc hai, không biết bạn rảnh quá sao mà lại đi viết cái hàm delTa? Tự nhiên làm cho code mình dài thêm 1 đoạn, trong khi dùng vài cái if là có thể giải quyết. Riêng cái biến delta bạn đã tính đến 2 lần. Bài làm chưa tối ưu, nếu đi thi sẽ bị trừ mất 1 điểm.
    • Như các bạn trên đã nhận xét, bài 4, số giây nhập thêm vào có thể lớn hơn 60, tùy ý.
    • Bài 5, về phần các tháng có 30 và 31 ngày, bạn bị ngược, còn tháng 2, bạn chỉ ghi một dòng là có 29 hoặc 28 ngày. Vậy nếu người dùng không biết đó là năm nhuận hay không thì họ vẫn chưa đạt mục đích, và, chương trình của bạn bị xóa bỏ. :mad:
    • Bài 10, thuật toán của bạn có phần thiếu sót. Trong bài của bạn có tạo một mảng chứa số ngày của các tháng trong năm, vậy nếu năm nhuận thì sao??
    • Bài 12, kiểm tra tam giác. Bạn để ý chỗ 2 dòng if là tam giác đều và tam giác cân. Nếu bạn nhập vào 1 tam giác đều, nó sẽ in ra 2 thông báo là tam giác đều và tam giác cân bởi vì cả 2 đều thỏa mãn. Nên dùng một cấu trúc if else lồng cho 2 trường hợp này. Và bạn chưa đọc kĩ đề bài, phần tính diện tích chưa có. Vậy là bị mất nửa số điểm cho bài này.
    • Bài 14, bài này sai. Thứ nhất, cách bạn tính số ngày, ngày < số ngày thì bạn trừ ngày đi 1, vậy nếu người dùng nhập 1 vào thì ngày đó sẽ là 0 => sai, và trong trường hợp này kéo theo cả tháng và năm đều sai. Tính số ngày nếu ngày = số ngày, bạn + 1 cho ngày sau mà không thấy + thêm tháng? Bài này bạn cần phải sửa nhiều :D
    [​IMG][/IMG] [​IMG]
    Một lần nữa xin hoan nghênh tinh thần học tập của bạn. Mong bạn tiếp tục phát huy!
    koolkiizz​
    Nguyễn Văn Minh likes this.
  13. Nguyễn Văn Minh

    Nguyễn Văn Minh Rèn Luyện

    Bài viết:
    10
    "Thích" đã nhận:
    3
    vâng e cám ơn a ạ! ;)
  14. Nguyễn Khắc Dương

    Nguyễn Khắc Dương Rèn Luyện

    Bài viết:
    13
    "Thích" đã nhận:
    1
    Các a sửa hộ e ạ :p:p:p:p. code e vẫn dài qá :(

    Attached Files:

  15. koolkiizz

    koolkiizz Moderator Staff Member

    Bài viết:
    124
    "Thích" đã nhận:
    37
    sửa đi rồi up những bài nào cần sửa lên đây, chỉ up code thôi ko up file nha
  16. koolkiizz

    koolkiizz Moderator Staff Member

    Bài viết:
    124
    "Thích" đã nhận:
    37
    Bài làm của em tốt, trình bày code đẹp, viết có thêm chú thích dễ hiểu.
    Tuy nhiên, em còn mắc một số lỗi như sau:
    • Thứ nhất, về phần nhãn, không cần mở đóng khối lệnh và tên biến không nên trùng với tên nhãn để tránh bị nhầm.
    • Bài 4. Theo anh nghĩ thì em hiểu đề bài như vậy cũng đúng :D cho nên vẫn chấp nhận thuật toán đó của em. Nhưng lỗi của em là có kiểm tra tính đúng đắn của số phút, số giây nhập vào nhưng lại không kiểm tra tính đúng đắn của số giờ :confused: số giờ phải nhỏ hơn hoặc bằng 24. Và ở phần cuối, chỗ if(phut>=60), tại sao em lại cho số phút = 0?
    • Bài 5. Điều kiện của tháng là >= 12. Cũng giống như bài của bạn Minh, tháng 2 cần kiểm tra năm nhuận rồi mới đưa ra 28 hoặc 29 ngày.
    • Bài 12, trường hợp của tam giác đều là trường hợp con của tam giác cân, vậy nên cả 2 trường hợp đó cần phải nằm trong cùng 1 if. Và, vẫn chưa có phần tính diện tích tam giác.
    Nói chung, bài làm của em khá tốt, mắc ít lỗi. Mau chóng chỉnh sửa code của mình.
  17. Nguyễn Khắc Dương

    Nguyễn Khắc Dương Rèn Luyện

    Bài viết:
    13
    "Thích" đã nhận:
    1
    thanks a e sẽ xem lại :p:p:p
  18. Nguyễn Hồng Hải

    Nguyễn Hồng Hải Rèn Luyện

    Bài viết:
    15
    "Thích" đã nhận:
    5
    Em nộp bài ạ!

    Attached Files:

    • BT 2.pdf
      File size:
      155 KB
      Lượt xem:
      50
  19. Trần Bá Trình

    Trần Bá Trình Rèn Luyện

    Bài viết:
    4
    "Thích" đã nhận:
    0
    các huynh,đệ xem cho đệ với ạ.
    còn bài 10 nữa đệ chưa làm, khi nào làm đệ gửi sau. hihi.
    cảm ơn cả nhà ạ.

    Attached Files:

    Last edited: 11/3/15
  20. Nguyễn Khắc Dương

    Nguyễn Khắc Dương Rèn Luyện

    Bài viết:
    13
    "Thích" đã nhận:
    1
    a ơi bài 5 vì ctrinh chỉ yêu cầu nhập tháng thì sao có thể biết đc năm đó có nhuận hay ko ạ
    bài 4: theo e thì số phút nếu đã bằng 60 rồi thì sẽ cho giờ tăng thêm 1 và khi đó thì số phút sẽ là 0.
    bài 12: thì .... :p:p:p:p e thiếu cái S tam giác e bổ sung ngay ạ

Share This Page

0 nhận xét: