#include"stdio.h"
#include"string.h"
main()
{char a[100],b[100];
int c[100]={0},i,j,m=0,n,k,l=1;
printf("请输入字符并以回车结束:\n");
gets(a);
n=strlen(a);
b[0]=a[0];
for(j=1,i=1;j
if(m==0)
{b[i]=a[j];
i++;}
else
m=0; //这里m需要归零,你给出的例子,asd刚开始都只出现一次,m始终为0,所以asd都能搜进b数组,但后面a重复出现,m变为非0,并且没有清零,导致遍历到f时m还是非零值,后面的d已经在数组b里出现,所以不影响d的最终统计
}
for(j=0;j for(m=0;m
for(j=0;j printf("%c,%d\n",b[j],c[j]);
}
我大概看懂了你的思路,你是先找到所有出现的字符,存到 b[],然后统计出现次数。
for(j=1,i=1;j
m = 0; //你应该在这里添加一个语句,当标志位用。
for(k=0;k
if(m==0)
{
b[i]=a[j];
i++;
}
}
如果当字符多的时候,这个方法就不太好了,有比这个好方法
兄弟,这种小程序,多加几个printf在中间,实时打印几个关键数值
最后对比下就能知道哪里错了
别人看你的程序,又没注释,硬生生的要去理解你的思路,很累的
for(j=1,i=1;j
m=0;//这里重置下m的值。
for(k=0;k
if(m==0)
{b[i]=a[j];
i++;}