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ố 13 kết quả

Đề tài: Lặp lại chương trình C? hàm return() là hàm có tác dụng gì?

  1. #1
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Mặc định Lặp lại chương trình C? hàm return() là hàm có tác dụng gì?

    Trong các ví dụ thường thấy câu lệnh này turn() . Mình không hiểu nó lắm mong được giải thích rõ . Giả dụ mình viết một chương trình C như thế này :
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. main()
    4. {
    5.     float a, b, c, kq, tl;  // KQ = Ket qua , tl = Tra Loi
    6.     printf(" Nhap so thuc a :"); scanf("%f, &a);
    7.     // tuong tu cho b ,c
    8.     printf(" a+b+c= ? " ); scanf("%f", tl);
    9.     kq = a +b + c;
    10.     if (kq == tl) printf("OK du'ng roi` ");
    11.     else printf (" Phai la %f moi dung lam lai nao` ");
    12.     getch();
    13. }

    Thu' that la minh co' dua' em ut , no khoai tro choi nen dinh viet cai nhu vay. de? cho no vua choi vua hoc .
    Mình cũng vừa mới học qua diễn đàn thôi nên ko biết cặn kẽ lắm , khi viết cái này thì mình cũng có một số thắc mắc mong giúp đỡ :

    1. Làm sao để \chương trình chạy lại từ đầu , mà ko cần khởi động , ví dụ với cái chương trình mình đang viết đó , sau khi trả lời xong thì nó tắt , mình muốn nó chạy lại từ đầu thì phải thêm lệnh gì .
    2. Trong thí dụ mình thường thấy lệnh return() nhưng mình không hiểu nổi , nếu được có thể đưa 1 ví dụ có giải thích giúp mình không ?

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Nếu hỏi thì bạn nên tạo một đề tài riêng nhé. Không nên tiện như vậy.

    1. Có nhiều cách, chắc bạn chưa bao giờ học lập trình?

    Dreaminess giới thiệu cách dùng goto label, còn cách dùng lặp Dreaminess đã có giới thiệu rồi.
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. int main()
    4. {
    5.     float a,b,c,kq,tl;
    6.     tt: clrscr();
    7.     printf("Nhap vao so a: ");scanf("%f",&a);
    8.     //Tuong tu cho b va c
    9.     kq=a+b+c;
    10.     printf("a+b+c=?");scanf("%f",&tl);
    11.     if (tl==kq)
    12.         printf("Dung roi do, gioi qua");
    13.         else
    14.            {
    15.              printf("Sai bet roi, te qua. ");
    16.                      getch();
    17.              goto tt;
    18.                    }
    19.     return 0;
    20. }

    2. Lệnh return() tức là 'lệnh' trả về giá trị của hàm (tìm kiếm đi, trong này có nói rồi)

    Để dễ hiểu Dreaminess đưa ra cho bạn một ví dụ sau.

    Trong pascal:
    Pascal Code:
    1. function test(a: integer): integer;
    2. Begin
    3.     test:=a;
    4. end;

    Trong C chỉ cần:

    C Code:
    1. int test(int a)
    2. {
    3.   return (a);
    4. }

    main() cũng là một hàm, như các hàm khác, nhưng khác hơn nó là hàm chính.

    Chúc may mắn.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  3. #3
    Ngày gia nhập
    10 2006
    Nơi ở
    Hà Nội
    Bài viết
    10

    Theo mình thì kô nên dùng lệnh goto label ở đây, vì theo mình được biết lệnh đó làm mất tính cấu trúc của chương trình.. nhất là khi bạn đang ở trong một vòng lặp, bạn lại cho nhẩy đến một nhãn (label) nằm ngoài vòng lặp. Những chương trình ngắn và đơn giản thì kô sao, nhưng khi viết 1 chương trình lớn thì bạn sẽ thấy ngay điều đó.
    Bạn có thể dùng vòng lặp:
    do {các câu lệnh} while ( biểu thức điều kiện );
    Đoạn chương trình bạn muốn viết có thể được viết như sau:
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. int main()
    4. {
    5.     int k;
    6.     float a,b,c,tl,kq;
    7.     do  
    8.     {
    9.         clrscr();
    10.         printf("\nNhap a,b,c: ");
    11.         scanf("%f %f %f",&a,&b,&c);
    12.         kq=a+b+c;
    13.         printf("a+b+c= ");
    14.         scanf("%f",&tl);
    15.         if (tl==kq) printf("\nChuc mung ban!\n%0.2f + %0.2f + %0.2f = %0.2f la mot cau tra loi dung.",a,b,c,tl);
    16.         else printf("\nSai roi!!!\nPhai la %0.2f moi dung.\nLam lai nao",kq);
    17.         printf("\n\n\n\n\n\nNhan phim bat ki de tiep tuc. Nhan ESC de ket thuc...");
    18.         k=getch();
    19.     } while (k!=27);
    20.     return(0);
    21. }

    Hope you have fun!
    Đã được chỉnh sửa lần cuối bởi hyl : 27-10-2006 lúc 11:58 PM.
    If...

  4. #4
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Mình hiêu được nhiều cái hay trên cả những gì mình cần hỏi tuyệt thật đấy .
    Vậy để tiếp tục chương trình thì cần dòng này printf("\n\n\n\n\n\nNhan phim bat ki de tiep tuc. Nhan ESC de ket thuc...");
    k=getch();
    while (k!=27);
    Như vậy là qui ước K = getch nếu K # 27 thì biểu thức chạy lại đúng kô .
    Vậy 27 đây có phải là mã qui định cho Phím ESC ko ? Nếu phải thì phím enter có mã bao nhiiêu ...
    Và mình có một rắc rối chỗ này nữa nhé . Nếu mình bảo nhập vào a b c rồi mình bảo nhập vào phép tính cho biểu thức chứa a b c rồi chương trình sẽ tự
    cho ra kết quả của phép tính mà người nhập yêu cầu thì mình sẽ phải làm sao .
    Thú thật là mình chưa từng học lập trình , mình kô biết gì cả , chỉ mới học qua website thôi . hì hì

  5. #5
    Ngày gia nhập
    07 2006
    Bài viết
    121

    Cậu vào đây coi tại câu lệnh break; Câu lệnh break trong lập trình C

  6. #6
    Ngày gia nhập
    10 2006
    Nơi ở
    Rừng Amazon
    Bài viết
    101

    Mặc định Lặp lại chương trình C? hàm return() là hàm có tác dụng gì?

    Trích dẫn Nguyên bản được gửi bởi kidkid
    Như vậy là qui ước K = getch nếu K # 27 thì biểu thức chạy lại đúng kô .
    Vậy 27 đây có phải là mã qui định cho Phím ESC ko ? Nếu phải thì phím enter có mã bao nhiiêu ...
    Chắc bạn mới học C nên chưa biết về bảng mã ASCII, cái này quy định phím nào có mã là bao nhiêu.

    Code:
    ch = getch();
    printf("%d", ch);
    Đoạn chương trình trên sẽ ỉn ra bất cứ mã của phím nào bạn nhập vào.

  7. #7
    Ngày gia nhập
    10 2006
    Nơi ở
    Hà Nội
    Bài viết
    10

    Trích dẫn Nguyên bản được gửi bởi kidkid
    Và mình có một rắc rối chỗ này nữa nhé . Nếu mình bảo nhập vào a b c rồi mình bảo nhập vào phép tính cho biểu thức chứa a b c rồi chương trình sẽ tự cho ra kết quả của phép tính mà người nhập yêu cầu thì mình sẽ phải làm sao .
    Kô biết Kidkid đã làm đc chưa? Để làm được điều này bạn có thể dùng cấu trúc sau: (Bạn tự tìm hiểu nhé, coi qua đoạn code của mình ở bên dưới, nếu không hiểu chỗ nào thì hỏi lại mình ... )
    C Code:
    1. switch()
    2. {
    3. case 1:...
    4. case 2:...
    5. ...
    6. default : ...
    7. }
    Ví dụ bài của bạn có thể làm như sau:
    C Code:
    1. do
    2. {
    3.     clrscr(); /* Lenh nay de xoa man hinh cu di */
    4.     printf("\nNhap so thu nhat: a= "); scanf("%f",&a); fflush(stdin); /* fflush(stdin) la lenh de xoa bo nho dem cua ban phim.*/
    5.     printf("\nNhap so thu hai : b= "); scanf("%f",&b); fflush(stdin);
    6.     do
    7.     {
    8.         fflush(stdin);
    9.         printf("\nNhap phep tinh ban muon thuc hien: ");
    10.         chon=getche();
    11.         switch(chon)
    12.         {
    13.             case '+': c=a+b; break;
    14.             case '-': c=a-b; break;
    15.             case '*': c=a*b; break;
    16.             case '/': c=a/b; break;
    17.             case '^': c=pow(a,b); break;
    18.             default: printf("\nChi nhap 1 trong 5 phep tinh:\nCong (+)\nTru(-)\nNhan(*)\nChia(/)\nLuy thua(^)."); break;
    19.         }
    20.     } while ( (chon!='+') && (chon!='-')&&(chon!='*') && (chon!='/') && (chon!='^') ) ;
    21.     printf("\n\nKet qua cua phep tinh %0.3f %c %0.3f = %0.3f", a,chon,b,c);
    22.     printf("\n\nNhan phim bat ki de tiep tuc.\nNhan ESC de ket thuc.");
    23.     tt=getch();
    24. } while (tt!=27);

    Hì, hy vọng bạn vẫn còn cần đến nó.

    Hope you have fun.
    Đã được chỉnh sửa lần cuối bởi hyl : 06-11-2006 lúc 07:14 PM.
    If...

  8. #8
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Uhm cảm ơn các bạn nhiều lắm hì hì . Mình chưa học cái này bao chừ , giờ mới học qua sách và diễn đàn mình thôi .
    Mình không rõ chỗ này lắm :
    DO -(lệnh)while ( (chon!='+') && (chon!='-')&&(chon!='*') && (chon!='/') && (chon!='^') ) ;
    Dịch nôm na có phải là thực hiện khối lệnh sau đó nếu thỏa ... thì lặp lại đúng không ? Nếu vậy thì sao biểu thức điều kiện while ở đây lại là
    (chon!='+') && (chon!='-')&&(chon!='*') && (chon!='/') && (chon!='^')
    Mình nghĩ phải là (chon='+') || (chon='*') ...
    Các bạn nghĩ giúp coi ...

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

    @kidkid : hiểu như thế này : tiếp tục thực hiện khối lệnh inside ( tức là chọn ) khi mà user nhập vào đều không phải là một trong 5 phép tính đó tức đó đồng thời khác 5 cái đó >> dùng && mà ^o^
    None!

  10. #10
    Ngày gia nhập
    10 2006
    Nơi ở
    Hà Nội
    Bài viết
    10

    @Kidkid:
    Đoạn code trên của mình có 2 khối lặp đó. Bạn xem lại nhé, cẩn thận nhầm với nhau.

    Còn cách hiểu thì bạn pete_87 đã chỉ cho bạn rồi
    Code:
    do { lệnh... } while ( (chon!='+') && (chon!='-')&&(chon!='*') && (chon!='/');
    có nghĩa là : lặp lại việc thực hiện phép tính cho đến khi người dùng nhập đúng 1 trong 5 phép tính trên thôi, tức là nếu chon đồng thời khác cả 5 phép tính đó thì người dùng bị yêu cầu nhập lại.

    Hope you have fun!
    If...

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

  1. Lập trình C++ Return * this là gì?
    Gửi bởi luongvancong trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 29-09-2011, 03:45 PM
  2. hàm bắt buộc nhập số, nếu là số thì return 1, còn ký tự thì return 0;
    Gửi bởi khacphuctran trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 11-03-2011, 04:39 PM
  3. Khi nào cần return 0, return 1 trong int main()
    Gửi bởi jojocolumbus trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 22-06-2010, 10:23 AM
  4. Điểm khác biệt giữa get và return
    Gửi bởi EnnerIT trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 10
    Bài viết cuối: 17-04-2009, 08:18 PM
  5. cách sử dụng lệnh return?????
    Gửi bởi kiensctn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 20
    Bài viết cuối: 23-03-2009, 11:06 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