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

每日一言

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

这里有一些C语言练习题,有详细的题解哟~可以用来巩固学到的知识,把这些题搞懂,拿个蓝桥杯的奖还是很容易哒~
点击即可跳转:C语言练习题汇总

1. 题目

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

2. 大体思路

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

3. 解题过程

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

  2. 将输入的字符串放在字符数组中(我在这里使用了gets函数)
    在这里插入图片描述

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

#include<stdio.h>
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<stdio.h>
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 的字符串中是否出现过

试运行:
在这里插入图片描述


结语

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


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

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

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


  • 38
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月临水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值