c++字符数组

c/c++

浏览数:155

2019-7-24

AD:资源代下载服务

题目描述

题目描述

输入一个英文句子(长度不会超过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;
}

作者:牛大了的牛大