一个数组a[a,b,c,d,d,a]怎样用C语言语句求出一共有几种不同字母,各有几个
可以通过字母的 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 来加减做转换
呵呵, 好像有点绕.
估计你都懒得看了.
不过代码自己写最好,看别人的多少都是白搭
要用 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。