/**
* 大小写字母的统计
*
*/
#include <stdio.h>
void main()
{
int i, j, total = 0;
//设计结构体--设计及结构体中有哪些成员变量--定义结构体的同时对进行声明
struct letter
{
//字母
char c;
//出现的次数
int n;
//出现的次数百分比
float freq;
} capt[26], low[26];
char ch;
//对所有的声明的结构体进行初始化
for (i = 0; i < 26; i++)
{
capt[i].c = 'A' + i;
capt[i].n = 0;
capt[i].freq = 0;
low[i].c = 'a' + i;
low[i].n = 0;
low[i].freq = 0;
}
printf("Input strings ,\",@\" for end.\n");
//还是需要手动的输入一串字符
ch = getchar();
while (ch != '@')
{
if (ch > 'A' && ch <= 'Z')
{
capt[ch - 'A'].n++;
}
else if (ch >= 'a' && ch <= 'z')
{
// printf("hhhhh%c\n", ch);
low[ch - 'a'].n++;
}
total++;
//没有结束符号就继续输入
ch = getchar();
printf("input");
}
//计算不同字符出现频率的百分比
for (i = 0; i < 26; i++)
{
if (capt[i].n != 0)
{
capt[i].freq = ((float)capt[i].n / total) * 100;
}
}
//大小写的计算可以放在一起。。。
for (i = 0; i < 26; i++)
{
if (low[i].n != 0)
{
low[i].freq = ((float)low[i].n / total) * 100;
}
}
//输出统计的结果
j = 0;
for (i = 0; i < 26; i++)
{
//printf("------------");
if (j % 5 == 0)
{
printf("\n");
}
//printf("gg++++gg%d", capt[i].n);
if (capt[i].n != 0)
{
// printf("++++++");
printf("%c\t,%lf\t", capt[i].c, capt[i].freq);
}
j++;
}
//输出小写的部分
j = 0;
for (i = 0; i < 26; i++)
{
//printf("------------");
if (j % 5 == 0)
{
printf("\n");
}
//printf("gg++++gg%d", capt[i].n);
if (low[i].n != 0)
{
//printf("++++++");
printf("%c\t,%lf\t", low[i].c, low[i].freq);
}
j++;
}
}
12.2.2统计输入的字符串每个大小写字符所占的比例(C语言结构体+ASCII码的应用)
猜你喜欢
转载自blog.csdn.net/qq_42664961/article/details/103984811
今日推荐
周排行