C语言编程题,求编写一个函数,实现字符串逆置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程题,求编写一个函数,实现字符串逆置?相关的知识,希望对你有一定的参考价值。

编写函数reverse,实现将一个字符串逆置。注意:请填写下面函数的 部分。
#include<string.h>
void reverse(char *x)



main()

char p[]="hello";
reverse(p);
puts(p);

#include <stdio.h>

#include <string.h>

void reverse(char *x)

char c;

int a=0,b=strlen(x)-1;

for(;a<b;a++,b--)

c=x[a];

x[a]=x[b];

x[b]=c;

int main()

char s1[]="",s2[]="a";

char s3[]="sd",s4[]="dfg";

reverse(s1);

reverse(s2);

reverse(s3);

reverse(s4);

printf("%s\\n%s\\n",s1,s2);

printf("%s\\n%s\\n",s3,s4);

return 0;

代码

输出

追问

我这道题是填空题,填写函数部分。

追答

整个代码都给你了,复制你需要的部分不就行了吗?复制5-12行就行了。

此外,你的main函数是有问题的,p指向了一个位于只读存储区的字符串,是不能通过p修改这个字符串的。

应将p定义成数组而不是指针。

追问

题目出错了,题目改一下
#include
void reverse(char *x)



main()

char p[]="hello";
reverse(p);
puts(p);

追答

改后就对了。改后还可以用我提供的代码。

参考技术A

这个算法 你试试

追问

有错,算不出来。

追答

我觉得是题出的有问题,我反复试了下。
下面的代码可以。
#include "malloc.h"
#include "string.h"

void reverse(char **x)

char *tmp;
char *tTmp;
char *s;
s = *x;
int len = strlen(*x);
tTmp = tmp = (char *)malloc((len + 1) * sizeof(char));
while (*s != 0)

s++;

s--;
while (s >= *x)

*tTmp = *s;
s--;
tTmp++;

*tTmp = 0;
*x = tmp;


int _tmain(int argc, _TCHAR* argv[])

char *x = "Hello";
reverse(&x);
printf("%s", x);
return 0;

追问

题目出错了,题目改一下
#include
void reverse(char *x)



main()

char p[]="hello";
reverse(p);
puts(p);

追答

这样就简单了。

void reverse(char *x)

char tmp;
char *s;
s = x;
while (s != 0)

s++;

s--;
while (s >= x)

tTmp = *s;
*s = *x;
*x = tTmp;

s++;
x--;

以上是关于C语言编程题,求编写一个函数,实现字符串逆置?的主要内容,如果未能解决你的问题,请参考以下文章

C语言逆置字符串

C语言逆置正整数求教

求高手,c语言题目,随机输入一个数,范围100到1000.判断它是不是是6和19的倍数。最好for语

如何用c语言实现单链表的逆置?

ZZNUOJ_用C语言编写程序实现1141:进制转换(附完整源码)

c语言编程题 利用指针编写函数用选择法对整数数组排序(降序)。 求大神帮忙啊!!!谢谢