请大家看看最后那个printf("\'%c\'=%d ",i,c[i]);什么意思?谢谢
从键盘输入一个字符串(不多于80个字符),统计其中各字符出现的次数,然后按字符从小到大的顺序输出其出现的次数,每个字符的输出项样式为:'该字符'=出现次数,各字符项间用空格分隔,每行输出10个字符项。例如:输入:abcd$234#ABC34%/*a[i]b[j]*/
输出:'#'=1 '$'=1 '%'=1 '*'=2 '/'=2 '2'=1 '3'=2 '4'=2 'A'=1 'B'=1
'C'=1 '['=2 ']'=2 'a'=2 'b'=2 'c'=1 'd'=1 'i'=1 'j'=1
main()
{ char s[81];
int i,j,c[128]={0};
gets(s);
for(i=0;s[i];i++)
c[s[i]]++;
for(j=i=0; i<128; i++)
if(c[i])
{ printf("\'%c\'=%d ",i,c[i]);
if(++j%10==0) printf("\n");
}
这个程序是怎么实现不重复输出字符的呢?
----------------解决方案--------------------------------------------------------
怎么觉得printf("\'%c\'=%d",i,c[i]);有错呢?
按照你的应该输出应该是 printf ("\'%c\'=%d",c[i],i);吧!
----------------解决方案--------------------------------------------------------
这个我换过。。。出不来答案的。这个是学校的历届考题。。是标答。我想是不是这样写能做到不重复输出字符啊。。。
----------------解决方案--------------------------------------------------------
i代表的是该字符的ASCII码,C[i]是用来储存ASCII码为I的字符个数的
下面的是关健代码:
for(i=0;s[i];i++)//s[i]是输入的字符,字符串结束时S[I]为'\0',ASCII码为0,结束循环
c[s[i]]++;//ASCII码为S[I]的个数加1
----------------解决方案--------------------------------------------------------
回复 4# 的帖子
谢谢啦^_^ ----------------解决方案--------------------------------------------------------