用C语言写一个程序应用字符数组存储从键盘输入的一行英文(100个以内),统计各个字符出现的次数。请完善程序。 裁判测试程序样例: #include <stdio.h> int main(){ char c[100]; gets(c); { /* 请在这里填写答案 */ } return 0; } 输入格式: 请输入一行字符(字符个数小于100)。 输出格式: 统计个字符的数量,一行一个字符地按照以下格式输出数量不为0的字符及其数量: <字符>--><数量> 输入样例: Having an active youngster about the house can be quite wear
时间: 2024-02-07 16:01:48 浏览: 99
下面是完整的程序代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char c[100];
int count[26] = {0};
gets(c);
int len = strlen(c);
for (int i = 0; i < len; i++) {
if (c[i] >= 'a' && c[i] <= 'z') {
count[c[i] - 'a']++;
} else if (c[i] >= 'A' && c[i] <= 'Z') {
count[c[i] - 'A']++;
}
}
for (int i = 0; i < 26; i++) {
if (count[i] != 0) {
printf("%c-->%d\n", 'a' + i, count[i]);
}
}
return 0;
}
```
程序的思路是先定义一个长度为26的整型数组count,用来存储每个字母出现的次数。然后读入一行字符串,遍历字符串中的每个字符,如果是小写字母就在count数组中对应位置的值加1,如果是大写字母也一样。最后遍历count数组,输出不为0的值及其对应的字母。
相关问题
程序应用字符数组存储从键盘输入的一行英文(100个以内),统计各个字符出现的次数。c语言
好的,以下是一个使用C语言实现的从键盘输入一行英文并统计各个字符出现次数的程序,它使用字符数组来存储输入的字符串:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 100
int main()
{
char str[MAX_LENGTH];
int count[256] = {0}; // 用于统计每个字符出现的次数
int len, i;
printf("Please enter a string (up to 100 characters):\n");
fgets(str, MAX_LENGTH, stdin);
len = strlen(str);
for (i = 0; i < len; i++) {
count[(int)str[i]]++;
}
printf("Character frequency:\n");
for (i = 0; i < 256; i++) {
if (count[i] > 0) {
printf("%c: %d\n", (char)i, count[i]);
}
}
return 0;
}
```
该程序使用 `fgets` 函数从标准输入中读取输入的字符串,并使用字符数组 `count` 来统计每个字符出现的次数。在程序中,我们通过遍历输入的字符串,并将每个字符的 ASCII 码作为下标来更新 `count` 数组中相应的元素。最后,我们遍历 `count` 数组并输出所有非零元素的字符和出现次数。需要注意的是,由于 `count` 数组的下标是字符的 ASCII 码,因此必须将字符强制转换为整型来作为数组下标。
用c语言编写一个程序程序应用字符数组存储从键盘输入的一行英文(100个以内),统计各个字符出现的次数。请完善程序。 裁判测试程序样例: #include <stdio.h> int main(){ char c[100]; gets(c); { /* 请在这里填写答案 */ } return 0; } 输入格式: 请输入一行字符(字符个数小于100)。 输出格式: 统计个字符的数量,一行一个字符地按照以下格式输出数量不为0的字符及其数量: <字符>--><数量>
完善的程序如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char c[100];
int count[26] = {0}; // 存储每个字母出现的次数,初始值为0
gets(c); // 读入一行英文
int len = strlen(c);
for (int i = 0; i < len; i++) {
if (c[i] >= 'a' && c[i] <= 'z') {
count[c[i] - 'a']++; // 小写字母
} else if (c[i] >= 'A' && c[i] <= 'Z') {
count[c[i] - 'A']++; // 大写字母
}
}
for (int i = 0; i < 26; i++) {
if (count[i] != 0) {
printf("%c-->%d\n", 'a' + i, count[i]); // 输出结果
}
}
return 0;
}
```
解释一下程序:
首先定义了一个字符数组 `c` 和一个整型数组 `count`,用于存储每个字符出现的次数。
然后使用 `gets()` 函数读入一行英文,注意这个函数已经不再安全,建议使用 `fgets()` 函数代替。
接下来遍历 `c` 数组,如果是字母,则将对应的计数器加1。
最后遍历 `count` 数组,输出数量不为0的字符及其数量。
需要注意的是,这里只考虑了英文字母,如果需要考虑其他字符,可以根据需要进行修改。
阅读全文