c++字符数组

题目描述

题目描述

输入一个英文句子(长度不会超过100),和他的长度,统计每个字母出现的个数。

输入

第一行包括一个整数,表示句子的长度,长度不会超过100。数字后可能会有多余的无效字符 请gets掉。

第二行包括一个英文句子。

输出

按顺序输出每个出现的小写字母的个数。

样例输入

25
pascal is so interesting!

样例输出

a 2
c 1
e 2
g 1
i 3
l 1
n 2
o 1
p 1
r 1
s 4
t 2

程序

#include <bits/stdc++.h>
using namespace std;
char a[1000];
char tmp[10];
int ans[10000];
int main()
{
	int n;
	cin >> n;
	gets(tmp);//去掉无效的字符 
	gets(a);
	memset(ans,0,sizeof(ans));//把整个ans数组归零 
	for (int i = 0;i <= n - 1;i ++) 
	{
		if ((a[i] <= 'z') && (a[i] >= 'a'))
		{
			ans[a[i] - 'a' + 1] ++;//a[i] - 'a' + 1 是把字母转换成字母对应的位置
			/*ans[a[i] - 'a' + 1] ++;是把ans数组里字母对应的位置加1,进行统计*/
		}
	}
	for (int i = 1;i <= 26;i ++)
	{
		if (ans[i] != 0)//过滤掉字母个数为零的情况 
		{
			printf("%c %d \n",i + 'a' - 1,ans[i]);//i + 'a' - 1是把字母对应的位置转换成字母的ascll码 
		} 
	}
	return 0;
}
posted @ 2019-06-16 15:55  牛大了的牛大  阅读(971)  评论(0编辑  收藏  举报