1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C语言利用ASCII码表统计字符串每个字符出现的次数

C语言利用ASCII码表统计字符串每个字符出现的次数

时间:2019-07-25 15:55:00

相关推荐

C语言利用ASCII码表统计字符串每个字符出现的次数

今天在图书馆老胡突然给我出题

在C语言里面写个能够统计并打印字符串中字符出现次数

心想这不是常规操作吗?

“定义两个char数组,输入,赋值给另一个字符数组

通过一个for循环嵌套两个for循环,比较,相同的值数组赋值=’*’。

然后判断当数组值不等于0的时候和原数组进行比较再打印输出”

我的代码

#include<stdio.h>#include<string.h>#define maxsize 100int main(void){char s[maxsize],s1[maxsize];scanf("%s",s);for(int i=0,length=strlen(s);i<length;++i){s1[i]=s[i];}for(int i=0,length=strlen(s);i<length;++i){for(int j=i+1;j<length;++j){if(s[i]==s[j]){s1[j]='*';}}if(s1[i]!='*'){int number=0;for(int k=0;k<length;++k){if(s1[i]==s[k]){++number;}}printf("%c出现次数:%d\n",s1[i],number);}}}

运行正确

##但是老胡的方法更为简单粗暴,直接利用相同字符对应的数字一样作为数组下标,进行自加

想法很新颖,代码也少……服了

#include<stdio.h>#include<string.h>#define maxsize 100int main(void){char s[maxsize];scanf("%s",s);int asc[127]={0};//a-z字符对应ASCII码表小写字母97-122,大写字母是 65-90,小写大写相差32 for(int i=0,length=strlen(s);i<length;++i){asc[int(s[i])]++;//对应的ASCII码下标加1,同一个字母对应的下标都相同,进行计数 } for(int j=0;j<123;++j){if(asc[j]!=0){printf("字母%c出现次数:%d\n",j,asc[j]);}} }

但是这个程序还有个不好的地方,没有按照输入字符串的顺序打印,而是从A-Z a-z打印的

emmm……

我觉得C的输入输出太麻烦还是C++好

哈哈哈!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。