- /*
- main.m
- 输入字符串,统计A、B、C、D出现次数,由高到低输出字母和次数
- 分析:
- 由高到低输出字母和次数,指的是什么?
- 1)将字符串由高到低的输出(冒泡排序)
- 2)统计字符串里面,各个字符出现的次数-(选择)
- 1)统计字符串中出现哪些字符
- 两个相邻的字符,进行比较,不同则是字符串中出现的字符!
- 2)统计出现的字符,在字符串中出现几次
- 将出现的字符,每个都跟字符串比较,得出每个字符在字符串中出现的次数
- */
- #import <Foundation/Foundation.h>
- int checkArr(char ch ,char arr[],int len);
- void getShowNumber(char arr[],char ch[],int chLen, int arrLen);
- char *minArr(char ch[],int len);
- char *maxArr(char ch[],int len);
- int main(int argc, const char * argv[]) {
- char ch []="aadbcd";//定义个字符串
- int len = (int)strlen(ch);//获取字符串长度
- char arr [len];//存放出现过的字符
- int count = 0;//总共有多少个字符
- //第一个字符,肯定是没有出现过
- arr[0] = ch[0];
- /*
- 统计字符串里面出现过的字符
- 1)两个相邻字符比较
- 2)已经比较好了,存在的字符,进行比较!
- */
- for (int i=0; i<len; i++) {
- if(ch[i]!=ch[i+1] && checkArr(ch[i+1],arr,len)){
- count++;//个数
- arr[i]=ch[i+1];
-
- printf("arr[%d]=%c \n",i,arr[i]);
- }
- }
-
-
- //统计字符在字符串中存在的次数
- //int arrLen = (int)strlen(arr);
- getShowNumber(arr, ch, len, count);
-
- //打印排好序的字符串(从小到大)
- minArr(ch,len);
- printf("%s\n",ch);
-
- //打印排序好的字符串(从大到小)
- maxArr(ch,len);
- printf("%s\n",ch);
-
- return 0;
- }
- /*
- 冒泡排序
- 分析:
- 两个相邻的元素进行比较,比较后,直接互换位置,最值放最后!
- 注意:
- for (int j=0; j<len-i...)//忽略最后面,排好序的元素
- ch -- 要排序的字符串
- len -- 字符串长度
- */
- char *maxArr(char ch[],int len){
- char temp;//临时存放的变量
- for (int i = 0; i<len; i++) {
- for (int j=0; j<len-i; j++) {//求最值
- if(ch[j]<ch[j+1]){
- temp = ch[j];
- ch[j] = ch[j+1];
- ch[j+1] = temp;
- }
- }
- }
- return ch;
- }
- /*
- 选择排序
- 分析:
- 假设个元素为最小值,把这个元素,拿来和其他的字符比较
- 得到最值的下标,然后进行互换位置,最值放最前
- ch -- 需要排序的字符串
- len -- 字符串长度
- 注意:
- //去除已经排序好的元素
- //假设一个元素为最值!
- int minIndex = i;
- for(int j= i ...)
- */
- char *minArr(char ch[],int len){
- char temp;//临时存放的变量
- for (int i = 0; i<len; i++) {
- int minIndex = i;//这是i,去除已经排序好得!
- for (int j = i; j<len; j++) {//求最值
- if(ch[minIndex]>ch[j]){
- minIndex = j;
- }
- }
-
- temp = ch[minIndex];
- ch[minIndex] = ch[i];
- ch[i] = temp;
- }
- return ch;
- }
- /*
- 比较字符是否相同
- ch - 要比较的字符
- arr - 跟字符串比较(已经存在的字符)
- len - 字符串长度
- */
- int checkArr(char ch ,char arr[],int len){
- int temp = 1;
- for (int i = 0; i<len; i++) {
- if(ch == arr[i]){//相同为0
- temp = 0;
- break;
- }
- }
- return temp;
- }
- /*
- 打印字符串arr里面每个字符,在字符串ch里面出现的次数
- arr - 出现的字符串
- ch - 原始的字符串
- chLen - 原始字符串长度
- arrLen - 出现字符串长度
- */
- void getShowNumber(char arr[],char ch[],int chLen, int arrLen){
-
- for (int i = 0; i<arrLen; i++) {
- int count = 0 ;
- for (int j = 0 ; j<chLen; j++) {
- if (arr[i] == ch[j]) {
- count++;
- }
- }
- printf("%c在字符串中出现%d次\n",arr[i],count);
- }
- }
复制代码
|
|