设字符集为26个英文字母,其出现频度如附件中的频度表所示。编写c语言程序,先构建对应的哈夫曼树,再利用此树对报文 \"the java programing language is my favorit
时间: 2023-04-30 14:04:22 浏览: 91
设计符集为26个英文字母,其出现频度如附件中的频度表所示。编写C语言程序,先构建对应的哈夫曼树,再利用此树对报文文本 "the java programing language is my favorite" 进行编码。
相关问题
用c语言编写一个程序 输入一个字符串 输出其中所出现过的大写英文字母
下面是一个示例程序,可以实现输入一个字符串,然后输出其中所有出现过的大写英文字母:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[100];
int count[26] = {0};
int i, len;
printf("请输入一个字符串:\n");
fgets(str, 100, stdin); // 从标准输入读取字符串
len = strlen(str);
for (i = 0; i < len; i++) {
if (isupper(str[i])) { // 如果当前字符是大写字母
count[str[i] - 'A']++; // 统计出现次数
}
}
printf("出现过的大写英文字母有:\n");
for (i = 0; i < 26; i++) {
if (count[i] > 0) {
printf("%c ", 'A' + i); // 输出字母
}
}
return 0;
}
```
上述程序中,我们定义了一个字符数组 `str`,用来存储用户输入的字符串。然后我们定义了一个整型数组 `count[26]`,用来统计每个大写字母出现的次数。变量 `i` 用来循环遍历字符串中的每个字符,变量 `len` 是字符串的长度。
在循环中,我们首先使用 `isupper` 函数判断当前字符是否是大写字母。如果是,就通过 `count` 数组统计出现次数。
最后,我们再次循环输出出现过的大写英文字母。
注意,我们使用了 `fgets` 函数来从标准输入读取字符串,而不是 `scanf` 函数。这是因为 `fgets` 可以一次读取整行字符串,而 `scanf` 只能读取一个单词,容易导致输入不完整的问题。
用c语言编写程序统计一个字符串中26个大小写字母出现的次数。
以下是使用 C 语言编写的程序,用于统计一个字符串中 26 个大小写字母出现的次数。
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int count[26] = {0};
int len, i;
printf("请输入一个字符串:");
gets(str);
len = strlen(str);
for(i=0; i<len; i++) {
if(str[i] >= 'a' && str[i] <= 'z') {
count[str[i] - 'a']++;
}
else if(str[i] >= 'A' && str[i] <= 'Z') {
count[str[i] - 'A']++;
}
}
printf("字母出现次数如下:\n");
for(i=0; i<26; i++) {
printf("%c:%d\n", 'a'+i, count[i]);
}
return 0;
}
```
该程序首先定义了一个字符串数组 `str`,用于存储用户输入的字符串。然后定义了一个长度为 26 的整型数组 `count`,用于存储每个字母出现的次数。接着使用 `gets()` 函数获取用户输入的字符串,并使用 `strlen()` 函数获取字符串的长度。
接下来使用一个循环遍历字符串中的每个字符,如果是小写字母,则将对应位置的计数器加 1;如果是大写字母,则将对应位置的计数器加 1。最后使用一个循环遍历整型数组,输出每个字母出现的次数。
需要注意的是,该程序使用了 `gets()` 函数获取用户输入的字符串,这个函数会读取一整行字符串,包括空格和其他特殊字符。这个函数有安全性问题,可能会导致缓冲区溢出,因此在实际应用中应该使用其他安全的函数来获取用户输入的字符串,比如 `fgets()` 函数。