使用C语言统计一个字符串中每个字母出现的次数

文章目录

  • 每日一言
  • 题目
  • 大体思路
  • 解题过程
  • 结语

每日一言

Wishing is not enough; we must do.
光是许愿望是不够的; 我们必须行动。

题目

输入一个字符串,统计在该字符串中每个字母出现的次数
例如:
输入:i am a student
输出:a:2 d:1 e:1 i:1 m:1 n:1 s:1 t:2 u:1

大体思路

  1. 题目说输入一个字符串,还说要统计字符串中每个字母的次数,那么肯定要将输入的字符串存起来。
  2. 要统计每个字母出现的个数,那肯定要创建一个整形数组来存放出现次数。
  3. 想办法将字母与该字母出现的次数绑定在一块
  4. 输出

解题过程

  1. 创建一个数字数组和一个字符数组

  2. 将输入的字符串放在字符数组中(我在这里使用了gets函数)
    使用C语言统计一个字符串中每个字母出现的次数_第1张图片

  3. 使用循环将字母与该字母出现的次数绑定在一块

#include
int main()
{
	char arr1[100] = { 0 };
	int arr2[200] = { 0 };
	gets(arr1);
	int i = 0;
	for (i = 0; arr1[i] != '\0'; i++)
	{
		arr2[arr1[i]]++;
	}
	
	return 0;
}

到这里肯定有人要问了:
临水你这循环里写的是什么玩意啊,我怎么有点迷迷糊糊的?
别急,让我给你慢慢道来
将arr1[i]放在arr2[]中,其实是将arr1[i]中的字符转换成对应的ASCII码值
如果arr1[i]中存放的是字符a,那么arr2[arr1[i]]等价于arr2[65]。最外面的++,表示在该位置上存的数加一

  1. 接下来就是输出了
#include
int main()
{
	char arr1[100] = { 0 };
	int arr2[200] = { 0 };
	gets(arr1);
	int i = 0;
	for (i = 0; arr1[i] != '\0'; i++)
	{
		arr2[arr1[i]]++;
	}
	for (i = 'a'; i<'z'; i++)//我在这里限定输出小写字母出现的次数
	{
		if (arr2[i] != 0)
			printf("%c:%d ", i, arr2[i]);//在这里i是字母的ASCII值
	}
	return 0;
}

if语句用来判断ASCII码值为 i 的字符串中是否出现过

试运行:
使用C语言统计一个字符串中每个字母出现的次数_第2张图片


结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
想成为大佬那就保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


你可能感兴趣的:(C语言,c语言,开发语言)