統計一行字元中各類字元的個數
阿新 • • 發佈:2020-12-27
統計一行字元中各類字元的個數
使用者輸入一行字元(以回車符作為結束),請統計這行字元中,大小寫字母個數、數字字元個數、空格個數和其它字元個數。
輸入格式:
一行字元,以回車符作為結束。
輸出格式:
輸出4個以空格作為間隔的整數,分別代表大小寫字母個數、數字字元個數、空格個數和其它字元的個數。
輸入樣例:
Tersfi23&* sdf A$
輸出樣例:
10 2 4 3
程式碼實現:
一、常規做法:(初學時的思路)
#include<stdio.h>
int main()
{
int i=0,a=0,b=0,c=0,d=0;
char ch[80];
gets (ch);
for(i=0;ch[i]!=0;i++)
{
if((ch[i]>='A'&&ch[i]<='Z')||(ch[i]>='a'&&ch[i]<='z'))
a++;
else if(ch[i]>='1'&&ch[i]<='9')
b++;
else if(ch[i]==32)
c++;
else d++;
}
printf("%d %d %d %d",a,b,c,d);
return 0;
}
二、二刷時的做法:
#include<stdio.h>
int main()
{
int i,ch[300] = {0},sum1 = 0,sum2 = 0,sum3 = 0,sum4 = 0;
char a;
while((a = getchar()) != '\n')//逐個輸入字元的同時記錄字元個數
{
ch[a]++;
}
for(i=0;i<=255;i++)//在ASCII碼錶範圍內
{
if((i>=65&&i<=90)||(i>=97&&i<=122))//若為大小寫字母
{
sum1 += ch[i];
}
else if(i>=48&& i<=57)//若為數字
{
sum2 += ch[i];
}
else if(i==32)//若為空格
{
sum3 = ch[i];
}
else sum4 += ch[i];//若為其它
}
printf("%d %d %d %d",sum1,sum2,sum3,sum4);
return 0;
}
騎友們倒是給色狼點個贊哪!
這個方法好像叫什麼雜湊雜湊?我也不是很清楚nei。