字符统计(C代码实现)
/*功能:字符统计 *输入: *有多组测试数据,每行一个字符串,串长小于1e7 *以EOF标志结束程序。 * *输出: *对于每组测试,每行输出四个整数,第一个数是空格数, *第二个是数字字符个数,第三个是字母个数(包括大小写) *第四个是单词个数,被空格所分隔的任何非空字符串都看作一个单词 * *样例输入: * ABC abcd 12345 * ABCDEFG * *样例输出: * 2 5 7 3 * 2 0 7 1 * *限制: * Time 500ms * Memory 1000kb */ #include<stdio.h> #include<string.h> #include<stdlib.h> int main() { char s; int digs=0, chs=0, blanks=0, words=0, m=0, flag=0; //flag为word(单词)标志符 printf("Please input a word(in english):n"); while((s=getchar())!=EOF) //循环输入,CTRL+Z退出循环 { if(s=='n') { if(flag==1) printf("空格:%d 数字:%d 字符:%d 单词:%dn", blanks, digs, chs, words+1); else printf("空格:%d 数字:%d 字符:%d 单词:%dn", blanks, digs, chs, words); digs=chs=blanks=words=m=0, flag=1; } else if(s==' ') {blanks++;flag=0;} //计数空格个数, 根据空格判断单词 else if(s>='0'&&s<='9') {digs++;m=1;flag=1;} //计数数字个数 else if(s>='A'&&s<='Z'||s>='a'&&s<='z') //计数字母个数 {chs++;m=1;flag=1;} else flag=1; if(m==1&&flag==0) {words++;m=0;flag=2;} //当m=1且flag=0,m是为了避免多个空格存在时,单词个数判断不准 } system("pause"); return 0; }