设有字符串s及长度为n的字符型一维数组a,编写一个函数,统计a中每个字符在字符串s中出现的次数,要求该函数以s,a,n为形参,一维整型数组为返回值。
注意:数组作为返回值
代码如下:
#include<stdio.h>
#include<string.h>
int* cnt(char s[],char a[],int n)
{
int *ans=new int[n];//建立和一维字符数组等长的答案数组
memset(ans,0,sizeof(int)*n);//数组元素置0,因ans为指针类型,故sizeof未使用sizeof(ans),这样会导致只有一个元素被赋值
int len=strlen(s);
for(int i=0;i<len;i++)
{
for(int j=0;j<n;j++)
{
if(s[i]==a[j])
{
ans[j]++;//有符合的对应计数数组++
break;//判断下一位
}
}
}
return ans;
}
int main()
{
char str[100];
char a[4]={'a','b','c'};
int* ans=NULL;
while(~scanf("%s",str))
{
ans=cnt(str,a,3);
for(int i=0;i<3;i++)
{
printf("%c:%d\n",a[i],ans[i]);
}
}
return 0;
}