Cho em hỏi là làm thế nào để nghĩ ra được những thuật toán trong lập trình ạ ….có phải là luyện tập ,làm bt nhiều thì sẽ hình thành đc tư duy không ạ …….Em cảm ơn .
Admin cho mình hỏi, khi mình khai báo biến trong switch case (ví dụ: case 6: int luythua = pow(a, b);), thì visual studio thông báo: “a declaration cannot have a label” – tức là không thể khai báo biến trong case, nhưng trong code mẫu ở bên trên lại khai báo có biến trong case ạ? Mình xin cảm ơn nhiều.
Cho mình hỏi thêm bài 4 – Cung hoàng đạo phần Do While
1. Code mẫu bài 4 có vấn đề ạ: ví dụ nhập ngày hoặc tháng là ký tự chữ thì nó sẽ chạy vô hạn, vậy có cách nào khắc phục ko ạ?
2. Nếu thay ‘int choice’ là ‘char choice’ nhằm mục đích là chọn Y/N để tiếp tục hay thoát, thì có vẻ nó bỏ qua phần nhập ký tự luôn ạ: Ví dụ:
do {
puts(“Ban co muon tiep tuc?\nNhan N/n de thoat chuong trinh\nNhan Y/y de tiep tuc”);
scanf_s(“%c”, &choice,1);
if (choice == ‘N’||choice == ‘n’) {
break;
}
//content
…} while (choice != ‘n’ || choice != ‘N’);
thì lúc này nó sẽ chạy từ ‘Ban co muon tiep tuc’ thẳng xuống //content mà bỏ qua phần bắt phải nhập ký tự ạ.
1. Các bài tập trong này giả định input đúng định dạng. Nếu muốn care hết các trường hợp bạn phải thêm code vào nhé.
2. Phần kí tự được bỏ qua bạn có thể tham khảo chương về Kí tự và chuỗi kí tự, sử dụng %*c để đọc bỏ kí tự thừa trước khi đọc choice(kiểu char)
A cho e hỏi tại bài tập thứ 2 sao e sử dụng cú pháp for (int i = 1, i <= t; i++) để khai báo số lần test thì nó lại báo lỗi Datatype.c:5:23: error: invalid '<=' at end of declaration; did you mean '='?
for (int i = 1, i <= t; i++) như thế này a nhỉ?
18 Comments
Cho em hỏi là làm thế nào để nghĩ ra được những thuật toán trong lập trình ạ ….có phải là luyện tập ,làm bt nhiều thì sẽ hình thành đc tư duy không ạ …….Em cảm ơn .
Chăm chỉ là có thôi e nhé
Đến phần này là thầy Triệu của chúng ta cho toàn bài tập siêu khó thôi 😂😂😂
Admin cho mình hỏi, khi mình khai báo biến trong switch case (ví dụ: case 6: int luythua = pow(a, b);), thì visual studio thông báo: “a declaration cannot have a label” – tức là không thể khai báo biến trong case, nhưng trong code mẫu ở bên trên lại khai báo có biến trong case ạ? Mình xin cảm ơn nhiều.
nếu muốn khai báo biến thì bạn sử dụng cặp ngoặc nhọn bao phần code của case tương ứng {nội dung của mỗi case}
case N: { // your code go here //... } ....
Cho mình hỏi thêm bài 4 – Cung hoàng đạo phần Do While
1. Code mẫu bài 4 có vấn đề ạ: ví dụ nhập ngày hoặc tháng là ký tự chữ thì nó sẽ chạy vô hạn, vậy có cách nào khắc phục ko ạ?
2. Nếu thay ‘int choice’ là ‘char choice’ nhằm mục đích là chọn Y/N để tiếp tục hay thoát, thì có vẻ nó bỏ qua phần nhập ký tự luôn ạ: Ví dụ:
do {
puts(“Ban co muon tiep tuc?\nNhan N/n de thoat chuong trinh\nNhan Y/y de tiep tuc”);
scanf_s(“%c”, &choice,1);
if (choice == ‘N’||choice == ‘n’) {
break;
}
//content
…} while (choice != ‘n’ || choice != ‘N’);
thì lúc này nó sẽ chạy từ ‘Ban co muon tiep tuc’ thẳng xuống //content mà bỏ qua phần bắt phải nhập ký tự ạ.
Mình xin cảm ơn nhiều.
1. Các bài tập trong này giả định input đúng định dạng. Nếu muốn care hết các trường hợp bạn phải thêm code vào nhé.
2. Phần kí tự được bỏ qua bạn có thể tham khảo chương về Kí tự và chuỗi kí tự, sử dụng %*c để đọc bỏ kí tự thừa trước khi đọc choice(kiểu char)
Mình đã hiểu. Xin cảm ơn thầy Triệu nhiều ạ.
anh ơi cho em hỏi sao bài 1 ta lại khai báo n=0 còn trong các bài học trước về for khai báo i=1 ạ, nếu thiếu cái này thì chương trình lỗi ngay
thầy ơi không có link bài do while
link đã sửa xong rồi e
cho em hỏi tại sao ban đầu phải gán n=0? Nếu không gán n=0 thì điều gì sẽ xảy ra?
e hãy thử không gán n xem điều gì xảy ra. việc gán bằng bao nhiêu là tùy mục đích sử dụng. thường khuyến nghị các giá trị số gán bằng 0
bài đó em thấy ko gán n = 0 thì nó vẫn chạy ạ! Nó chạy vẫn giống khi gán n = 0? Em vẫn chưa hiểu lắm, mong anh giải thích giúp em
Tới bài while rồi mà bài tập vẫn chưa vững thì làm như nào hả anh? Em stress quá.
e thực hành nhiều sẽ ok nhé. Mới học thì nên xác định cần 3-6 tháng mới bắt đầu tự tin, nhanh thì 1-2 tháng
A cho e hỏi tại bài tập thứ 2 sao e sử dụng cú pháp for (int i = 1, i <= t; i++) để khai báo số lần test thì nó lại báo lỗi Datatype.c:5:23: error: invalid '<=' at end of declaration; did you mean '='?
for (int i = 1, i <= t; i++) như thế này a nhỉ?
sau số 1 e dùng ; chứ không phải dấu phẩy nhé