输入一串单词,分别统计他的每个字母的使用次数。 eg 输入aaabbbccc,输出count of a is 3 ,count of b is 3… 解题思路:如果输入的是大写字母,可以先转小写,字符a出现的次数存在arr【0】,字符b出现的次数存放在arr【1】。。依次这样,那么我们怎么让a的次数存放在arr【0】,怎么做到依次存放并且计数操作呢,我们可以建立一个变量flag,每次a输入依次让arr[flag-‘a’]++,这样,不仅做到了arr【0】存放a变量还达到了计数的功能。 有的同学可能不太懂arr[flag-‘a’]++的含义,我自己看到这里也有点迷了,因为之前自己没有这样使用过数组。那么通过下面的一个小测试,我想大家就都明白了 运行结果 源码如下: int main() { char arr[30] = { 0 };//申请数组时要制定大小,否则会导致溢出 char flag = 0; while ((flag = getchar()) != ‘\n’) { if (flag >= ‘A’&&flag <= ‘Z’)//如果flag为大写字母转换为小写字母 { flag += 32; } if (flag >= ‘a’&&flag <= ‘z’)//将每个元素存放到对应的数组下标,并统计个数 { arr[flag - ‘a’]++; }
}
int i = 0;
for ( i = 0; i < 26; i++)//yi次访问数组元素
{
printf("count of %c is %d \n", 'a'+i, arr[i]);
}
return 0;
} 程序执行结果:
|