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

Đề tài: Nhờ xem hộ lỗi

  1. #1
    Ngày gia nhập
    04 2012
    Bài viết
    0

    Mặc định Nhờ xem hộ lỗi

    Nhờ mọi người xem giúp bài tập này:
    Viết chương trình nhập vào kí tự c. Kiểm tra xem nếu kí tự nhập vào là kí tự thường trong khoảng từ 'a' đến 'z' thì đổi sang chữ in hoa và in ra, nếu kí tự in hoa trong khoảng A đến Z thì đổi sang chữ thường và in ra, nếu kí tự là số từ 0 đến 9 thì in ra câu "Kí tự bạn vừa nhập là số …(in ra kí tự c)", còn lại không phải 3 trường hợp trên in ra thông báo "Bạn đã nhập kí tự… (in ra kí tự c)".
    Mình viết code như sau:
    Code:
    #include <stdio.h>
    #include <conio.h>
    main (void)
    {
         char c;
         printf ("nhap vao mot ky tu ");
         scanf ("%c", &c);
         if (c>='a' && c<='z')
         {
                  c=c-32;
                  printf ("Ki tu hoa la: %c\n",c);}
         else if (c>='A' && c<='Z')
         {
              c=c+32;
              printf ("Ki tu thuong la: %c\n",c);}
         else if (0<=c<=9)
              printf ("Ki tu ban vua nhap la so: %c\n",c);
         else
             printf ("Ban da nhap ki tu %c\n",c);
         getch();
         }
    Khi kiểm tra, khi mình nhập c = 12 chẳng hạn, kết quả in ra lại bằng 1, còn các kết quả khác thì ok. Mong mọi người chỉ ra lỗi sai giùm :( Mình cảm ơn nhiều :x

  2. #2
    Ngày gia nhập
    04 2012
    Nơi ở
    Đồng Nai
    Bài viết
    1

    mình không biết bạn đang chạy borland hay là dev ?
    mình đã chạy thử bài trên của bạn bằng dev thì nó chạy được.chỉ cần sữa main (void) thành main() là chạy ok../..

  3. #3
    Ngày gia nhập
    04 2012
    Bài viết
    0

    Mình chạy bằng Dev 4.9.9.2, bạn thử nhập giá trị c>9 sẽ thấy kết quả in ra bằng 1.

  4. #4
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Trích dẫn Nguyên bản được gửi bởi duchai57 Xem bài viết
    ....
    Khi kiểm tra, khi mình nhập c = 12 chẳng hạn, kết quả in ra lại bằng 1, còn các kết quả khác thì ok. Mong mọi người chỉ ra lỗi sai giùm :( Mình cảm ơn nhiều :x
    Bài của bạn xét 1 ký tự mà!
    số 12 cần phải nhập 2 ký tự, 1 và 2

    Trích dẫn Nguyên bản được gửi bởi duchai57 Xem bài viết
    ... bạn thử nhập giá trị c>9 sẽ thấy kết quả in ra bằng 1.
    Bất cứ số nào lớn hơn 9 đều phải nhập vào nhiều hơn 1 ký tự

  5. #5
    Ngày gia nhập
    04 2012
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi VoTichSu Xem bài viết
    Bài của bạn xét 1 ký tự mà!
    số 12 cần phải nhập 2 ký tự, 1 và 2
    Bạn có thể sửa lỗi này giúp mình được không? Cám ơn bạn nhiều.

  6. #6
    Ngày gia nhập
    05 2010
    Bài viết
    29

    Mặc định Nhờ xem hộ lỗi

    Khi khai báo 1 biến kiểu char, thì biến đó chỉ nhận được 1 ký tự.

    Nếu bạn khai báo mảng, chuỗi có thể nhận nhiều hơn 1 ký tự.

    C Code:
    1. 0<=c<=9

    Đoạn code trên máy tính sẽ hiểu là biến c nhận giá trị thập phân (từ 0-9) của ký tự tương ứng trong bảng mã ASCII.

    Bạn có thể tham khảo bảng mã ASCII tại http://vi.wikipedia.org/wiki/ASCII

    Do đó, bạn chỉ cần sửa chút xíu về điều kiện của biến c là OK, mình test trên Turbo C++ thấy chạy hoàn toàn đúng.

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. main (void)
    4. {
    5. char c;
    6. printf ("nhap vao mot ky tu ");
    7. scanf ("%c", &c);
    8. if (c>=97 && c<=122) //tuong ung voi (c>='a' && c<='z')
    9. {
    10.  c=c-32;
    11.  printf ("Ki tu hoa la: %c",c);
    12. }
    13. else if (c>=65 && c<=90) //tuong ung voi (c>='A' && c<='Z')
    14. {
    15. c=c+32;
    16. printf ("Ki tu thuong la: %c",c);
    17. }
    18. else if (c>=48 && c<=57) printf ("Ki tu ban vua nhap la so: %c",c);
    19. else printf ("Ban da nhap ki tu %c",c);
    20. getch();
    21. }
    Đã được chỉnh sửa lần cuối bởi vipbk09 : 18-04-2012 lúc 03:29 PM.

  7. #7
    Ngày gia nhập
    03 2012
    Bài viết
    1

    Trích dẫn Nguyên bản được gửi bởi duchai57 Xem bài viết
    Bạn có thể sửa lỗi này giúp mình được không? Cám ơn bạn nhiều.
    bạn nên xem lại hàm char nhé
    vd: khai báo char kytu;
    thi khi nhập bất cứ gì nó chỉ chấp nhận ký tự bạn nhập đầu tiên

    vd kytu bạn nhập là abcd chẳng hạn thì nó chỉ lưu giá trị a.
    nhập số 123 thì nó chỉ lưu giá trị 1
    Yahoo: ladykillah_rapproduction

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

    Trích dẫn Nguyên bản được gửi bởi vipbk09 Xem bài viết
    Khi khai báo 1 biến kiểu char, thì biến đó chỉ nhận được 1 ký tự.

    Nếu bạn khai báo mảng, chuỗi có thể nhận nhiều hơn 1 ký tự.

    C Code:
    1. 0<=c<=9

    Đoạn code trên máy tính sẽ hiểu là biến c nhận giá trị thập phân (từ 0-9) của ký tự tương ứng trong bảng mã ASCII.

    Bạn có thể tham khảo bảng mã ASCII tại http://vi.wikipedia.org/wiki/ASCII

    Do đó, bạn chỉ cần sửa chút xíu về điều kiện của biến c là OK, mình test trên Turbo C++ thấy chạy hoàn toàn đúng.

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. main (void)
    4. {
    5. char c;
    6. printf ("nhap vao mot ky tu ");
    7. scanf ("%c", &c);
    8. if (c>=97 && c<=122) //tuong ung voi (c>='a' && c<='z')
    9. {
    10.  c=c-32;
    11.  printf ("Ki tu hoa la: %c",c);
    12. }
    13. else if (c>=65 && c<=90) //tuong ung voi (c>='A' && c<='Z')
    14. {
    15. c=c+32;
    16. printf ("Ki tu thuong la: %c",c);
    17. }
    18. else if (c>=48 && c<=57) printf ("Ki tu ban vua nhap la so: %c",c);
    19. else printf ("Ban da nhap ki tu %c",c);
    20. getch();
    21. }
    Mình kiểm tra thì vẫn bị lỗi như vậy
    i418.photobucket.com/albums/pp266/duchai57/Untitled.jpg


    Trích dẫn Nguyên bản được gửi bởi vn00494999 Xem bài viết
    bạn nên xem lại hàm char nhé
    vd: khai báo char kytu;
    thi khi nhập bất cứ gì nó chỉ chấp nhận ký tự bạn nhập đầu tiên

    vd kytu bạn nhập là abcd chẳng hạn thì nó chỉ lưu giá trị a.
    nhập số 123 thì nó chỉ lưu giá trị 1
    Mình phải khai báo hàm nào khác đây :(

  9. #9
    Ngày gia nhập
    05 2010
    Bài viết
    29

    Mọi người đã nhắc đi nhắc lại rằng: trong C, khi khai báo:

    C Code:
    1. char c

    thì biến c chỉ chứa được 1 ký tự. Khi bạn nhập '12' (có 2 ký tự là ký tự '1' và ký tự '2', nhưng biến c chỉ chứa được ký tự '1' mà thôi).

    Bạn nên đọc kỹ câu trả lời của mọi người.

    Còn nếu bạn muốn chứa nhiều hơn 1 ký tự, bạn hãy thử dùng string xem.

  10. #10
    Ngày gia nhập
    04 2012
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi vipbk09 Xem bài viết
    Mọi người đã nhắc đi nhắc lại rằng: trong C, khi khai báo:

    C Code:
    1. char c

    thì biến c chỉ chứa được 1 ký tự. Khi bạn nhập '12' (có 2 ký tự là ký tự '1' và ký tự '2', nhưng biến c chỉ chứa được ký tự '1' mà thôi).

    Bạn nên đọc kỹ câu trả lời của mọi người.

    Còn nếu bạn muốn chứa nhiều hơn 1 ký tự, bạn hãy thử dùng string xem.
    Vấn đề là mình mới học, chưa biết dùng biến nào thôi mà ^^! Dù sao thì cũng thanks nhé.

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