实验8-1-6 函数实现字符串逆序(15 分)

实验8-1-6 函数实现字符串逆序(15 分)

本题要求实现一个字符串逆序的简单函数。

函数接口定义:

1
void f( char *p );

函数fp指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#define MAXS 20

void f( char *p );
void ReadString( char *s ); /* 由裁判实现,略去不表 */

int main()
{
char s[MAXS];

ReadString(s);
f(s);
printf("%s\n", s);

return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

1
Hello World!

输出样例:

1
!dlroW olleH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#define MAXS 20

void f( char *p );
void ReadString( char *s ); /* 由裁判实现,略去不表 */

int main()
{
char s[MAXS];

ReadString(s);
f(s);
printf("%s\n", s);

return 0;
}

void ReadString(char s[]){
gets(s);
}

void f(char *p)
{
// p指向字符串头部
char *s=p;
// q指向字符串尾部
char *q = s;
while(*q)
q++;
q--;
// 交换并移动指针,知道p和q交叉
while(q>s)
{
char t = *s;
*s++ = *q;
*q-- = t;
}

}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×