代码
#include<stdio.h>
int main(){
int z[26]={0},i;
char c[20]={},d;
do{
scanf("%s",c);
for(i=0;c[i];i++){
if(c[i]>='a'&&c[i]<='z'){
z[c[i]-'a']+=1;
}
}
} while(d=getchar()==' ');
for(i=0;i<25;i++){
printf("%d ",z[i]);
}
printf("%d",z[25]);
return 0;
}
友情提示
1、scanf函数遇到空格不录入,故而使用这个循环语句。相当于是以空格隔开的每串字符为单位录入字符数组,故而字符数组里是没有空格的。
2、最后输出的时候多用了一次printf函数是因为输出最后一个数组成员时后面不能多个空格。
3、多用了一个整型数组对每个字母进行计数,整型数组下标是用ASCII码向字符数组搭桥。
题目描述
小明正在做作业。老师给了他一些文章,让他说出每个字母出现的次数。小明对这个问题无从下手,你可以帮帮他吗?
输入格式
输入行包含一篇文章,所有字母都是小写的。你只需要数一数每个字母的数量。文章的长度 l(0≤l≤105)
。
输出格式
针对输入的文章,你必须有序说出每个字母出现的次数 n
。n
是一个正整数,同时字母顺序为从“a”
到“z”
。正整数之间以空格间隔。
输入输出样例
输入样例1 hello, this is my first acm contest! work hard for hdu acm.
输出样例1 3 0 3 2 2 2 0 4 3 0 1 2 3 1 4 0 0 4 4 4 1 0 1 0 1 0
说明/提示
只需统计各字母出现次数,无需计算符号。