| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2792 人关注过本帖
标题:只输入小写字母统计“a”到“z”各自出现的次数
取消只看楼主 加入收藏
淡水鱼·到海
Rank: 2
等 级:论坛游民
帖 子:30
专家分:26
注 册:2013-9-12
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:7 
只输入小写字母统计“a”到“z”各自出现的次数
只输入小写字母统计“a”到“z”各自出现的次数。例如:输入“abcdbb”程序输出是:1 3 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

我打的程序有问题,但我认为思路是对的,希望大家帮忙指点指点 ^_^  谢谢
void fun(char *tt,int pp[]);                  
main()
{
    char aa[1000];
    int bb[26],k;
    printf("\n输入");
    scanf("%s",aa);
    fun(aa,bb);
    for(k=0;k<26;k++)
    printf("%d  ",bb[k]);
    printf("\n");
    getch();
}
void fun(char *tt,int pp[])
{ int i,j;
  char a='a';
  for(i=0;i<26;i++)
      pp[i]=0;
  for(j=0;j<26;j++)
  {   
    for(tt;*tt!='\0';tt++)
    {if(a==*tt)
        pp[j]++;
    }
     a=a+1;
  }
}
 
搜索更多相关主题的帖子: 统计 字母 
2014-08-30 22:32
淡水鱼·到海
Rank: 2
等 级:论坛游民
帖 子:30
专家分:26
注 册:2013-9-12
收藏
得分:0 
回复 2 楼 TonyDeng
在筛选26个字母分别出现的次数,我是那么想的:a最初被赋值为"a",最里面那个循环第一次是筛选出*tt中有多少个"a",然后a=a+1使a变量被赋值为字母b,然后第二次最里面那个循环是筛选出*tt中有多少个"b",以此类推循环26次(第二个for循环)就分别筛选出了各个字母出现的次数。但是程序运行结果是只统计出了字母a出现的次数,不知道为什么?
2014-09-02 10:22
淡水鱼·到海
Rank: 2
等 级:论坛游民
帖 子:30
专家分:26
注 册:2013-9-12
收藏
得分:0 
回复 3 楼 ditg
对于我来说不完全是。在这到题中我想解决的问题是if语句和赋值,我感觉它们在程序中起的作用没到位
2014-09-02 10:33
淡水鱼·到海
Rank: 2
等 级:论坛游民
帖 子:30
专家分:26
注 册:2013-9-12
收藏
得分:0 
回复 5 楼 erty1001
这里的tt是个地址,tt++是指此地址的往后移一位
2014-09-02 10:42
淡水鱼·到海
Rank: 2
等 级:论坛游民
帖 子:30
专家分:26
注 册:2013-9-12
收藏
得分:0 
回复 9 楼 kentchen
我觉得前者更直观
2014-09-02 10:47
淡水鱼·到海
Rank: 2
等 级:论坛游民
帖 子:30
专家分:26
注 册:2013-9-12
收藏
得分:0 
回复 14 楼 embed_xuel
恩恩,行了,非常感谢!  ^_^
2014-09-02 11:17
淡水鱼·到海
Rank: 2
等 级:论坛游民
帖 子:30
专家分:26
注 册:2013-9-12
收藏
得分:0 
这个问题已经解决了,谢谢大家的热心帮助!其实这个题有更科学简单的做法,但是我是想看一下我的这个想法是否正确而已,结果问题却出在了另外的问题上。通过大家的帮助解决了,自己非常高兴,同时更感谢大家   ^_^
2014-09-02 11:29
淡水鱼·到海
Rank: 2
等 级:论坛游民
帖 子:30
专家分:26
注 册:2013-9-12
收藏
得分:0 
我改了一下,现正确了
void fun(char *tt,int pp[]);                  
main()
{
    char aa[1000];
    int bb[26],k;
    printf("\n输入");
    scanf("%s",aa);
    fun(aa,bb);
    for(k=0;k<26;k++)
    printf("%d  ",bb[k]);
    printf("\n");
    getch();
}
void fun(char *tt,int pp[])
{ int i,j,n=0;
  char a='a';
  for(i=0;i<26;i++)
      pp[i]=0;
  for(j=0;j<26;j++)
  { n=0;   
    for(;*tt!='\0';tt++)
    {if(a==*tt)
        pp[j]++;
        n++;
    }
     a=a+1;
     for(i=0;i<n;i++)
         tt--;
  }
}
更科学简单的是下面这个
void fun(char *tt,int pp[]);                  
main()
{
    char aa[1000];
    int bb[26],k;
    printf("\n输入");
    scanf("%s",aa);
    fun(aa,bb);
    for(k=0;k<26;k++)
    printf("%d  ",bb[k]);
    printf("\n");
    getch();
}
void fun(char *tt,int pp[])
{ int i;
  for(i=0;i<26;i++)
      pp[i]=0;
  for(;*tt!='\0';tt++)
    {if(*tt>='a'&&*tt<'z')
        pp[*tt-'a']++;
    }
}
2014-09-02 11:39
快速回复:只输入小写字母统计“a”到“z”各自出现的次数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013240 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved