主题:[讨论]字符串倒置
telancs
[专家分:680] 发布于 2007-08-18 18:31:00
[color=000080][size=3][b]请高手帮忙,求一个字符串倒置思路,例如:输入“abc def”,那么输出:“cba fed”。如何实现啊?有代码最好。[/b][/size][/color][em10]
回复列表 (共5个回复)
沙发
heyzj [专家分:150] 发布于 2007-08-19 00:01:00
[code]
for (j=0; j<m; j++){
while(1){
scanf ("%s",a);
len=strlen (a);
str_rev (a,len);
printf ("%s", a);
ch=getchar ( );
if (ch == '\n'){
printf ("\n");
break;
}//读入;
void str_rev(char a[],int n)
{
int i,j;
char tmp;
for(i=0,j=n-1;i<j;i++,j--)
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}//倒置的一个函数;
[/code]
上面两个就是核心的代码了,其他你自己补上
板凳
telancs [专家分:680] 发布于 2007-08-19 08:34:00
好像不对呦!你想得太简单了。
3 楼
heyzj [专家分:150] 发布于 2007-08-19 23:32:00
哪里不对? 不是就一个单词倒置么
4 楼
polaris606 [专家分:460] 发布于 2007-08-26 18:59:00
定义倒置函数。。。搜索字符串记录位置,碰到空格就记录右边位置然后倒置。。
5 楼
polaris606 [专家分:460] 发布于 2007-08-27 00:58:00
[code]
#include <iostream>
using namespace std;
const int N = 100;
char str[N];
void change(int start, int end) {
int i, j;
for(i = start, j = 0; j < ((end - start) >> 1); ++i, ++j) {
swap(str[i], str[end - j - 1]);
}
}
int main() {
int i, j, start, end;
gets(str);
for(i = 0; i < strlen(str); ++i) {
for(j = i; str[j] != ' ' && j < strlen(str); ++j);
start = i; end = j;
change(start, end);
i = end;
}
for(i = 0; i < strlen(str); ++i)
printf("%c", str[i]);
printf("\n");
return 0;
}
[/code]
我来回复