📅  最后修改于: 2023-12-03 15:00:12.549000             🧑  作者: Mango
本题是C测验第105题的第5个问题,题目较为简单,要求熟练掌握C语言中字符类型和数组的相关知识。
请编写一个程序,接收用户输入的一行字符,统计其中每个字符出现的次数并输出。
本程序设计的一般流程如下:
str
,用于存储用户输入的字符串。count
,用于记录每个字符出现的次数。fgets()
函数从标准输入中读取用户输入的一行字符串,存入字符数组 str
中。strlen()
函数计算字符数组 str
的长度,并将其存入变量 len
中。str
中的每个字符,并将其对应的 count
数组计数器加一。#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 1000 // 定义最大输入长度
int main()
{
char str[MAX_LENGTH];
int count[128] = {0}; // 用于记录每个字符出现的次数,共有128个ASCII字符
printf("请输入字符串:\n");
fgets(str, MAX_LENGTH, stdin);
int len = strlen(str);
for (int i = 0; i < len; i++)
count[str[i]]++;
printf("每个字符出现的次数为:\n");
for (int i = 0; i < 128; i++)
{
if (count[i] != 0)
printf("%c : %d\n", (char)i, count[i]); // 类型强制转换
}
return 0;
}
str
的长度应该大于用户输入的字符串长度,否则可能会出现缓冲区溢出的问题。fgets()
函数读取用户输入的字符串时,应该指定最大输入长度。str
时,应该将每个字符转化为其对应的ASCII码,以便于将其作为 count
数组的下标并进行计数。本题目通过对字符数组和数组的操作来巩固学习者对C语言的基本语法的理解。同时,也增强了学习者的C语言调试能力和问题解决能力。