while
迴圈重複輸入,用 gets()
來讀入空白和控制 EOF 結束,並存到 str
字元陣列裡
char str[1001] = {0};
while(gets(str)){
...
}
bool
型態 (記得 include<stdbool.h>
) 的 flag 變數當作開關,控制每筆輸入間的空白行
#include<stdbool.h>
bool flag = false;
while(gets(str)){
if(flag){
printf("\n");
}
flag = true;
...
}
for
迴圈分別處理輸入的每個字元
int count[128] = {0};
for(i = 0; i < strlen(str); i++){
count[str[i]]++;
}
for
迴圈跑次數for
迴圈跑 ASCIIif
判斷,如果該次數有對應的 ASCII 就輸出for(i = 1; i <= strlen(str); i++){ // the number of each ASCII
for(j = 127; j >= 32; j--){ // counter of ASCII
if(count[j] == i){
printf("%d %d\n", j, i);
}
}
}
#include<stdio.h>
#include<stdbool.h>
int main(){
char str[1001] = {0};
int i, j;
bool flag = false;
while(gets(str)){
if(flag){
printf("\n");
}
int count[128] = {0};
flag = true;
for(i = 0; i < strlen(str); i++){
count[str[i]]++;
}
for(i = 1; i <= strlen(str); i++){ // the number of each ASCII
for(j = 127; j >= 32; j--){ // counter of ASCII
if(count[j] == i){
printf("%d %d\n", j, i);
}
}
}
}
return 0;
}