Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    member mới làm quen với C xin hỏi 1 chút

    Trong code sau thì làm sao để dừng vòng while này
    //count digits , white space, others
    main();
    int c, i , nwhite,nother;
    int ndigit[10];

    nwhite = nother =0;
    for(i=0;i<10;++i)
    ndigit[i]=0;
    while((c=getch()) != EOF)
    if(c>='0'&&c<='9')
    ++ndigit[c-'0'];
    else if (c==' '||c='
    ' || c=='\t')
    ++nwhite;
    else
    ++nother;
    printf("digits = ");
    for(i=0;i<10;++i)
    printf("%d",ndigit[i]);
    printf("white space = %d , other = %d",nwhite,nother)

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình không hiểu rõ ý bạn lắm , Vòng while này mình không biết thoát nó như thế nào cả , đây là một bài code trong "the C programming language " . Ý mình ở đây tức là mình không hiểu biểu thức điều kiện trong vòng while đó có ý nghĩa là gì

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    - biểu thức điều kiện của vòng while trên nghĩa là đọc một ký tự vào và nếu nó khác kí tự EOF thì làm {....}. Kí tự EOF là ký tự kết thúc file(End Of File) cho nên nó sẽ thoát khi đọc đến cuối file. Ở đây nhập ký tự từ bàn phím thì ko có cái kí tự này nên nó sẽ chạy vô hạn, bạn cứ gõ 1 chữ vào thì nó làm .... sau đó nó lại chờ bạn gõ .... tới khi mất điện mới thôi [IMG]images/smilies/laughing.gif[/IMG]

  4. #4
    Mã vòng lặp chưa chuẩn nên viết lại như sau

    Mã:
    while((c=getch()) != EOF){    if(c>='0' && c<='9')                               // Nếu là ký tự số        ++ndigit[c-'0'];    else if (c==' ' || c=='
    ' || c=='\t')         // Nếu là ký tự Spacebar, Return, Tab        ++nwhite;    else                                                      // Các ký tự khác        ++nother;}
    Tự thân vòng lặp while này đã có kiểm tra để thoát, bạn không phải làm gì thêm.
    Phần xuất ra cũng nên chỉnh sửa xíu

    Mã:
    // printf("digits = "); // Bỏ dòng nàyfor(i=0;i<10;++i)    printf("digit %i : %d
    ", i, ndigit[i]);printf("white space = %d
    other = %d
    ",nwhite,nother)
    Thân.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •