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

Đề tài: đôi chỗ không hiểu về if và goto?

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

    Mặc định đôi chỗ không hiểu về if và goto?

    em nghĩ cái này cũng khá đơn giản vs các bác nhưng trình độ có hạn nên em ms ko tiêu hóa đc hết, ms nhập môn mà mong các bác đừng chửi em nhiều quá mà tội nghiệp.
    đề bài là tìm số lớn nhất trong 2 số, viết code như thế này đúng rồi
    Code:
    #include"conio.h"
    #include"stdio.h"
    main(){
           int a,b,max,k;
           
           lamlai:
           printf("Nhap vao so a: ");
           scanf("%d", &a);
           printf("Nhap vao so b: ");
           scanf("%d", &b);
           if(a<b){
                  max=b;
                  printf("%d\n", max);
           }
           else 
                   printf("%d\n", &a);
           printf("Co tiep tuc so sanh khong? (C/K)\n ");
           k=getch();
           if(k=='c'||k=='C')
               goto lamlai;
           
           }
    cho em hỏi tại sao cái chỗ
    Code:
    printf("Co tiep tuc so sanh khong? (C/K)\n ");
           k=getch();
           if(k=='c'||k=='C')
               goto lamlai;
    lại không đổi thành
    Code:
    printf("Co tiep tuc so sanh khong? (C/K)\n ");
           if(k=='c'||k=='C')
               goto lamlai;
           else
               k=getch();
    [/CODE]
    đc ạ? xin chỉ giáo với

  2. #2
    Ngày gia nhập
    02 2012
    Nơi ở
    everywhere
    Bài viết
    13

    Trích dẫn Nguyên bản được gửi bởi thaohoangf Xem bài viết
    em nghĩ cái này cũng khá đơn giản vs các bác nhưng trình độ có hạn nên em ms ko tiêu hóa đc hết, ms nhập môn mà mong các bác đừng chửi em nhiều quá mà tội nghiệp.
    đề bài là tìm số lớn nhất trong 2 số, viết code như thế này đúng rồi
    Code:
    #include"conio.h"
    #include"stdio.h"
    main(){
           int a,b,max,k;
           
           lamlai:
           printf("Nhap vao so a: ");
           scanf("%d", &a);
           printf("Nhap vao so b: ");
           scanf("%d", &b);
           if(a<b){
                  max=b;
                  printf("%d\n", max);
           }
           else 
                   printf("%d\n", &a);
           printf("Co tiep tuc so sanh khong? (C/K)\n ");
           k=getch();
           if(k=='c'||k=='C')
               goto lamlai;
           
           }
    cho em hỏi tại sao cái chỗ
    Code:
    printf("Co tiep tuc so sanh khong? (C/K)\n ");
           k=getch();
           if(k=='c'||k=='C')
               goto lamlai;
    lại không đổi thành
    Code:
    printf("Co tiep tuc so sanh khong? (C/K)\n ");
           if(k=='c'||k=='C')
               goto lamlai;
           else
               k=getch();
    [/CODE]
    đc ạ? xin chỉ giáo với
    ủa mình thấy cái dưới đúng hơn chứ , vì nhập kiểu gì thì sau đó đến cái lệnh k = getch () ; chả phải nó cũng kết thúc sao ? bạn có chắc cái dưới ko đc ko ? nó có lỗi gì ?

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

    vì k chưa được nhập đâu so sánh được(nếu so lại sai). giờ hiện tại k đang là số kiểu int nhận giá trị ngẫu nhiên, bạn nên để k kiểu char như vậy sẽ tốt hơn là kiểu int tiết kiệm bộ nhớ hơn, mặc dù ghi gán một kí tự cho một số nguyên vẫn có thể thỏa mãn, bởi trong biểu thức kiểu char lại convert về unsiged int.
    Giao lưu và học hỏi
    https://www.facebook.com/kimcy1992

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

    Trích dẫn Nguyên bản được gửi bởi yokashi Xem bài viết
    ủa mình thấy cái dưới đúng hơn chứ , vì nhập kiểu gì thì sau đó đến cái lệnh k = getch () ; chả phải nó cũng kết thúc sao ? bạn có chắc cái dưới ko đc ko ? nó có lỗi gì ?
    nhập vào máy nó chỉ đưa ra nhập 2 số a,b thôi bạn ạ, đến khi nhập số b vào thì nó tự thoát ra chương trình.

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

    Trích dẫn Nguyên bản được gửi bởi kimcy1992 Xem bài viết
    vì k chưa được nhập đâu so sánh được(nếu so lại sai). giờ hiện tại k đang là số kiểu int nhận giá trị ngẫu nhiên, bạn nên để k kiểu char như vậy sẽ tốt hơn là kiểu int tiết kiệm bộ nhớ hơn, mặc dù ghi gán một kí tự cho một số nguyên vẫn có thể thỏa mãn, bởi trong biểu thức kiểu char lại convert về unsiged int.
    tóm lai là muốn đem k ra để so sánh thì trc tiên phải gán cho nó trc đúng ko bạn?

  6. #6
    Ngày gia nhập
    11 2012
    Bài viết
    136

    Mặc định đôi chỗ không hiểu về if và goto?

    Trích dẫn Nguyên bản được gửi bởi thaohoangf Xem bài viết
    tóm lai là muốn đem k ra để so sánh thì trc tiên phải gán cho nó trc đúng ko bạn?
    Đúng vậy bạn nên bỏ goto thay vào đó là vòng lặp thì sẽ hay hơn có một bài viết rất nổi tiếng về lệnh này http://www.cs.utexas.edu/~EWD/transc...xx/EWD215.html của Edsger W.Dijkstra
    Giao lưu và học hỏi
    https://www.facebook.com/kimcy1992

  7. #7
    Ngày gia nhập
    02 2012
    Nơi ở
    everywhere
    Bài viết
    13

    Trích dẫn Nguyên bản được gửi bởi thaohoangf Xem bài viết
    nhập vào máy nó chỉ đưa ra nhập 2 số a,b thôi bạn ạ, đến khi nhập số b vào thì nó tự thoát ra chương trình.
    à hiểu rồi h mới thấy bạn xài int k mà lại đi so ký tự 'C'.....
    tốt nhất muốn thì nên xài chả k và thêm fflush(stdin) trước hàm scanf của k
    mà xài vòng lặp while đi , goto hay bị nói là bad code lắm

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

  1. Lệnh goto trên C | Giúp mình hiểu về lệnh goto trên C?
    Gửi bởi kenptit trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 14-10-2013, 10:34 PM
  2. Lệnh goto trong lập trình C?
    Gửi bởi luckyboy310589 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 29-03-2009, 11:16 PM
  3. [ Solved ]Lỗi class với goto
    Gửi bởi ngocnam_it trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 16-11-2008, 02:40 PM
  4. switch & goto --> Error
    Gửi bởi kokored trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 12-11-2008, 07:32 PM
  5. [ Solved ]Lệnh goto
    Gửi bởi superworm711 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 27-10-2008, 02:20 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