[C] 字符串翻转、单词翻转算法 →→→→→进入此内容的聊天室

来自 , 2020-08-18, 写在 C, 查看 132 次.
URL http://www.code666.cn/view/ea204361
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define MAX_STRING 200
  4.  
  5. /*字符串翻转,单词翻转算法*/
  6. void reverse_string(char str[MAX_STRING], int start, int end) {
  7.         char tmp = 0;
  8.  
  9.         /* 将整个字符串翻转 */
  10.         while(start < end) {
  11.                 /* 交换两个元素值 */
  12.                 tmp = str[start];
  13.                 str[start] = str[end];
  14.                 str[end] = tmp;
  15.  
  16.                 /* 改变索引值 */
  17.                 ++start;
  18.                 --end;
  19.         }      
  20. }
  21.  
  22. int main(void) {
  23.         int i = 0;
  24.         int j = 0;
  25.  
  26.         char str[MAX_STRING] = {0};
  27.         int length = 0;
  28.         char tmp = 0;
  29.  
  30.         int start = 0;
  31.         int end = 0;
  32.         i = 0;
  33.  
  34.         printf("Input riginal string:\n");
  35.         gets(str);
  36.         length = strlen(str);
  37.  
  38.         /* 将整个字符串翻转 */
  39.         reverse_string(str, 0, length - 1);
  40.  
  41.         printf("Step 1:\n");
  42.         puts(str);
  43.  
  44.         i = 0;
  45.         start = 0;
  46.  
  47.         /* 依次翻转其中的每一个单词 */
  48.         while(i < length) {
  49.                 /* 翻转其中的一个单词 */
  50.                 if (str[i] != ' ') {                                                    /* 找到单词开头 */
  51.                         start = i;
  52.  
  53.                         while(str[i] != ' ' && str[i] != '\0')          /* 找到单词结尾 */
  54.                                 ++i;
  55.  
  56.                         reverse_string(str, start, i - 1);
  57.                 }
  58.                 ++i;
  59.         }
  60.  
  61.         printf("Step 2:\n");
  62.         puts(str);
  63.  
  64.         return 0;
  65. }

回复 "字符串翻转、单词翻转算法"

这儿你可以回复上面这条便签

captcha