Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 12 kết quả

Đề tài: Hỏi cách viết 1 bt đơn giản

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

    Question Hỏi cách viết 1 bt đơn giản

    Mình mơi học C, có 1 bt đơn giản nhưng làm hoài ko xong nên đành hỏi ý kiến các anh em thử

    Đề (do mình tự nghĩ ra ) : viết 1 chương trình nhập vào 1 (và chỉ 1) ký tự bất kỳ do user input vào. Check xem nếu ký tự đó là q hoặc Q thì hiện ra chữ "ok" còn ko thì quay lại yêu cầu user nhập lại ký tự

    Mình viết :

    Code:
    #include<stdio.h>
    main()
    {
    char vietwow;
    for(vietwow;vietwow!='q'||vietwow!='Q';)
    {
    printf("vong lap ne : ");
    vietwow=getchar();
    }
    
    printf("haha");
    
    return 0;
    }
    Nhưng nó ko lặp lại quá trình yêu cầu user nhập ký tự mà nó chỉ lặp lại việc in ra chữ "vong lap ne : ". User gõ bao nhiu ký tự thì nó in ra bấy nhiêu cụm "vong lap ne" :(

    [root@vietwow ~]# ./c3
    vong lap ne : c
    vong lap ne : vong lap ne : sbfbf
    vong lap ne : vong lap ne : vong lap ne : vong lap ne : vong lap ne : vong lap ne : avav
    vong lap ne : vong lap ne : vong lap ne : vong lap ne : vong lap ne : asdfgh
    vong lap ne : vong lap ne : vong lap ne : vong lap ne : vong lap ne : vong lap ne : vong lap ne :


    Ai biết tại sao xin giúp giùm

    Thanx

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Bạn sai chỗ này :
    C Code:
    1. for(vietwow;vietwow!='q' || vietwow!='Q';)
    phải sửa lại thành :
    C Code:
    1. for(vietwow;vietwow!='q' && vietwow!='Q';)

    Nhưng mình sửa chỉ để cho bạn biết chỗ sai thôi chứ thật ra bài này ko được dùng for mà phải dùng while hoặc do ... while giống như thế này :
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. main()
    4. {
    5.     char vietwow;
    6.     do
    7.     {
    8.         printf("vong lap ne : ");
    9.         vietwow = getche();
    10.     }
    11.     while (vietwow != 'q' && vietwow != 'Q');
    12.  
    13.     printf("haha");
    14.     return 0;
    15. }
    Đã được chỉnh sửa lần cuối bởi meoconlongvang : 10-09-2008 lúc 11:41 PM.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    11 2007
    Bài viết
    83

    Hi meocon,

    Thực ra mình có nghĩ đến dùng do while nhưng tại hùi xưa nhớ ông thầy dạy C có bảo cái gì while làm được thì đều convert sang for được nên mình cố gắng mò for mà mò hoài ko được nên tức ghê

    Tuy nhiên code của bạn cũng bị lặp giống mình rồi

    Anyway, thanx bạn
    Đã được chỉnh sửa lần cuối bởi vietwow : 10-09-2008 lúc 11:47 PM.

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mình đã chạy thử, nhấn q hay Q là thoát rồi, đâu có bị lặp đâu. Bạn chạy thử chưa hay là bạn chỉ đoán vậy thôi ?
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  5. #5
    Ngày gia nhập
    11 2007
    Bài viết
    83

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Mình đã chạy thử, nhấn q hay Q là thoát rồi, đâu có bị lặp đâu. Bạn chạy thử chưa hay là bạn chỉ đoán vậy thôi ?
    Hi bạn, với chương trình của bạn đúng là q (Q) thì thoát nhưng với TH khác thì :

    Code:
    [root@vietwow ~]# ./c3
    vong lap ne : q
    haha[root@vietwow ~]# ./c3
    vong lap ne : asvasvav
    vong lap ne : vong lap ne : vong lap ne : vong lap ne : vong lap ne : vong lap ne : vong lap ne : vong lap ne : vong lap ne : 123
    vong lap ne : vong lap ne : vong lap ne : vong lap ne :
    Lúc này tuy bấm nút q vẫn thoát nhưng mình ko mún bị tình trạng lặp lại câu "vong lap ne" này :(

    Thân,

  6. #6
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mặc định Hỏi cách viết 1 bt đơn giản

    thế thì bạn đưa printf ra khỏi vòng lặp là sẽ được thôi
    C Code:
    1.     printf("vong lap ne : ");
    2.     do
    3.     {
    4.         vietwow = getche();
    5.     }
    6.     while (vietwow != 'q' && vietwow != 'Q');
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  7. #7
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Trích dẫn Nguyên bản được gửi bởi vietwow
    Lúc này tuy bấm nút q vẫn thoát nhưng mình ko mún bị tình trạng lặp lại câu "vong lap ne" này :(
    nếu không muốn lặp đi lặp lại hoài thì bạn bỏ nó ra khỏi vòng lặp đi.
    cái này đơn giản mà bạn.

    chúc bạn thành công.

  8. #8
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Mình sửa code như này bạn tham khảo nhé:
    Code:
    #include<stdio.h>
    
    main()
    {
        char vietwow;
        for(;vietwow!='q' && vietwow!='Q';vietwow=getchar())
        {
            fflush(stdin);
            printf("vong lap ne : ");
        }
    
        printf("haha");
        return 0;
    }
    - Dùng for đó, chủ yếu là thêm lênh fflush(stdin); tránh trôi chương trình.

  9. #9
    Ngày gia nhập
    11 2007
    Bài viết
    83

    Trích dẫn Nguyên bản được gửi bởi QuangHoang Xem bài viết
    Mình sửa code như này bạn tham khảo nhé:
    Code:
    #include<stdio.h>
    
    main()
    {
        char vietwow;
        for(;vietwow!='q' && vietwow!='Q';vietwow=getchar())
        {
            fflush(stdin);
            printf("vong lap ne : ");
        }
    
        printf("haha");
        return 0;
    }
    - Dùng for đó, chủ yếu là thêm lênh fflush(stdin); tránh trôi chương trình.
    Bạn thử input vào 1 chuỗi ko bao gồm chữ q chưa vd : abcd

    Mình thử rồi, nó vẫn bị lặp vòng đó :(

  10. #10
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Bạn thử input vào 1 chuỗi ko bao gồm chữ q chưa vd : abcd

    Mình thử rồi, nó vẫn bị lặp vòng đó :(
    Không hiểu ý bạn lắm, đầu bài là:
    Đề (do mình tự nghĩ ra ) : viết 1 chương trình nhập vào 1 (và chỉ 1) ký tự bất kỳ do user input vào. Check xem nếu ký tự đó là q hoặc Q thì hiện ra chữ "ok" còn ko thì quay lại yêu cầu user nhập lại ký tự
    Có phải bạn muốn nhập vào chỉ 1 kí tự, nhập nhiều kí tự không đc ah, thế xem thử cái này nhé.
    Code:
    #include <stdio.h>
    #include <conio.h>
    
    main()
    {
        char vietwow;
        for(;vietwow!='q' && vietwow!='Q';)
        {
            fflush(stdin);
            printf("vong lap ne : ");
            vietwow=getch();
            printf("%c\n",vietwow);
        }
    
        printf("haha");
        return 0;
    }

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

  1. Toàn Quốc Tìm người viết công cụ giải mã file video (Mã hóa đơn giản)
    Gửi bởi Kevin Hoang trong diễn đàn Việc làm IT(tự do)
    Trả lời: 3
    Bài viết cuối: 19-07-2013, 04:26 PM
  2. ADO.NET Cần gợi ý viết hàm kiểm tra hết hạn cho đọc giả
    Gửi bởi vcn9294 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 30-04-2013, 12:02 AM
  3. Lập trình C hai cách viết trong bài viết này có gì khác không, nếu khác mọi người giải thích giúp với
    Gửi bởi letung94 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 02-01-2013, 07:29 AM
  4. Viết chương trình giải phương trình bậc 2 bằng C#
    Gửi bởi hvtien trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 8
    Bài viết cuối: 07-07-2011, 02:31 AM
  5. Viết Giao Diện Phần Mềm bằng Flash, Core viết = C
    Gửi bởi trần trân trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 5
    Bài viết cuối: 31-05-2011, 06: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