|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 yuhang2020 于 2021-3-16 11:40 编辑
代码是求输入的字符串中 重复字符及出现的次数
疑问1: for( i=0;s[ i ];i++ ) 这个循环什么意思呀,s[ i ]可以是条件吗?这是个ASCII值?为什么写 i>=97就报错
疑问2: carr[index]++ ; 这个没看懂是什么意思,感觉也是ASCII
#include<stdio.h>
int main()
{
char s[1024];
int carr[128]={0};
int i;
printf("input a string: ");
gets(s);
for( i=0;s[ i ];i++ )
{
int index=s[ i ];
if ( index >=0 && index <= 127 )
carr[index]++ ;
}
for( i=0;i<128;i++ )
if ( carr[ i ] > 1 )
printf("%c:%d\n", i, carr[ i ] );
return 0;
}
- #include<stdio.h>
- int main()
- {
- char s[1024]={'\0'}; //这里是储存原始字符串的(待统计字符串)
- int carr[128]={0}; //可见ascii码都是小于128的,这里全部初始为0,本题中就是每个ascii码值对应的频次为0
- int i;
- printf("input a string: ");
- gets(s);
- for( i=0;s[i]!='\0';i++ ) //s[i]就相当于 s[i]!='\0' 这是大神们的一种炫酷写法
- {
- int index=s[ i ];
- if ( index >=0 && index <= 127 )
- carr[index]++ ; //程序所有焦点或者核心 就这一句代码 ,这个自己细细体会
- //简单举例,比如你输入E (E的ascii码值为69) 那么carr[69]+=1 什么意思,自己琢磨一下
- }
- for( i=0;i<128;i++ )
- if ( carr[ i ] > 1 )
- printf("%c:%d\n", i, carr[ i ] );
- return 0;
- }
复制代码
|
-
代码
-
结果
|