zoukankan      html  css  js  c++  java
  • 一个面试题:翻转句子中单词的顺序

    题目要求:
    输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。(注意处理在输入字符串时的回车字符)
    输入:需反转的字符串
    输出:按照要求反转后的字符串
    示例:例如输入“I am a student.”,则输出“student. a am I”

    自己写的代码如下:仅供参考,如有错误和不妥之处,请大家指正。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int main(int argc, const char *argv[])
    {
         char *str = NULL;
         int i = 0;
         int k = 0;
         char ch;

         str = (char *)malloc(128*sizeof(char));//给str分配堆空间
         if( str == NULL )
     {
    printf("malloc error ");
    return -1;
     } 
        memset(str, 0, 128);

    //     gets(str);//输入方案一
    #if 1//输入方案2
         while(((scanf("%c", &ch) == 1)) && (ch != 10))//当scanf与ch!=10调换位置后,会出问题,导致'/n'被写入str,调试中用到了下面被//注掉的代码,去掉尾部的'/n'
         {
              *str++ = ch;
              k++;
         }
         //str--;
         //*str = '';
         //str++;
         while(k > 0)//回到str的头部
         {
              str--;
              k--;
         }
    #endif
         while(*str != '')//将字符串中的空格都转换为回车
         {
              if(*str != 32)//与空格的ascii码32比较
              {
                   str++;
              }
              else//是空格则换成''
              {
                   *str = '';
                   i++;
                   str++;
              }
         }
         str--;
         i++;//当字符串中单词数为2时,只有一个空格,故要将空格数+1才与单词数相同
         while(i >= 0)
         {
              while(*str != '')//从后向前寻找单词,单词有i+1个,以''隔开
                   str--;
              str++;
              printf("%s ", str);//打印找到的单词
              str--;
              str--;
              i--;
         }
         printf(" ");
         free(str);
         return 0;
    }


  • 相关阅读:
    learning scala view collection
    scala
    learning scala dependency injection
    learning scala implicit class
    learning scala type alise
    learning scala PartialFunction
    learning scala Function Recursive Tail Call
    learning scala Function Composition andThen
    System.Threading.Interlocked.CompareChange使用
    System.Threading.Monitor的使用
  • 原文地址:https://www.cnblogs.com/vonyao/p/3614331.html
Copyright © 2011-2022 走看看