Code1010 2017-08-31 13:05 采纳率: 100%
浏览 9251
已采纳

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

 #include <stdio.h>
#include <string.h>
void output(char *str)
{
  char* tail = strchr(str,' ');

  if (tail == NULL)
    printf("%s",str);
  else
    {

      output(tail + 1);


      *tail = '\0';
      printf(" %s",str);
    }
}
int main()
{
  char str[81];
  gets(str);
  output(str);
  putchar('\n');
  return 0;
}

*tail = '\0';
printf(" %s",str);这两句理解不出来 希望得到解答 谢谢

  • 写回答

7条回答

  • Kinship_Jade 2017-08-31 14:25
    关注

    这是一个递归,检测到空格是就会向后移动,也就是这一句话去掉第一个单词再继续执行,还是这个方法,去掉现在的第一个单词,也就是把原来的第二个单词给去掉了!而且它的输出方式是在检测完最后一个单词之后,才会输出倒数第二个单词,然后再向后退一级打印出倒数第三个单词,以此类推知道打印出原句子的第一个单词,这样,也就把一句话倒过来打印了。另外,,不理解楼主为什么发两遍帖子。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配