c语言统计小写字母出现次数
时间: 2023-05-29 08:01:31 浏览: 117
以下是一个统计小写字母出现次数的c语言代码示例:
```c
#include <stdio.h>
int main()
{
char str[100];
int i, freq[26] = {0};
printf("输入一个字符串:");
gets(str); // 获取用户输入的字符串
for(i = 0; str[i] != '\0'; i++)
{
if(str[i] >= 'a' && str[i] <= 'z') // 判断字符是否为小写字母
{
freq[str[i] - 'a']++;
}
}
printf("\n小写字母出现次数:\n");
for(i = 0; i < 26; i++)
{
if(freq[i] != 0)
{
printf("%c - %d\n", i + 'a', freq[i]);
}
}
return 0;
}
```
该代码中,我们使用了一个大小为26的数组 `freq` 来统计每个小写字母出现的次数。首先,我们获取用户输入的字符串,然后遍历该字符串,对于每个小写字母,我们在 `freq` 数组相应位置加 1。最后,我们遍历 `freq` 数组,输出每个小写字母出现的次数。
相关问题
C语言编写程序从标准输入中读入一段英文,统计其中小写字母出现次数,并以柱状图的形式按字母表显示其出现次数,并且出现次数为0的字母也输出
在C语言中,为了实现这个功能,你需要完成以下几个步骤:
1. **读取并统计字符**:
使用`fgetc()`函数逐个读取用户输入的字符,检查是否为小写字母。可以借助ASCII码来判断,小写字母的范围通常是97到122。
```c
int count[26] = {0}; // 初始化字母计数数组
while (getchar() != EOF) {
if (islower((unsigned char) getchar())) {
count[tolower(getchar()) - 'a']++;
}
}
```
2. **处理空格和结束符**:
要忽略空格和其他非字母字符,可以在读取字符后过滤它们。
3. **打印字母和次数**:
循环遍历`count`数组,打印每个字母及其出现次数。对于出现次数为0的字母,也可以单独列出。
```c
for (int i = 0; i < 26; ++i) {
if (count[i] > 0) {
printf("%c appears %d times.\n", 'a' + i, count[i]);
} else {
printf("Letter '%c' does not appear.\n", 'a' + i);
}
}
```
4. **创建简单柱状图**:
对于实际的柱状图输出,C语言本身并不直接支持,你可以选择输出类似“*”的符号,代表字母出现次数。例如,"*"的数量等于字母出现的次数。
```c
for (int i = 0; i < count[i]; ++i) {
printf("*");
}
printf("\n");
```
完整代码示例:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
int count[26] = {0};
while ((char)getchar() != '\n') {
if (islower((unsigned char) getchar())) {
count[tolower(getchar()) - 'a']++;
}
}
for (int i = 0; i < 26; ++i) {
if (count[i] > 0) {
printf("%c appears ", 'a' + i);
for (int j = 0; j < count[i]; ++j) {
printf("*");
}
printf("\n");
} else {
printf("Letter '%c' does not appear.\n", 'a' + i);
}
}
return 0;
}
```
c语言 统计每个字母出现的次数
在C语言中统计每个字母出现的次数,可以使用字符数组、哈希表或者二维数组等数据结构来实现。这里是一个基本的示例,使用字符数组配合ASCII值来完成这个任务:
```c
#include <stdio.h>
#include <ctype.h>
#define ALPHABET_SIZE 26
void count_chars(char *str) {
int freq[ALPHABET_SIZE] = {0}; // 初始化一个大小为26的数组,记录每个字母频率
for (int i = 0; str[i]; i++) { // 遍历字符串中的每一个字符
char ch = tolower(str[i]); // 转换为小写字母,统一处理
if (isalpha(ch)) { // 检查是否为字母
freq[ch - 'a']++; // 增加对应字母的频率
}
}
for (int i = 0; i < ALPHABET_SIZE; i++) {
if (freq[i] > 0) { // 只显示非零的频率
printf("'%c': %d\n", 'a' + i, freq[i]);
}
}
}
int main() {
char input[] = "Hello, World!";
count_chars(input);
return 0;
}
阅读全文