| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2792 人关注过本帖
标题:只输入小写字母统计“a”到“z”各自出现的次数
只看楼主 加入收藏
淡水鱼·到海
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
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:15 
回复 12 楼 淡水鱼·到海
因为这句:
for(tt;*tt!='\0';tt++)

a先等于'a',执行上面的循环,执行到*tt为'\0'时结束循环。
然后a+1,a等于'b',此时执行上面的循环,tt没有变化,*tt还是'\0'啊,所以循环不执行,后面cdefg......都是如此

总有那身价贱的人给作业贴回复完整的代码
2014-09-02 10:42
淡水鱼·到海
Rank: 2
等 级:论坛游民
帖 子:30
专家分:26
注 册:2013-9-12
收藏
得分:0 
回复 5 楼 erty1001
这里的tt是个地址,tt++是指此地址的往后移一位
2014-09-02 10:42
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 9 楼 kentchen
作为一个2w/m的程序员,我还真不知道'a'的值是多少

总有那身价贱的人给作业贴回复完整的代码
2014-09-02 10:44
淡水鱼·到海
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
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
问题解决了
2014-09-02 11:31
淡水鱼·到海
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.016016 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved