c深入思考问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 15:19:28
定义一个函数invertion(char *ch1, char *ch2)实现单词倒排字符串,第一个形参ch1接收实参传过来的原字符串指针,倒排后的新字符串通过第二个形参返回主函数。
我的意思是用单词为单位倒序输出...不是以字母为单位,比如说: we are good men变成men good are we,空格也要保留。
美女,请写出程序,谢谢

举手之劳,帮你弄了算了。
一个主程序实现了,要用函数你随便改改就一切ok了。程序在win-tc和Dev-c++下已调试通过。
#include <stdio.h>
#include <conio.h>
#define N 50
int main(void)
{int i=0,j=0,k=0,b[N]={0},word;
char s[200],a[N][26],*p;
printf("Please input a string:(no more than 200 characters)\n");
gets(s);
p=s;
while(*p!='\0')
{while(*p==' ')
{b[k]++;p++;}
k++;
while(*p!=' '&&*p!='\0')
{a[i][j++]=*p;p++;}
a[i][j]='\0';
i++;
j=0;
}
word=i;
for(i=word-1;i>=0;i--)
{ printf("%s",a[i]);
k--;
for(j=0;j<b[k];j++)
putchar(' ');
}
getch();
return 0;
}

用栈来实现,先进后出
push:
1----------
we
2----------
are
we
3----------
good
are
we
4----------
men
good
are
we
-----------
pop: