编写程序统计从键盘输入的一行文本中各个字母的个数。 输入以回车键结束。 不区分大小写,大写字母与相应的小写字母按照同一个字母看待。 要求输出按照各个字母出现的个数从大到小进行排序,出现的个数相同的,按

简介: 编写程序统计从键盘输入的一行文本中各个字母的个数。 输入以回车键结束。 不区分大小写,大写字母与相应的小写字母按照同一个字母看待。 要求输出按照各个字母出现的个数从大到小进行排序,出现的个数相同的,按

编写程序统计从键盘输入的一行文本中各个字母的个数。


输入以回车键结束。


不区分大小写,大写字母与相应的小写字母按照同一个字母看待。


要求输出按照各个字母出现的个数从大到小进行排序,出现的个数相同的,按照字母在字母表中的先后顺序进行排序。


***输入格式:调用getchar()函数依次输入每个字符

***输出格式:"%c(%c):%d\n"


例如输入以下文本:


Hello World


程序将输出:


L(l):3

O(o):2

D(d):1

E(e):1

H(h):1

R( r):1

W(w):1

A(a):0

B(b):0

C( c):0

F(f):0

G(g):0

I(i):0

J(j):0

K(k):0

M(m):0

N(n):0

P( p):0

Q(q):0

S(s):0

T(t):0

U(u):0

V(v):0

X(x):0

Y(y):0

Z(z):0


#include <stdio.h>
#include <stdlib.h>
struct alpha{               
char c;
int count;
};
void quicksort(struct alpha *v[], int left, int right);
int main()
{               
    struct alpha *x[26];
    int i;
    for (i = 0; i < 26; i ++) {               
        x[i] = (struct alpha *)malloc(sizeof(struct alpha));
        x[i]->c = 'A' + i;
        x[i]->count = 0;
    }
    char c;
    while((c = getchar()) != '\n') {                
        if (c >= 'a' && c <= 'z')
            c = c - 'a' + 'A';
        if (c >= 'A' && c <= 'Z')
            x[c - 'A']->count ++;
    }
    quicksort(x, 0, 25);
    for (i = 0; i < 26; i ++)
        printf("%c(%c):%d\n", x[i]->c, 'a' + x[i]->c - 'A', x[i]->count);
    return 0;
}               
int compare(struct alpha *x1, struct alpha *x2) {               
    if (x1->count > x2->count)
        return 1;
    else if (x1->count < x2->count)
        return -1;
    else if (x1->c < x2->c)
        return 1;
    else if (x1->c > x2->c)
        return -1;
    else
        return 0;
}               
void swap(struct alpha *v[], int i, int j)
{               
    struct alpha *temp;
    temp = v[i];
    v[i] = v[j];
    v[j] = temp;
}               
void quicksort(struct alpha *v[], int left, int right)
{               
    if (left >= right)
        return;
    int last = left;
    int i;
    for ( i = left + 1; i <= right; i ++)
        if(compare(v[i],v[left]) > 0) {               
            last ++;
            swap(v, last, i);
        }
    swap(v, left, last);
    quicksort(v,left, last - 1);
    quicksort(v, last + 1, right);
}
相关文章
|
2月前
判断输入的字母是元音,还是辅音
【10月更文挑战第15天】判断输入的字母是元音,还是辅音。
38 5
|
6月前
统计出其中英文字母、空格、数字和其它字符的个数
【6月更文挑战第8天】统计出其中英文字母、空格、数字和其它字符的个数。
48 9
|
7月前
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。 提示:利用ord()函数来获得字符的 ASCIl。
171 1
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。
|
7月前
53.从键盘输入任意一串字符串,程序输出同样的一串字符,要求输出字符串中大小写相互转化,其他符号不变。如输入“a123BxC”,则输出“A123bXc”
53.从键盘输入任意一串字符串,程序输出同样的一串字符,要求输出字符串中大小写相互转化,其他符号不变。如输入“a123BxC”,则输出“A123bXc”
53 0
题目:分别统计字符串中大写字母和小写字母的个数。
题目:分别统计字符串中大写字母和小写字母的个数。
|
C语言 C++
连续读入多个单词,然后统计这些单词的总的长度、以及单词个数。直到输入结束:(按下Ctrl +z, 就会输入一个特殊的字符:文件结束符EOF)分别使用C和C++实现。
连续读入多个单词,然后统计这些单词的总的长度、以及单词个数。直到输入结束:(按下Ctrl +z, 就会输入一个特殊的字符:文件结束符EOF)分别使用C和C++实现。
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)
534 0
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)
求字符串中大小写字母个数及其他符号个数!
求字符串中大小写字母个数及其他符号个数!
68 0
判断字符串首个字母是否大写,若大写,则输出该字符串中大写字母的个数 并打印。
判断字符串首个字母是否大写,若大写,则输出该字符串中大写字母的个数 并打印。
168 0
|
存储 算法
算法:编程在一个已知的字符串中查找最长单词,假定字符串中只包含字母和空格,空格用来分隔不同单词
算法:编程在一个已知的字符串中查找最长单词,假定字符串中只包含字母和空格,空格用来分隔不同单词