给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
论文问答
1
#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);
这两句理解不出来 希望得到解答 谢谢
-
这是一个递归,检测到空格是就会向后移动,也就是这一句话去掉第一个单词再继续执行,还是这个方法,去掉现在的第一个单词,也就是把原来的第二个单词给去掉了!而且它的输出方式是在检测完最后一个单词之后,才会输出倒数第二个单词,然后再向后退一级打印出倒数第三个单词,以此类推知道打印出原句子的第一个单词,这样,也就把一句话倒过来打印了。
-
'\0'; 你找到空格以后 要输出空格前的字符串需要把空格变为结束符 才能准确输出 具体一步一步调试 看它的值是如何变化的
-
'\0'的意思是 ASCII 为 0 的字符。 它所的意义是“字符串结束符”。'%s' 格式是字符串,不超过20个字符
发表回复