Trang 2 trên tổng số 20 Đầu tiênĐầu tiên 123412... Cuối cùngCuối cùng
Từ 11 tới 20 trên tổng số 198 kết quả

Đề tài: Đố vui về C++, giúp các bạn học C++ tốt hơn

  1. #11
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Mặc định Đố vui về C++, giúp các bạn học C++ tốt hơn

    Cho đoạn code này:
    Code:
    if (<test>) {
        <statement(s)>;
    }
    if (<test>) {
        <statement(s)>;
    }
    if (<test>) {
        <statement(s)>;
    }
    Ngữ nghĩa của đoạn code này có giống với 2 đoạn code trên ko?

  2. #12
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Phương thức dưới đây sẽ bị lỗi gì?
    Code:
    int min(int a, int b) {
        if (a > b) {
            return b;
        }
    }
    Code:
    int min(int a, int b) {
        if (a > b) {
            return b;
        } else if (a <= b) {
            return a;
        }
    }
    Đã được chỉnh sửa lần cuối bởi huynguyen : 30-09-2007 lúc 04:18 PM.

  3. #13
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Trích dẫn Nguyên bản được gửi bởi huynguyen Xem bài viết
    Code:
    if (<test>) {
        <statement(s)>;
    } else if (<test>) {
        <statement(s)>;
    } else {
        <statement(s)>;
    }
    Code:
    if (<test>) {
        <statement(s)>;
    } else if (<test>) {
        <statement(s)>;
    } else if  (<test>) {
        <statement(s)>;
    }
    Em xin giải thích con này :

    con ở trên kết thúc với else : thì nó sẽ thực hiện các trường hợp còn lại
    con ở dưới kết thức với else if : tức là chỉ xử lý 1 trường hợp thỏa mãn.
    Để giải thích rõ ràng hơn : em xin đưa ra một ví dụ :

    Code:
    if ( c == 'a' ) { ... } 
    else if ( c == 'b' ) { .... } 
    else { .... }   <--- ở đây nó xử lý tất cả các trường hợp c không phải là kí tưh  'a' và 'b'
    tuy nhiên nếu dùng kết thúc else if :
    Code:
    if ( c == 'a' ) { ... } 
    else if ( c == 'b' ) { .... } 
    else if ( ..<điều kiện đặt ở đây>... ) { .... }
    Ta có thể tương đương cái ở dưới với cái ở trên bằng điều kiện
    Code:
    else if ( c != 'a' && c != 'b' ) { ... }
    nhưng nếu điều kiện trong else if ở trên khác đi thì ta sẽ có điều kiện hoàn toàn khác.

    ^^
    None!

  4. #14
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Trích dẫn Nguyên bản được gửi bởi huynguyen Xem bài viết
    Cho đoạn code này:
    Code:
    if (<test>) {
        <statement(s)>;
    }
    if (<test>) {
        <statement(s)>;
    }
    if (<test>) {
        <statement(s)>;
    }
    Ngữ nghĩa của đoạn code này có giống với 2 đoạn code trên ko?
    Hoàn toàn khác 2 đoạn code ở trên

    Vì 2 đoạn code ở trên là rẽ nhánh, và chỉ xử lý nhánh thỏa mãn điều kiện < xử lý 1 cái thỏa mãn >
    Còn code này thì nó sẽ xử lý tuần tự 3 điều kiện

    ^^
    None!

  5. #15
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Em xin giải thích con này :

    con ở trên kết thúc với else : thì nó sẽ thực hiện các trường hợp còn lại
    con ở dưới kết thức với else if : tức là chỉ xử lý 1 trường hợp thỏa mãn.
    Gần đúng thôi.
    Anh gợi ý thêm nhé, ý nghĩa của nó giống với lặp kiểm tra điều kiện trước và lặp kiểm tra điều kiện sau vậy.
    Nếu phân biệt được 3 câu lệnh if trên thì chúng ta sẽ thuận lợi hơn khi lập trình đấy.
    ì 2 đoạn code ở trên là rẽ nhánh, và chỉ xử lý nhánh thỏa mãn điều kiện < xử lý 1 cái thỏa mãn >
    Còn code này thì nó sẽ xử lý tuần tự 3 điều kiện
    2 bài giải của em đều quan tâm đến điều kiện cả, như vậy là em sẽ gặp nhiều khó khăn khi lập trình với câu lệnh if lắm đấy. Ví dụ như bài toán bao búa kéo thì em nghĩ xem giải thế nào? ^^
    Anh gợi ý thêm 1 tý nhé: Đối với câu lệnh if chúng ta nên suy nghĩ có bao nhiêu hành động sẽ xảy ra thay vì suy nghĩ điều kiện gì để thực thi hành động. Anh tạm gọi đó là suy luận logic ngược.
    Đã được chỉnh sửa lần cuối bởi huynguyen : 30-09-2007 lúc 04:03 PM.

  6. #16
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Talking Đố vui về C++, giúp các bạn học C++ tốt hơn

    Trích dẫn Nguyên bản được gửi bởi huynguyen Xem bài viết
    Phương thức dưới đây sẽ bị lỗi gì?
    Code:
    int min(int a, int b) {
        if (a > b) {
            return b;
        }
    }
    Code:
    public static int min(int a, int b) {
        if (a > b) {
            return b;
        } else if (a <= b) {
            return a;
        }
    }
    Code ở trên thì lỗi vì không có giá trị trả về nếu a <= b
    Code ở dưới thì cơ bản là không bị lỗi nhưng bị thừa, chỉ cần else là đủ không cần else if.
    chú ý là nó truy cập theo kiểu static

    ^^
    None!

  7. #17
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Code ở dưới thì cơ bản là không bị lỗi nhưng bị thừa, chỉ cần else là đủ không cần else if.
    Code ở dưới cũng có thể bị lỗi luôn đó.
    Đứng ở góc độ của mình thì mình thấy là đã đầy đủ các trường hợp nhưng đứng ở góc độ của máy tính thì nó sẽ nghĩ là còn 1 trường hợp có thể làm cho hàm ko có trị trả về nên có thể nó sẽ báo lỗi trong 1 số trường hợp khác. Mọi người nên chú ý viết câu lệnh if đầy đủ, ko thừa ko thiếu để chương trình thực thi an toàn.
    Còn về phương thức tĩnh thì cái này do anh quen viết kiểu OOP, lúc copy qua quên xoá ^^.
    Đã được chỉnh sửa lần cuối bởi huynguyen : 30-09-2007 lúc 04:21 PM.

  8. #18
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Ko ai trả lời nữa à? Câu hỏi ko khó lắm, sao các bạn ko đưa ra quan điểm của mình nhỉ, đúng hay sai, trùng hay ko trùng cũng lên tiếng chứ ^^
    Ko ai trả lời thì tớ đóng cửa tiệm nhé, đỡ chật đất forum.

  9. #19
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Hãy cho biết kết xuất của phương thức sau:
    Code:
    void mystery(int x, int z, int y) {
            x++;
            y = x - z * 2;
            x = z + 1;
            cout <<x <<" " <<y <<" " <<z <<endl;
    }
    void main() {	
            int x = 5, y = 9, z = 2;
            mystery(z, y, x);
            cout <<x <<" " <<y <<" " <<z <<endl;
            mystery(y, x, z);
            cout <<x <<" " <<y <<" " <<z <<endl;
    }
    Đã được chỉnh sửa lần cuối bởi huynguyen : 30-09-2007 lúc 09:36 PM.

  10. #20
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Trích dẫn Nguyên bản được gửi bởi huynguyen Xem bài viết
    Hãy cho biết kết xuất của phương thức sau:
    Code:
    void mystery(int x, int z, int y) {
            x++;
            y = x - z * 2;
            x = z + 1;
            cout <<x <<" " <<y <<" " <<z <<endl;
    }
    void main() {	
            int x = 5, y = 9, z = 2;
            mystery(z, y, x);
            cout <<x <<" " <<y <<" " <<z <<endl;
            mystery(y, x, z);
            cout <<x <<" " <<y <<" " <<z <<endl;
    }
    Đáp án :

    Code:
    10  -15 9
    5 9 2
    6 0 5
    5 9 2
    Khi tính nhẩm bạn sẽ bị lừa mấy cái x, y, z =))
    Thực ra để ý ở đây lừa 2 phát :
    1. lừa ở scope -> local & global
    2. lừa ở cái in ra kết quả sau khi kết thúc mystery
    Giá trị của x, y ,z không hề thay đổi; chẳng qua là thay đổi vị trí tham số truyền nên hơi bị rối thôi

    ^^
    None!

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

  1. Sự cố Nhờ mod chuyển giúp bài "Sắp xếp số thứ tự ngay trong bảng của 1 database?" từ MySQL sang MSSQL giúp!
    Gửi bởi hu-xeko trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 1
    Bài viết cuối: 12-03-2012, 07:48 PM
  2. Mới nhập môn khó quá , cần trợ giúp [Vấn đề của bạn cần muốn giúp là gì ?]
    Gửi bởi cuingo212 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 22-10-2011, 08:43 AM
  3. Chương trình giúp một học sinh cấp 1 học phép nhân, xử lý hàm rand, giúp mình với?
    Gửi bởi chankx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 12-05-2009, 08:52 PM
  4. Code giúp add một key vào registry, ai giúp em?
    Gửi bởi olavien trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 12-12-2007, 08:45 AM

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