daniel35 wrote:
int b[26],i;
for(i=0;i<26;i++)
b[i]=0;
初始化b的值可以不用這麼麻煩
只要在宣告的部份改一下....
int b[26] = {0}, i;
後面的for迴圈就可以免了
這樣不是簡單多了嘛

在C語言上的說法是"拿空間換取時間"
利用記憶體規劃來做INDEX
這樣在速度上是最快的,不過是最浪費記憶體的方法
#include<stdio.h>
int main()
{
int str_arr[26]={0},i=1;
char s[100];
scanf("%s",&s);
for(i=0;s[i]!='\0';i++)
{
if(s[i]>=97)
str_arr[s[i]-97]++;
else
str_arr[s[i]-65]++;
}
for(i=0;i<26;i++)
{
if(str_arr[i]!=0)
printf("\n%c 有 %d 個",i+65,str_arr[i]);
}
}
太久沒有寫了,總覺得怪怪的,應該這樣就完成了
我也是抓ASCII去找有幾個(0x41~0x5a和0x61~0x7x然後在累加0~25)
然後再用迴圈去輸出
例如說
看A有幾個就直接顯示出來
要是都沒有就不要輸出
不要再存在陣列裡面了
只是會用到幾個變數而已
這樣就可以省記憶體空間
寫法有很多種
有省空間也有省時間的
省時間的就是
直接用26個陣列存(不分大小寫的話)
然後再把輸入的存進去相對位置
A就放第0個
B就放第1個
最後再把陣列全部輸出就好
這樣做的次數就會比較少
-----------------------------------------分隔線-----------------------------------------
以上只是我在喇咧而已XD
不要砲轟我啊~~XD
內文搜尋

X