问题 :不定行数的读入

问题 :不定行数的读入

问题描述
读入多行字符串,只包含小写字母,统计每种字符的出现次数

输入
输入多行,但是不知道几行,总字符数量不超过 1000010000

输出
输出每种字符的出现次数,见样例

样例
输入数据 1
sfadfjsldf
dfsdfadf
erqeptptu
afdfadf

dfasdfasdfa

fsadfasdf

fsdfasdfsafdsadf

fsdfasdfa
sewrqerqwe
r
r
w
r fdfsdfsadfsadfzmzmmzmzmmzmz
输出数据 1
a:16
d:22
e:5
f:28
j:1
l:1
m:7
p:2
q:3
r:6
s:17
t:2
u:1
w:3
z:6

那位大好人能教教我啊!

结束符是什么

供参考:

#include <stdio.h>
#include <ctype.h>
int main()
{
    int word[26]={0},i;
    char ch;
    while((ch = getchar()) != EOF){ //ctrl+z 结束输入
         if(islower(ch)) word[ch - 'a']++;
    }
    for(i = 0;i < 26; i++){
        if(word[i])
          printf("%c:%d\n", i+'a', word[i]);
    }
    return 0;
}

如果输入只有小写字母,定义一个长度为26的数组来存储计数结构即可。
第0位存储a的计数结果
第1位存储b的计数结果
...
第25位存储z的计数结果
逐行逐个字符读取输入的字符x
通过下面的命令实现计数。
a[x-'a']+=1;

img

#include<stdio.h>
#include<ctype.h>

int main()
{
    int t = 1000;                // 限定最大可见字符个数,当然空白字符不计算在内。
    int n_lower[26];            // 统计a到z各个字母数量
    int c;
    printf("输入若干行,输入0结束输入,最多只统1000个可见字符\n\n");

    for (int i = 0; i < 26; i++)
    {
        n_lower[i] = 0;
    }

    while ((c = getchar()) != EOF && (char)c != '0' && t > 0)
    {
        if (!isspace((char)c))
            t--;
        if (islower((char)c))
        {
            n_lower[(char)c - 'a']++;
        }
    }

    printf("\n可见字符总数(不包括最后个0):%d个\n", 1000 - t);

    for (int i = 0; i < 26; i++)
    {
        printf("\n字母%c:%d个",  'a' + i, n_lower[i]);
    }

    return 0;

}