2015-06-19 89 views
0

我在C中編寫了一個程序來計算段落中單詞的數量。在終端屏幕上,它只需要一個句子作爲輸入,然後凍結。任何想法爲什麼?我嘗試了其他方法,他們工作。只是想知道爲什麼這個沒有。 這裏是我的代碼:使用C計算段落中的單詞C

#include <stdio.h> 
#include <conio.h> 
int main(void) 
{ int i, m=0, t=1; 
    char x, a[100]; 
    clrscr(); 
    printf("Type a paragraph to count the words in it.\n"); 
    while(t==1) 
    { i=0; 
     while(x!='\n') 
     { x=getchar(); 
      a[i]=x; 
      i++; 
      if((x==' ')||(x=='.')||(x=='?')||(x=='!')) 
      m++; 
     } 

     if(a[0]=='\n') 
     t=0; 
    } 
    printf("\nNumber of words = %i", m); 
    getch(); 
    return 0; 
} 

編輯: 我試圖在這裏使用的邏輯是: 內環發生在高達100個字符的話。遇到\ n字符後,退出循環。外循環用於將100個字符的限制擴展到無限數量的字符(直到外循環退出)。如果在前一個循環以\ n結束之後立即在第一個循環中遇到\ n字符,則會退出外循環。這意味着要結束一個段落,您需要輸入\ n \ n。

+0

注意:'if(a [0] =='\ n')'????? –

+2

也有關:'while(x!='\ n')' - 仔細看看。在初始進入外部循環時,'x'具有什麼值?如果你的答案是「我不知道」,那麼你的公司很好,因爲你的代碼也沒有。 – WhozCraig

+0

@SamuelPeter您還需要一些東西來標記段落的結尾,例如雙\ n,否則它將被限制爲只有一個句子。 –

回答

2

退出時內部while循環,如果a[0]\n,然後t將保持1,但由於x因爲它退出內環並沒有改變,也不會重新進入它,所以你留在外部循環中。