练习17

 
  1. /**********************************************************************************
  2.   17. 编写一个程序,当输入不超过60个字符组成的英文文字时,计算机将这个句子
  3.  中的字母按英文字典字母顺序重新排列,排列后的单词的长度要与原始句子中的长度
  4.  相同。例如:
  5.     输入:
  6.     THE PRICE OFBREAD IS ¥1 25 PER POUND
  7.     输出:
  8.     ABC DDEEE EFHIINO OP ¥1 25 PPR RRSTU
  9.  并且要求只对A到Z的字母重新排列,其它字符保持原来的状态。
  10.   *********************************************************************************/
  11. #include <stdio.h>
  12. void SortLetters(char sort[], int n)
  13. {
  14.     int i,j;
  15.     //插入排序
  16.     for(i=1; i<n; i++)
  17.     {
  18.         char temp;
  19.         temp = sort[i];
  20.         for(j=i-1; j>=0; j--)
  21.         {
  22.             if(sort[j] > temp)
  23.             {
  24.                 sort[j+1] = sort[j];
  25.             }
  26.             else break;
  27.         }
  28.         sort[j+1] = temp;
  29.     }
  30. }
  31. void main()
  32. {
  33.     int i,k;
  34.     char letters[61];
  35.     char sort[60];
  36.     printf("请输入不少于60个字符:/n");
  37.     gets(letters);
  38.     for(i=0,k=0; letters[i] != '/0'; i++)
  39.     {
  40.         if(letters[i]>='A' && letters[i]<='Z')
  41.         {
  42.             sort[k++] = letters[i];
  43.         }
  44.     }
  45.     SortLetters(sort,k);
  46.     for(; i>=0; i--)
  47.     {
  48.         if(letters[i]>='A' && letters[i]<='Z')
  49.         {
  50.             letters[i] = sort[--k];
  51.         }
  52.     }
  53.     printf("%s/n",letters);
  54. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值