2013-05-20 62 views
0

我正在讀取輸入並嘗試以圖形格式打印所有輸入的小寫字符,能夠讀取它並記錄每個字符重複的次數但不記錄能夠以圖形方式打印它,可以幫助我。這裏是我的代碼讀取輸入字符並以圖形格式打印出現

#include <stdio.h> 
#include <ctype.h> 
int print_fun(int); 
int main() { 
int ch = 0, i = 0; 
int char_count[26] = {0}; 
printf("\nNOTE:PRESS * TO EXIT\n"); 
while((ch = getchar()) != '*') { 
    if(islower(ch)) 
     char_count[ch - 'a']++; 
} 
printf("\n"); 
for(i = 0; i < 26; i++) 
    //printf("%c:%d\n",'a'+ i, char_count[i]); 
    //printf("%c:\n", 'a'+ i, print_star(char_count[i])); 
    printf("%c:\n",print_star(char_count[i]),'a'+ i); 
printf("\n"); 
return 0; 
} 
int print_star(int value) { 
int i = 0; 
for(i = 0; i < value; i++) 
printf("*"); 
} 

O/P:aaxyyz

a:** 
b: 
c: 
... 
... 
x:* 
y:** 
z:* 
+5

請出示你將如何喜歡看一個例子。 「圖形方式」不是很有幫助。 –

+0

@LayTaylor:我需要的o/p已經顯示 – user1985641

回答

1

printf呼叫缺少的format參數,你有這樣的:

printf("%d:%c\n",print_star(char_count[i]),'a'+ i); 

,但你傳遞兩個參數printf,據我所知這是你的意思:

printf("%d:%c\n",print_star(char_count[i]),'a'+ i); 

此外,print_starint返回值,但你沒有return聲明,我想你想回i在這種情況下,你應該增加:

return i ; 

末。最後沒有返回的行爲是未定義的。最後,它看起來像你在向前聲明一個錯字,這樣的:

int print_fun(int); 

應該是:

int print_star(int value); 
1
#include <stdio.h> 
#include <ctype.h> 

//int print_fun(int); 
void print_star(int); 

int main(void){ 
    int ch = 0, i = 0; 
    int char_count[26] = {0}; 
    printf("\nNOTE:PRESS * TO EXIT\n"); 
    while((ch = getchar()) != '*'){ 
     if(islower(ch)) 
      char_count[ch - 'a']++; 
    } 
    printf("\n"); 
    for(i = 0; i < 26; i++){ 
     printf("%c:",'a'+ i); 
     print_star(char_count[i]); 
     printf("\n"); 
    } 
    printf("\n"); 
    return 0; 
} 

void print_star(int value){ 
    int i = 0; 
    for(i = 0; i < value; i++) 
     printf("*"); 
} 
+0

有代碼但沒有解釋的答案並不是真的答案,我看到有幾個人只爲此投票。至少在代碼中放入內聯註釋。 –

+0

這似乎並不需要註釋。但如果有必要,最好看到你的答案。 ;他會注意到這個區別,因爲他寫了原始代碼。 – BLUEPIXY

相關問題