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

Đề tài: [C]Giải thích hộ mình đoạn code này với

  1. #1
    Ngày gia nhập
    11 2008
    Nơi ở
    www.freelancer.com
    Bài viết
    75

    Talking [C]Giải thích hộ mình đoạn code này với

    mình có 1 đoạn code nhưng chưa hiểu lắm mọi người chỉ giúp mình nhá.Thank
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h>
    4.  
    5. int menu()
    6. {
    7.   int c;
    8.   printf("\n----- Menu -----");
    9.   printf("\n1. Hinh tam giac");
    10.   printf("\n2. Hinh tron");
    11.   printf("\n3. Hinh vuong");
    12.   printf("\n4. Hinh chu nhat");
    13.   printf("\n0. Thoat");
    14.   printf("\n----------------");
    15.   printf("\nChon muc : ");
    16.   do {
    17.     c = getch();
    18.   } while (c>'4' || c<'0');
    19.   putc(c, stdout);
    20.   return c -'0';
    21. }
    22.  
    23. void hinhtamgiac()
    24. {
    25.   int a, b, c;
    26.   float p;
    27.  
    28.   printf("\n\nNhap vao ba canh tam giac : ");
    29.   scanf("%d%d%d", &a, &b, &c);
    30.   printf("\nChu vi tam giac = %d", a+b+c);
    31.   p = (float)(a + b + c)/2;
    32.   printf("\nDien tich tam giac = %lf", sqrt(p*(p-a)*(p-b)*(p-c)));
    33.   getch();
    34. }
    35.  
    36. void hinhtron()
    37. {
    38.   int r;
    39.  
    40.   printf("\n\nNhap vao ban kinh hinh tron : ");
    41.   scanf("%d", &r);
    42.   printf("\nChu vi hinh tron = %f", 2 * M_PI * r);
    43.   printf("\nDien tich hinh tron = %f", M_PI * r * r);
    44.   getch();
    45. }
    46.  
    47. void hinhvuong()
    48. {
    49.   int a;
    50.  
    51.   printf("\n\nNhap vao canh hinh vuong : ");
    52.   scanf("%d", &a);
    53.   printf("\nChu vi hinh tron = %d", 4 * a);
    54.   printf("\nDien tich hinh vuong = %d", a * a);
    55.   getch();
    56. }
    57.  
    58. void hinhchunhat()
    59. {
    60.   int a, b;
    61.  
    62.   printf("\n\nNhap vao cac canh hinh chu nhat : ");
    63.   scanf("%d%d", &a, &b);
    64.   printf("\nChu vi hinh chu nhat = %d", 2 * (a+b));
    65.   printf("\nDien tich hinh chu nhat = %d", b * a);
    66.   getch();
    67. }
    68.  
    69. void main()
    70. {
    71.   int chon;
    72.   do {
    73.     chon = menu();
    74.     switch(chon)
    75.     {
    76.       case 1 : hinhtamgiac();
    77.                break;
    78.       case 2 : hinhtron();
    79.                break;
    80.       case 3 : hinhvuong();
    81.                break;
    82.       case 4 : hinhchunhat();
    83.                break;
    84.     }
    85.   } while (chon != 0);
    86. }
    Mình thắc mắc là đoạn này:
    C Code:
    1. do {
    2.     c = getch();
    3.   } while (c>'4' || c<'0');
    4.   putc(c, stdout);
    5.   return c -'0';
    Ko hiểu cái chỗ c>'4' ý(có dấu ' ko bít sử dụng như thế nào) và còn return c -'0' nữa?? sao lại - mà ko phải = và dùng dấu ' nữa chứ.mình mới chỉ học xong tin A1.kiến thức còn ít.mong mọi người chỉ dẫn chi tiết 1 xíu nha
    Hiring someone to help someone else!

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    15

    Dấu ' ' có nghĩa là ký tự đó bạn. c<'4' có nghĩa là so sánh số c đc nhập vào với mã ASCI của 4. c - '0' là số c đc nhập vào trừ đi mã ASCI của 0 bằng bao nhiêu thì return lại. (Nếu mình ko nhầm thì là vậy)

  3. #3
    Ngày gia nhập
    05 2008
    Bài viết
    224

    uhm , bạn cuibaponline nói đúng rồi , còn câu hỏi của bạn còn hỏi thêm là tại sao lại là return c-'0' là dấu trừ mà không phải dấu bằng , return nghĩa là xong hàm thì trả về giá trị c-'0' đạt được sau khi thực hiện hàm đó. , bạn không thể đặt dấu bằng vào được . bạn đọc thêm các sách lập trình sẽ thấy , nhất là các phần viết về hàm con . chúc thành công
    Em có thấy nắng vàng kỷ niệm
    Hạ ngồi ru thanh thản những môi cười
    Thuở ngồi ngóng tay choàng tay nỗi nhớ
    Vin tay vào tháng năm chơi vơi...

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

    trùi ui.
    ' ' là nhập vào mã ASCII còn c-'0' là để chuyển kết quả về kiểu số(ở đây là kiểu int) chứ ko phải kiểu kí tự để trả về giá trị cho hàm đó đó

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

    c-'0' là một cách thường dùng để ép kiểu đó bạn nên xem kĩ lại đê(nó thuộc kiến thức cơ bản của lập trình viên)

  6. #6
    Ngày gia nhập
    02 2008
    Bài viết
    15

    Mặc định [C]Giải thích hộ mình đoạn code này với

    Trích dẫn Nguyên bản được gửi bởi MrChicKen_NAD Xem bài viết
    mình có 1 đoạn code nhưng chưa hiểu lắm mọi người chỉ giúp mình nhá.Thank

    [/code]
    Mình thắc mắc là đoạn này:
    C Code:
    1. do {
    2.     c = getch();
    3.   } while (c>'4' || c<'0');
    4.   putc(c, stdout);
    5.   return c -'0';
    Ko hiểu cái chỗ c>'4' ý(có dấu ' ko bít sử dụng như thế nào) và còn return c -'0' nữa?? sao lại - mà ko phải = và dùng dấu ' nữa chứ.mình mới chỉ học xong tin A1.kiến thức còn ít.mong mọi người chỉ dẫn chi tiết 1 xíu nha
    hàm getch() sẽ trả lại 1 kí tự rồi gán nó vào c
    tiếp đó c>'4' tức là ( số thứ tự của c lớn hơn 4 trong bảng mã ascii tức là c > 52)

    return c-'0' trả về hiệu của stt c trong bảng mã ascii với stt của '0' trong bảng mã ascii !!! tức là c-48
    (việc làm này sẽ trả lại đúng số mà bạn đã nhập vào ...chính xác hơn là khi bạn nhập vào là kí tự số trong bảng mã ascii còn hàm trả về 1 số kiểu int)

    ví dụ bạn nhập vào số 2 chẳng hạn máy hiểu bạn nhập kí tự '2' mà stt 2 trong bảng mã ascii là 50 vậy kết quả trả lại là return 50-48 =2
    giờ bạn có 2 là kiểu int

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

  1. sửa code giải phương trình bậc 2
    Gửi bởi thangit trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 7
    Bài viết cuối: 07-06-2013, 04:37 PM
  2. Mất giao diện (mất hết code trong Windows Form Designer generated code) trong khi thiết kế?
    Gửi bởi violent_feeling trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 25-04-2013, 04:19 PM
  3. code tìm cây có trọng lượng nhỏ nhất bằng giải thuật prim-cách chạy tay code này
    Gửi bởi ruacon_206 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 25-04-2011, 02:27 PM
  4. Sửa đoạn code giải phương trình bậc 2
    Gửi bởi clacaigi trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 8
    Bài viết cuối: 05-03-2009, 05:45 PM
  5. Kết hợp code xử lý vào code giao diện
    Gửi bởi nmily89 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 10-12-2008, 09:45 PM

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