| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2661 人关注过本帖
标题:关于计算重复出现次数的问题
只看楼主 加入收藏
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:0 
以下是引用韩三明在2011-11-27 00:32:24的发言:

我也是初学者
第一个FOR,相当于是把相同的字母放到相同的盒子,每放入一个字母则在该盒子上+1.
第二个FOR,表示盒子里的内容以及盒子上的数字。既该字母出现过的次数。
有疑问的地方是
第一个FOR里,str是字符型,而temp是整数型。为什么可以代入?从下一行的a[temp]++可以看出,temp是整数,就说明str是整数。可str明明是字符。。。
第二个FOR里,printf("%c=%d",i,a)   i是数字,为什么输出的时候变成了字符?
请教知道的前辈能!

你说的对,因为字符在ascii码里是有编号的,如定义一个char a='b',则当他a以字符输出的时候就是输出b,用整型输出的就是输出它的ascii码98,所以在这个程序里,就是一开始,把个字符的ascii编码当作数组a的下标使用,就可以把不同的字符放到a数组的不同的元素中,该数组元素的值就是该字符出现的次数。

就这样在最后输出的时候,把下标的值又转化成字符输出,元素值就是出现次数;

=========================================
举例子说明,输入abcabc,则,abc的ascii码分别是97,98,99,
则第一次是temp=a(即97),a[97]就自增1,此时a[97]为1;
然后到b的时候,temp=b(即98),则a[98]自增1,此时a[98]为1;
继续c,temp=c(即99),则a[99]自增1,此时a[99]为1;
===                       
然后有是a,temp=a(即97),a[97]又自增1,此时a[97]为2;
又到b的时候,temp=b(即98),则a[98]又自增1,此时a[98]为2;
继续c,temp=c(即99),则a[99]也自增1,此时a[99]为2;

最后当a[i]!=0,即有记数的时候输出,
当i为97的时候,97对应的字符为a,a[97]为2,就输出a=2;
当i为98的时候,98对应的字符为b,a[97]为2,就输出b=2;
当i为99的时候,99对应的字符为c,a[97]为2,就输出c=2;
=====================================
就因为这样,所以用这种方式得到的答案,是按照字母从小到大的顺序排序输出的。

[ 本帖最后由 luchar 于 2011-11-27 01:39 编辑 ]
2011-11-27 01:21
韩三明
Rank: 1
等 级:新手上路
帖 子:11
专家分:5
注 册:2011-8-30
收藏
得分:0 
回复 11楼 luchar
原来是因为ascii码里也有编码,学习了
正好最近正在学的point,貌似也可以用POINT来解。
谢谢~~
2011-11-27 17:22
韩三明
Rank: 1
等 级:新手上路
帖 子:11
专家分:5
注 册:2011-8-30
收藏
得分:0 
回复 11楼 luchar
找到答案了!

"C语言规定:字符参与“算术运算”,是以字符的ASCII码来参与算术运算的。如:'a'+3。这个表达式的值就是97+3=100"
2011-11-27 22:26
快速回复:关于计算重复出现次数的问题
数据加载中...
 
   



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

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