怎么统计一个字符串数组中各个字符的出现次数
PTA上的题 想不出来了 百度也搜不到输入样例:Having an active youngster about the house can be quite wearing.
输出:
-->10
.-->1
H-->1
a-->6
b-->2
c-->2
e-->7
g-->3
h-->2
i-->4
n-->5
o-->3
q-->1
r-->2
s-->2
t-->5
u-->4
v-->2
w-->1
y-->1
#include <stdio.h>
int main(){
char c;
gets(c);
{
/* 请在这里填写答案 */
}
return 0;
} 本帖最后由 jackz007 于 2020-11-20 12:44 编辑
#include <stdio.h>
int main(){
char c;
gets(c);
{
int d = {0} , k ;
for(k = 0 ; c ; k ++) d] ++ ;
for(k = 1 ; k < 127 ; k ++) if(d) printf("%c-->%d\n" , k , d) ;
}
return 0;
}
编译、运行实况:
D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
Having an active youngster about the house can be quite wearing.
-->10
.-->1
H-->1
a-->6
b-->2
c-->2
e-->7
g-->3
h-->2
i-->4
n-->5
o-->3
q-->1
r-->2
s-->2
t-->5
u-->4
v-->2
w-->1
y-->1
D:\0002.Exercise\C> jackz007 发表于 2020-11-20 12:43
编译、运行实况:
有点看不懂 {:10_266:} 癞蛤蟆丶ccc 发表于 2020-11-20 12:53
有点看不懂
很简单啊,ASCII 码一共有 127 个字符,所以,就定义一个有 127 个元素的数组来统计各个字符出现的次数,数组的下标索引就是字符的 ASCII 编码数值。 本帖最后由 癞蛤蟆丶ccc 于 2020-11-20 13:16 编辑
jackz007 发表于 2020-11-20 13:00
很简单啊,ASCII 码一共有 127 个字符,所以,就定义一个有 127 个元素的数组来统计各个字符 ...
第一个for 判断条件a还有那个d]++ 这几个看不懂
{:10_254:}{:10_254:}{:10_254:} 癞蛤蟆丶ccc 发表于 2020-11-20 13:14
第一个for 判断条件a还有那个d]++ 这几个看不懂
for 中的判断条件 c 其实就是在检测字符串结束标志 '\0',这个标志的 ASCII 编码就是 0,其实,也就是整数的 0,作为逻辑表达,如果 c 数值不为零,那么 c 就是真,否则为假;
循环中,c 是一个字符,这个字符本身有一个数值,就是它的 ASCII 编码,所有字符的 ASCII 数值在 0 ~ 127 之间,所以,c 其实也是一个数值介于 0 ~ 127 之间的整数,那么,c 代表一个字符,d] ++ 其实就是对应这个字符的数组元素值加 1。
jackz007 发表于 2020-11-20 13:26
for 中的判断条件 c 其实就是在检测字符串结束标志 '\0',这个标志的 ASCII 编码就是 0,其实, ...
大佬牛逼 你这三行代码 佩服佩服{:10_281:}{:10_254:}
页:
[1]