当前位置: 代码迷 >> C语言 >> 请教:计算一个字符数组中a出现的次数(问题以解决,谢谢大虾们)
  详细解决方案

请教:计算一个字符数组中a出现的次数(问题以解决,谢谢大虾们)

热度:95   发布时间:2007-12-15 16:47:43.0
请教:计算一个字符数组中a出现的次数(问题以解决,谢谢大虾们)
计算一个字符数组中a出现的次数
下面是代码,但是就是算不出来,请大虾指点一下哪里错了


#include "stdio.h"

void main()
{
  char chKidney[80],i=0,iCount=0;
  printf("please input one char:\n");
  for(i=0;i<80;i++)
    scanf("%c",&chKidney[i]);



   for(i=0;chKidney[i]<='\0';i++)
   {
       if(chKidney[i]='a')
          iCount++;
    }

   printf("\n char 'a' appers %d times",iCount);
   getch();
}

[[italic] 本帖最后由 ajax_liu 于 2007-12-15 18:15 编辑 [/italic]]
搜索更多相关的解决方案: 字符  

----------------解决方案--------------------------------------------------------
int str_n_char(char * str, char ch)
{
    int count = 0;
    while(*str != '\0')
        count += (*str++ == ch ? 1 : 0);
    return count;
}

----------------解决方案--------------------------------------------------------
呃。。看不太懂哦
指针还没学。。郁闷。
----------------解决方案--------------------------------------------------------
你把字符数组和字符串混淆了

scanf("%c",&chKidney[i]);这一句是读取字符,循环了80次,就是读取80个字符,然后保存在了字符数组中

这个仅仅是个字符数组,不是字符串,末尾没有'\0'

如果要读取字符串,可以用 gets(chKidney);

这样读取到数组里面的就是一个字符串了,会自动在末尾添加'\0'

这样才能通过和'\0'比较来判断是否字符串结束

还有这一句if(chKidney[i]='a')中间应该是两个等号
----------------解决方案--------------------------------------------------------
/*正确结果*/
#include "stdio.h"

void main()
{
  char chKidney[10],i=0,iCount=0;
  char *p;
  p=chKidney;
  printf("please input one char:\n");
  for(i=0;i<10;i++)
    chKidney[i]=getchar();



   for(;*p!='\0';p++)
   {
       if(*p=='a')
          iCount++;
    }

   printf("\n char 'a' appers %d times",iCount);
   getch();
}
----------------解决方案--------------------------------------------------------
连续输入.
----------------解决方案--------------------------------------------------------
如果想把字符数组当字符串处理````
请先把你的数组的最后一个位置放上\0```
然后将数组长度减1```再使用
----------------解决方案--------------------------------------------------------
/*这个不用指针.*/
/*连续输入10 个要多改数组*/
#include "stdio.h"

void main()
{
  char chKidney[10],i=0,iCount=0;
  printf("please input one char:\n");
  
    scanf("%s",chKidney);



   for(i=0;chKidney[i]!='\0';i++)
   {
       if(chKidney[i]=='a')
          iCount++;
    }

   printf("\n char 'a' appers %d times",iCount);
   getch();
}
----------------解决方案--------------------------------------------------------
谢谢大家的帮助
谢谢xianshizhe111  
你的代码我已经基本上看明白了,但是还有个问题想问一下
for(i=0;chKidney[i]!='\0';i++)   这行代码中
  chKidney[i]!='\0' 可不可以写成 chKidney[i]<'\0'  ?为什么?
----------------解决方案--------------------------------------------------------
它两个并不是比较大小关系只比较等与不等.
----------------解决方案--------------------------------------------------------
  相关解决方案