一个数组a[a,b,c,d,d,a]怎样用C语言语句求出一共有几种不同字母,各有几个

 我来答
有君容小洁4371
2011-03-07 · TA获得超过452个赞
知道小有建树答主
回答量:243
采纳率:96%
帮助的人:60万
展开全部
代码就不写了.说下思路吧.
可以通过字母的 ascii码建一个整型数组,一个就26个元素.比如'a',是数组的第一个元素,'a'-97, 就可以了. int array['a'-97]这是第一个元素
然后遍历给定数组,比如说 a,b,c,d,d,a第一个字母a,得到ascii码值,再转换为数组下标值,也就是97,'a'-97,下标值的整型值+1,此时是第一个元素
最后再遍历整型数组,输出不为0的整型值,将这个数组的下标加上一个97,就得到具体的字母

这个方法只对都是小写字母有效,如果要大小写话,需要从 'A' ascii码65 来加减做转换

呵呵, 好像有点绕.
估计你都懒得看了.
不过代码自己写最好,看别人的多少都是白搭
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
潮品收藏家

2023-03-31 · 超过25用户采纳过TA的回答
知道答主
回答量:518
采纳率:100%
帮助的人:10.2万
展开全部

要用 C 语言语句求出一个字符数组中不同字符的数量和每个不同字符的出现次数,可以使用字符数组和循环结构,具体代码实现如下:

#include <stdio.h>

int main() {
char a[] = {'a', 'b', 'c', 'd', 'd', 'a'};
int count[26] = {0};   // 存储每个字母出现的次数,初始化为0
int distinct = 0;      // 不同字母的数量,初始化为0

for (int i = 0; i < sizeof(a)/sizeof(a[0]); i++) {
int index = a[i] - 'a';  // 计算字母在数组中的下标
if (count[index] == 0) { // 如果此字母之前没有出现过
distinct++;          // 不同字母的数量加1
}
count[index]++;          // 记录此字母出现的次数
}

// 输出结果
printf("不同字母的数量为:%d\n", distinct);
for (int i = 0; i < 26; i++) {
if (count[i] > 0) {
printf("字母 %c 出现了 %d 次\n", i + 'a', count[i]);
}
}

return 0;
}

代码中,count 数组用来存储每个字母出现的次数,distinct 变量用来存储不同字母的数量。然后使用一个 for 循环遍历字符数组中的每个元素,计算每个字母在数组中的下标,如果此字母之前没有出现过,则不同字母的数量加1;然后记录此字母出现的次数。最后,使用 printf() 函数输出结果。

输出结果为:

不同字母的数量为:4
字母 a 出现了 2 次
字母 b 出现了 1 次
字母 c 出现了 1 次
字母 d 出现了 2 次

可以看到,此字符数组中一共有4个不同字母,分别是 a、b、c 和 d,它们各自出现的次数为 2、1、1 和 2。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式