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

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

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


输入以回车键结束。


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


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


***输入格式:调用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);
}
相关文章
|
17天前
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。 提示:利用ord()函数来获得字符的 ASCIl。
18 1
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。
|
6月前
题目:分别统计字符串中大写字母和小写字母的个数。
题目:分别统计字符串中大写字母和小写字母的个数。
|
10月前
|
C语言 C++
连续读入多个单词,然后统计这些单词的总的长度、以及单词个数。直到输入结束:(按下Ctrl +z, 就会输入一个特殊的字符:文件结束符EOF)分别使用C和C++实现。
连续读入多个单词,然后统计这些单词的总的长度、以及单词个数。直到输入结束:(按下Ctrl +z, 就会输入一个特殊的字符:文件结束符EOF)分别使用C和C++实现。
求字符串中大小写字母个数及其他符号个数!
求字符串中大小写字母个数及其他符号个数!
42 0
判断字符串首个字母是否大写,若大写,则输出该字符串中大写字母的个数 并打印。
判断字符串首个字母是否大写,若大写,则输出该字符串中大写字母的个数 并打印。
113 0
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)
394 0
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)
输入7个整数(0-100),代表7个整数,用空格隔开.小数点后保留两位小数,每行输入后换行.去掉一个最高分一个最低分,输出每组的平均分.用一个循环完成(7个面试官问题)
输入7个整数(0-100),代表7个整数,用空格隔开.小数点后保留两位小数,每行输入后换行.去掉一个最高分一个最低分,输出每组的平均分.用一个循环完成(7个面试官问题)
122 0
输入7个整数(0-100),代表7个整数,用空格隔开.小数点后保留两位小数,每行输入后换行.去掉一个最高分一个最低分,输出每组的平均分.用一个循环完成(7个面试官问题)
去掉多余的空格---输入一个字符串,字符串中可能包含多个连续的空格,请将多余的空格去掉,只留下一个空格。输入格式
输入一个字符串,字符串中可能包含多个连续的空格,请将多余的空格去掉,只留下一个空格。 输入格式 共一行,包含一个字符串。 输出格式 输出去掉多余空格后的字符串,占一行。 数据范围 输入字符串的长度不超过 200200。 保证输入字符串的开头和结尾没有空格。
251 0
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
532 0
(函数)输入一个字符串将元音字母输出
(函数)输入一个字符串将元音字母输出