作业帮 > 综合 > 作业

C语言 输入一个句子,颠倒单词并输出.不能使用中间变量,就是不能单独创建一个数组存放颠倒后的句子.

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/07/07 15:56:48
C语言 输入一个句子,颠倒单词并输出.不能使用中间变量,就是不能单独创建一个数组存放颠倒后的句子.
输入:how are you 输出:you are how
C语言 输入一个句子,颠倒单词并输出.不能使用中间变量,就是不能单独创建一个数组存放颠倒后的句子.
#include
int main()
{
char str[128];
char *p;
gets(str);
p=str;
while( *p++ ) ;
while ( p != str )
{
if ( *p == ' ' )
{
*p=0 ;
printf("%s " ,p );
}
p-- ;
}
printf("%s\n",p ) ;
return 0;
}
再问: 不用C++呢?不懂C++,刚开始学,用C#怎么写?谢谢
再答: 不会C#啊,等别人吧
再问: 不好意思看错了,不是C++。刚刚看别人用C++写的
再答: 呵呵,C++也是我写的,我后来又改成C的了
再问: 这个程序不对啊,运行结果不对。
再答: 哦,不好意思,修改时丢了一点, 这句改一下: printf("%s " , p ); 改成: printf("%s " , p+1 );
再问: while( *p++ ) ;意思是将指针p指向字符数组的 \0 位置吗? *p=0 ;是什么意思?
再答: int main() { char str[128]; char *p; gets(str); p=str; while( *p++ ) ; //先将指针移动字符串尾,也就是你说的指向字符数组的 \0 位置 while ( p != str ) //倒着向前访问数组,直到数组头 { if ( *p == ' ' ) //遇到空格时 { *p=0 ; //置空格位置为新的串尾,这样下次printf输出的时候就不会输出空格后面的数据了。 printf("%s " , p+1 ); //p+1一定不是空格,是要输出的子串 } p-- ; //向前移动一个指针 } printf("%s\n",p ) ; //输出最后一个子串 return 0; }
再问: 明白了,刚开始学习C语言,有很多不懂的。非常感谢指导。
再答: 明白就好