首页 > 代码库 > 将一个字符串的元音字母复制到另一个字符串,并排序
将一个字符串的元音字母复制到另一个字符串,并排序
问题描述:
有一字符串,里面可能包含英文字母(大写、小写)、数字、特殊字符,现在需要实现一函数,将此字符串中的元音字母挑选出来,存入另一个字符串中,并对字符串中的字母进行从小到大的排序(小写的元音字母在前,大写的元音字母在后,依次有序)。
说明:
1、元音字母是a,e,i,o,u,A,E,I,O,U
2、筛选出来的元音字母,不需要剔重
最终输出的字符串,小写元音字母排在前面,大写元音字母排在后面,依次有序。
要求实现函数:
void sort_vowel (char* input, char* output);
输入:char* input,表示输入的字符串
几组测试用例如下所示:
有一字符串,里面可能包含英文字母(大写、小写)、数字、特殊字符,现在需要实现一函数,将此字符串中的元音字母挑选出来,存入另一个字符串中,并对字符串中的字母进行从小到大的排序(小写的元音字母在前,大写的元音字母在后,依次有序)。
说明:
1、元音字母是a,e,i,o,u,A,E,I,O,U
2、筛选出来的元音字母,不需要剔重
最终输出的字符串,小写元音字母排在前面,大写元音字母排在后面,依次有序。
要求实现函数:
void sort_vowel (char* input, char* output);
输入:char* input,表示输入的字符串
输出:char* output,排好序之后的元音字符串
C代码如下:
#include<stdio.h> #include<stdlib.h> #include<ctype.h> #include<string.h> int cmp(const void* a, const void* b); int is_vowel(char a); void sort_vowel(char* input, char* output); int main() { char input[1000] = {'\0'}; char output[200] = {'\0'}; printf("please input the original str: "); gets(input); printf("the sorted vowel is: "); sort_vowel(input,output); return 0; } int cmp(const void* a, const void* b) { return *(char*)a - *(char*)b; } int is_vowel(char a) { if(a=='a' || a=='e' || a=='i' || a=='o' || a=='u' || a=='A' || a=='E' || a=='I' || a=='O' || a=='U') return 1; else return 0; } void sort_vowel(char* input, char* output) { char low[100] = {'\0'}; char up[100] ={'\0'}; int low_index=0; int up_index=0; while(*input != '\0') { if(is_vowel(*input)) { if(isupper(*input)) { up[up_index++] = *input; input++; continue; } else { low[low_index++] = *input; input++; continue; } } input++; } qsort(up,strlen(up),sizeof(char),cmp); qsort(low,strlen(low),sizeof(char),cmp); strcat(low,up); strcpy(output,low); while(*output != '\0') printf("%c",*output++); printf("\n"); }
几组测试用例如下所示:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。