题解 | #计算某字符出现次数#
计算某字符出现次数
https://www.nowcoder.com/practice/a35ce98431874e3a820dbe4b2d0508b1
我的这个比较复杂
设置了一个27*2大小的二维数组lib[27][2](第一位存预设字符,第二位存该字符出现的次数)当做字典
0-25存字母
26存非字母的字符
#include <stdio.h>
int main()
{
char arry[1000]={'\0'};
char ch=0;
int i=0,S_num=0,num=0;//S_num存接收的字符串长度,num存某字符在字典中的位置
int lib[27][2]={0};//预设字典
num='A';
for(i=0;i<26;i++)//赋初值
{
/*printf("i:%d\n",i);*/
for(S_num=0;S_num<2;S_num++)//
{
/*printf("S_num:%d\n",S_num);*/
if(S_num==0)//放入A-Z大写字母
{
lib[i][S_num]=num;
}
if(S_num==1)//赋初值0{代表对应字母出现的次数}
{
lib[i][S_num]=0;
}
}
S_num=0;
num++;
}
S_num=0;
num=0;
while(~scanf("%c",&arry[S_num]))//接受字符串
{
if(arry[S_num]=='\n')
{
break;
}
S_num++;
}
scanf("%c",&ch);//接收待查询字符
for(i=0;i<26;i++)//判断字符在字典中的出现位置
{
if(lib[i][0]==ch)//大写
{
break;
}
else if(lib[i][0]==ch-32)//小写(将小写转化为大写去判断)
{
break;
}
}
num=i;
if(num==26)//当i=26时说明带查询字符不在预设的字母字典中
{
lib[num][0]=ch;//将字典[26][0]直接变为待查询字符
}
for(i=0;i<S_num;i++)
{
if(num==26)
{
if(arry[i]==lib[num][0])
{
lib[num][1]++;
}
}
else//不区分大小写
{
if(arry[i]==lib[num][0])//将字典中大写与字符串中的字符比较
{
lib[num][1]++;//检测出计数位+1
}
else if(arry[i]==lib[num][0]+32)//将字典中大写转化为小写与字符串中的字符比较
{
lib[num][1]++;//检测出计数位+1
}
}
}
printf("%d",lib[num][1]);
return 0;
}

查看14道真题和解析