• 一个面试题:翻转句子中单词的顺序


    题目要求:
    输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。(注意处理在输入字符串时的回车字符)
    输入:需反转的字符串
    输出:按照要求反转后的字符串
    示例:例如输入“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;
    }


  • 相关阅读:
    echarts实现地图
    微信开发之自定义菜单 + php
    微信开发之消息模板推送 + php
    微信开发之JS-SDK + php 实现分享朋友/朋友圈,QQ/QQ空间
    微信开发之网页授权 PHP
    微信开发之生成二维码,扫码关注公众号PHP
    微信开发之JS-SDK + PHP实现录音、上传、语音识别
    微信公众号开发启用服务器配置提交token验证失败 php
    带上数据表,分析一下拼团活动该如何设计
    ajax实现异步加载ECharts图表数据
  • 原文地址:https://www.cnblogs.com/vonyao/p/3614331.html
Copyright © 2020-2023  润新知