目录利用ASCII码表统计字符串每个字符出现的次数我的代码运行正确总结 利用ASCII码表统计字符串每个字符出现的次数 在C语言里面写个能够统计并打印字符串中字符出现次数心
在C语言里面写个能够统计并打印字符串中字符出现次数心想这不是常规操作吗?
定义两个char数组,输入,赋值给另一个字符数组
通过一个for循环嵌套两个for循环,比较,相同的值数组赋值=‘*’。
然后判断当数组值不等于0的时候和原数组进行比较再打印输出”
#include<stdio.h>
#include<string.h>
#define maxsize 100
int 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 100
int 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++好
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: C语言如何利用ASCII码表统计字符串每个字符出现的次数
本文链接: https://www.lsjlt.com/news/178449.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0