实验7-3-10 删除重复字符(20 分) 本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。 输入格式: 输入是一个以回车结束的非空字符串(少于80个字符)。 输出格式: 输出去重排序后的结果字符串。 输入样例: ad2f3adjfeainzzzv 输出样例: 23adefijnvz #include<stdio.h> #include<string.h> #define N 85 //思路:首先用字符数组str1存储输入的字符串,然后删除str1中重复的字符保存到str2中, // 最后根据ASCII的顺序使用冒泡排序算法进行排序,注意:本题默认只有数字和小写字母 // 两种字符,且根据ASCII码表可知,数字的ASCII值小于小写字母的ASCII值。 // 本题重点是:删除多余的字符,要不断的更新和存储不重复的字符。 int main(void) { int i, j, flag, len1 = 0, cnt = 0; char ch, temp; char str1[N]; //存储输入的字符串 char str2[N]; //存储处理后的字符串 ch = getchar(); //输入字符串 for (i = 0; ch != '\n'; i++) { str1[i] = ch; len1++; ch = getchar(); } for (i = 0; i < len1; i++) //双重循环,删除str1[]中重复的字符 { flag = 0; //每次开始循环都更新flag for (j = 0; j < i; j++) { if (str1[i] == str1[j]) //在str1中查找重复的字符 { flag = 1; } } if (flag == 0) { str2[cnt] = str1[i]; //用str2保存从str1中找到的字符 cnt++; //记录不重复字符的个数 } } for (i = 0; i < cnt - 1; i++) //对str2[]排序: 冒泡排序 进行cnt-1次 { for (j = 0; j < cnt - i - 1; j++) { if (str2[j] > str2[j + 1]) { temp = str2[j]; str2[j] = str2[j + 1]; str2[j + 1] = temp; } } } for (i = 0; i < cnt; i++) { printf("%c", str2[i]); } printf("\n"); return 0; }
实验7-3-10 删除重复字符(20 分)
猜你喜欢
转载自blog.csdn.net/aa11224488/article/details/80294472
今日推荐
周排行