将一字符串的元音字母复制到另一个字符串中,并排序

来源:互联网 发布:淘宝佣金软件购买 编辑:程序博客网 时间:2024/04/25 05:53

题目:有一字符串,里面可能包含英文字母(大写、小写)、数字、特殊字符,现在需要实现一函数,将此字符串中的元音字母挑选出来,存入另一个字符串中,并对字符串中的字母进行从小到大的排序(小写的元音字母在前,大写的元音字母在后,依次有序)。

  例如:输入 Hello,I AM YOUR good friends.

        输出:eeioooAIOU

  谨此纪念C语言学习历程。

代码如下(可以改进的,选择排序法):

#include<stdio.h>
#include<string.h>
#include<malloc.h>
void sort(char* input, char* output)
{
int i,j,num1=0,num2=0;
char c,tmp1,tmp2;
char *output1,*output2;
output1=(char *)malloc (strlen(input)*(sizeof(char)));
output2=(char *)malloc (strlen(input)*(sizeof(char)));
for (i=0; (c=input[i])!='\0'; i++)
{
if (c=='a' || c=='e' || c=='i' || c=='o' || c=='u')
{
output1[num1++]=input[i];
}
else if ( c=='A' || c=='E' || c=='I'  || c=='O' || c=='U')
{
output2[num2++]=input[i];
}
}
for (i=0; i<num1-1; i++)
{
for (j=i+1; j<num1; j++)
{
if (output1[i]>output1[j])
{
tmp1=output1[i];
output1[i]=output1[j];
output1[j]=tmp1;
}
}
}
for (i=0; i<num2-1; i++)
{
for (j=i+1; j<num2; j++)
{
if (output2[i]>output2[j])
{
tmp2=output2[i];
output2[i]=output2[j];
output2[j]=tmp2;
}
}
}
for (i=0; i<num1; i++)
{
output[i]=output1[i];
}
for (i=0; i<num2; i++)
{
output[num1+i]=output2[i];
}
output[num1+num2]='\0';
free(output1);
free(output2);
}
int main (void)
{
char str[]="Hello,I AM YOUR good friends.";
char *result;
result=(char *)malloc(strlen(str)*(sizeof(char)));
sortVowel (str,result);
puts(result);
free(result);
return 0;
}

0 0
原创粉丝点击