2017-04-05 92 views
-1

只是想知道爲什麼這不起作用。我想使用getchar()讀取輸入並打印字符,百分比/ 100,然後打印頻率。例如對於每個字符z,hallo將打印: 'a'0.200000 1 等等。 它接受輸入,但犯規打印任何東西:打印一個字符串的字母頻率

#include <stdio.h> 
int main (void) { 
    double array[26] = {0}; 
    int i=0; 
    double count=0; 
    int j =0; 
    int start = 'a'; 
    int point = 0; 
    while (i != EOF) { 
      i=getchar(); 
      if(i>='a' && i<='z' && i!=-1) { 
       point= i-'a'; 
       array[point] = array[point] +1; 
       count= count+1; 
      } 
      else if(i>='A' && i<='Z' && i!=-1) { 
       point = i - 'A'; 
       array[point] = array[point] +1; 
       count= count+1; 
      } 
    } 
    while (j<=25) { 
     printf("'%c' %.6f %.0f", start, (count/array[j]), array[j]); 
     j++; 
     start++; 
    } 
} 
+0

注:'I = - 1'不需要在'如果(ⅰ> = 'A' && I <= 'Z' &&我! = -1)'。 'A-Z'不能有負值。 – chux

回答

1

你計算百分比是錯誤的方式。

printf("'%c' %.6f %.0f", start, (count/array[j]), array[j]);

應該是

printf("'%c' %.6f%% %.0f\n", start, (array[j]/count*100), array[j]);

+0

是的,這是一個很好的解決方法,但是,它不打印任何東西,並停在i = getchar()處。出於某種原因,當它停下來時我總是等於10。 – maxphat

+0

什麼等於10? @maxphat – Jiahao

+0

當第10行的i = 10時執行停止,其中i = getchar() – maxphat