Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1286296
  • 博文数量: 168
  • 博客积分: 2124
  • 博客等级: 大尉
  • 技术积分: 2590
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-16 23:51
文章分类

全部博文(168)

文章存档

2014年(6)

2013年(74)

2012年(71)

2011年(17)

分类: C/C++

2013-08-08 01:03:22

夜里12点起来写程序,周六机试了,大家都在积极准备,加油啦。

点击(此处)折叠或打开

  1. /*****************************************************************
  2. 2. 将一个字符串的元音字母复制到另一个字符串,并排序(30分)
  3. 问题描述:
  4. 有一字符串,里面可能包含英文字母(大写、小写)、数字、特殊字符,
  5. 现在需要实现一函数,将此字符串中的元音字母挑选出来,存入另一个字符串中,
  6. 并对字符串中的字母进行从小到大的排序(小写的元音字母在前,大写的元音字母在后,依次有序)。
  7.  
  8. 说明:
  9. 1、 元音字母是a,e,i,o,u,A,E,I,O,U。

  10. 2、 筛选出来的元音字母,不需要剔重;
  11.  
  12. 最终输出的字符串,小写元音字母排在前面,大写元音字母排在后面,依次有序。
  13.  
  14. 要求实现函数:
  15. void sortVowel (char* input, char* output);
  16. 【输入】 char* input,表示输入的字符串
  17. 【输出】 char* output,排好序之后的元音字符串。
  18. 【返回】 无
  19.  
  20. 示例
  21. 输入:char *input = “Abort!May Be Some Errors In Out System. “
  22. 输出:char *output =“aeeeooAEIO “
  23. ********************************************************************/

  24. #include<stdio.h>
  25. #include<string.h>
  26. /*********************************************
  27. 编程思路:
  28. .将aeiouAEIOU做一个集合(数组形式,就像之前做闰年那样)
  29. .如果input其中的值是集合中的,则将input的值放入output数组;
  30. .对数组进行排序;

  31. *********************************************/
  32. void sort(char *output, int len1)
  33. {
  34.     int i, j ,k, min;
  35.         for(= 0; i < len1 -1; i++)
  36.     {
  37.         min =i;
  38.         for(= i; j < len1; j++)
  39.             if(output[j] < output[min])
  40.                 min = j;
  41.         
  42.         if(min != i)
  43.         {
  44.             k = output[min];
  45.             output[min] = output[i];
  46.             output[i] = k;
  47.         }
  48.     }
  49. }

  50. void sortVowel (char* input, char* output)
  51. {
  52.     int len, i, j, len1, len2, k, l;
  53.     char *tmp1, *tmp2;
  54.     char p_a[6] = {'a','e','i','o','u'};
  55.     char p_A[6] = {'A','E','I','O','U'};
  56.     

  57.     k = l = 0;
  58.     len = strlen(input);
  59.     
  60.     tmp1 = (char *)malloc(sizeof(char)*len);
  61.     tmp2 = (char *)malloc(sizeof(char)*len);
  62.     //tmp1用来储存小写,tmp2用来储存大写
  63.     memset(tmp1, '0', sizeof(char)*len);
  64.     memset(tmp2, '0', sizeof(char)*len);

  65.     for(= 0; i < len; i++)
  66.     {
  67.         for(= 0; j < 10; j++)
  68.         {
  69.             if(p_a[j] == input[i])
  70.             {
  71.                 tmp1[k++]= input[i];
  72.                 break;
  73.             }
  74.             if(p_A[j] == input[i])
  75.             {
  76.                 tmp2[l++]= input[i];
  77.                 break;
  78.             }
  79.         }
  80.     }
  81.     
  82.     tmp1[k] = '\0';
  83.     tmp2[l] = '\0';
  84.         
  85.     len1 = strlen(tmp1);
  86.     len2 = strlen(tmp2);

  87.     sort(tmp1, len1);
  88.     sort(tmp2, len2);

  89.     
  90.     strcpy(output, tmp1);
  91.     strcpy(&output[len1], tmp2);
  92.     
  93.     free(tmp1);
  94.     free(tmp2);
  95. }

  96. int main(int argc, char **argv)
  97. {
  98.     int i;
  99.     char *input = "Abort!May Be Some Errors In Out System.";
  100.     char output[15] = {0};
  101.     
  102.     sortVowel (input, output);
  103.     
  104.     printf("ouput = %s", output);
  105.     
  106.     while(1);
  107. }




阅读(1925) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~