- /*
- 题目要求:
- 控制台输入一个字符串
- 对字符串进行过滤,只保留其中的英文字母,生成新字符串
- 统计新字符串中每个英文字母的出现次数
- */
- #import <Foundation/Foundation.h>
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- char ch[100];
- char newCh[100];
- printf("请输入一个字符串");
- gets(ch);
- int len = (int)strlen(ch);
- for (int i = 0,j=0; i <=len; i++) {
- if ((ch[i]>64&&ch[i]<91)||(ch[i]>96&&ch[i]<123)) {
- newCh[j] = ch[i];
- j++;
- }else if (ch[i] == '\0') {
- newCh[j] = ch[i];
- }
- }
- printf("%s\n",newCh);
- //-------------------统计重复字母次数方法1---------------------
- //使用选择排序法逐个比较字符串中的字母
- for (int i=0; i<strlen(newCh); i++) {
- int count=1;
- for (int j=i+1; j<=strlen(newCh); j++) {
- if (newCh[i]==newCh[j]) {
- newCh[j]+=58;//让重复的字母变为不是字母
- count++;
- }
-
- }
- //避免重复的字母重复统计
- if ((newCh[i]>64&&newCh[i]<91)||(newCh[i]>96&&newCh[i]<123)) {
- NSLog(@"%c的出现次数为%d",newCh[i],count);
- }
- }
- }
- return 0;
- }
- //-------------统计字重复字母数的方法2-----------------
- // 存储字母出现次数的数组
- int count[26];
- length = (int)strlen(newCh);
- // 遍历数组统计字母出现次数
- for (int i = 0; i < 26; i++) {
- // 先对数组元素进行初始化
- count[i] = 0;
- for (int j = 0; j < length; j++) {
- if (newCh[j] == 65 + i || newCh[j] == 97 + i) {
- count[i]++;
- }
- }
- }
-
- // 输出结果
- printf("The new string is: %s\n", newStr);
- for (int i = 0; i < 26; i++) {
- if (count[i] != 0) {
- printf("The count of \'%c\' and \'%c\' is: %d\n", 65 + i, 97 + i, count[i]);
- }
- }
-
- }
- return 0;
- }
复制代码 |
|