1. 程式人生 > 其它 >統計一行字元中各類字元的個數

統計一行字元中各類字元的個數

技術標籤:c語言c語言

統計一行字元中各類字元的個數

使用者輸入一行字元(以回車符作為結束),請統計這行字元中,大小寫字母個數、數字字元個數、空格個數和其它字元個數。

輸入格式:
一行字元,以回車符作為結束。

輸出格式:
輸出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。